Linux默認(rèn)SUID可執(zhí)行文件詳解
在 Linux 權(quán)限體系中,SUID(Set User ID)是一種特殊權(quán)限位。當(dāng)一個(gè)程序被設(shè)置了 SUID 位后,任何用戶(hù)執(zhí)行該程序時(shí),程序都會(huì)以文件所有者的身份運(yùn)行,而非執(zhí)行者的身份。這一機(jī)制是許多系統(tǒng)功能正常運(yùn)作的基礎(chǔ),但同時(shí)也可能成為權(quán)限提升的突破口。
SUID 權(quán)限位基礎(chǔ)
權(quán)限表示
SUID 權(quán)限在權(quán)限位中用 s 表示,出現(xiàn)在所有者執(zhí)行權(quán)限位上:
| 表示方式 | 含義 |
|---|---|
-rwsr-xr-x | 設(shè)置了 SUID,且所有者具有執(zhí)行權(quán)限 |
-rwSr-xr-x | 設(shè)置了 SUID,但所有者沒(méi)有執(zhí)行權(quán)限(大寫(xiě) S) |
設(shè)置與查看
# 查看系統(tǒng)中所有 SUID 文件 find / -perm -u=s 2>/dev/null # 查看某個(gè)文件的權(quán)限 ls -l /usr/bin/passwd # 設(shè)置 SUID 權(quán)限 chmod u+s /path/to/file chmod 4755 /path/to/file
各默認(rèn) SUID 文件詳解
1./bin/mount— 文件系統(tǒng)掛載工具
所有者: root
核心功能: 將文件系統(tǒng)掛載到指定掛載點(diǎn)
mount 命令需要 root 權(quán)限才能操作內(nèi)核的掛載表(/proc/mounts、/etc/mtab)和塊設(shè)備。通過(guò) SUID 機(jī)制,普通用戶(hù)可以在滿(mǎn)足特定條件時(shí)執(zhí)行掛載操作。
安全機(jī)制:
- 普通用戶(hù)只能掛載
/etc/fstab中配置了user或users選項(xiàng)的設(shè)備 - 無(wú)法掛載沒(méi)有明確配置的文件系統(tǒng)
- 掛載點(diǎn)必須具有適當(dāng)?shù)臋?quán)限
滲透測(cè)試視角: 如果 /etc/fstab 配置不當(dāng)(如允許用戶(hù)掛載且掛載了可寫(xiě)文件系統(tǒng)),可能利用 mount 配合特定文件系統(tǒng)類(lèi)型(如 ext4 配合 debugfs)進(jìn)行提權(quán)。
2./bin/umount— 文件系統(tǒng)卸載工具
所有者: root
核心功能: 卸載已掛載的文件系統(tǒng)
與 mount 配對(duì)使用,同樣需要 root 權(quán)限來(lái)更新內(nèi)核掛載表。普通用戶(hù)只能卸載自己在 /etc/fstab 中掛載的文件系統(tǒng)。
安全機(jī)制:
- 只能卸載由同一用戶(hù)掛載的文件系統(tǒng)
- 無(wú)法卸載系統(tǒng)關(guān)鍵掛載點(diǎn)
3./bin/bbsuid— BusyBox SUID 包裝器
所有者: root
核心功能: BusyBox 多工具集的 SUID 包裝器
這是 BusyBox 環(huán)境中的特殊組件。BusyBox 將大量 Unix 工具集成到一個(gè)可執(zhí)行文件中,通過(guò)符號(hào)鏈接調(diào)用不同功能。bbsuid 作為 SUID 包裝器,使得 BusyBox 中的部分命令(如 su、mount 等)能夠以 root 身份執(zhí)行。
注意: 并非所有 Linux 發(fā)行版都默認(rèn)包含此文件,多見(jiàn)于嵌入式系統(tǒng)或精簡(jiǎn)環(huán)境。
4./usr/bin/passwd— 密碼修改工具
所有者: root
核心功能: 修改用戶(hù)密碼,更新 /etc/shadow
這是 SUID 機(jī)制最經(jīng)典的用例。/etc/shadow 文件只有 root 可讀可寫(xiě),但普通用戶(hù)必須能夠修改自己的密碼。
工作流程:
- 普通用戶(hù)執(zhí)行
passwd - 程序以 root 身份啟動(dòng)
- 驗(yàn)證用戶(hù)身份(要求輸入當(dāng)前密碼)
- 檢查密碼復(fù)雜度策略
- 更新
/etc/shadow中對(duì)應(yīng)條目 - 放棄特權(quán),以普通權(quán)限繼續(xù)運(yùn)行
安全機(jī)制:
- 嚴(yán)格的身份驗(yàn)證:必須知道當(dāng)前密碼才能修改
- 密碼復(fù)雜度檢查
- 只能修改自己的密碼(除非以 root 身份運(yùn)行)
滲透測(cè)試視角: 歷史上存在過(guò) passwd 的緩沖區(qū)溢出漏洞,但現(xiàn)代發(fā)行版中已非常罕見(jiàn)。
5./usr/bin/chsh— 修改默認(rèn) Shell
所有者: root
核心功能: 修改用戶(hù)的登錄 Shell(/etc/passwd 中的 shell 字段)
/etc/passwd 文件雖然全局可讀,但只有 root 可寫(xiě)。用戶(hù)需要修改自己的登錄 Shell 時(shí),必須通過(guò) SUID 程序。
安全機(jī)制:
- 只能修改自己的 shell 字段
- 新 Shell 必須在
/etc/shells白名單中 - 需要身份驗(yàn)證
潛在風(fēng)險(xiǎn): 如果將非標(biāo)準(zhǔn) shell 加入 /etc/shells,或系統(tǒng)允許自定義 shell,可能通過(guò)惡意 shell 腳本實(shí)現(xiàn)權(quán)限維持。
6./usr/bin/chfn— 修改用戶(hù)信息(finger)
所有者: root
核心功能: 修改用戶(hù)的 GECOS 字段(全名、辦公室、電話(huà)等信息)
與 chsh 類(lèi)似,需要修改 /etc/passwd 文件。
安全機(jī)制:
- 只能修改自己的信息
- 對(duì)輸入內(nèi)容進(jìn)行過(guò)濾,防止注入攻擊
- 限制字段長(zhǎng)度
歷史漏洞: 早期版本的 chfn 存在緩沖區(qū)溢出漏洞(如 CVE-2000-0666),現(xiàn)代版本已修復(fù)。
7./usr/bin/chage— 密碼過(guò)期信息管理
所有者: root
核心功能: 查看和修改用戶(hù)密碼過(guò)期策略
chage 用于管理 /etc/shadow 中的密碼過(guò)期相關(guān)字段:
- 密碼最后修改日期
- 密碼最小使用期限
- 密碼最大使用期限
- 密碼過(guò)期前警告天數(shù)
- 賬戶(hù)過(guò)期日期
安全機(jī)制:
- 普通用戶(hù)只能查看和修改自己的密碼過(guò)期信息
- root 可以管理所有用戶(hù)
8./usr/bin/expiry— 賬戶(hù)過(guò)期檢查
所有者: root
核心功能: 檢查賬戶(hù)密碼是否過(guò)期
expiry 用于檢查當(dāng)前用戶(hù)的密碼是否即將過(guò)期或已過(guò)期,通常由登錄腳本調(diào)用。
工作流程:
- 讀取
/etc/shadow獲取過(guò)期信息 - 計(jì)算剩余天數(shù)
- 輸出警告信息
9./usr/bin/gpasswd— 組密碼管理
所有者: root
核心功能: 管理 /etc/group 和 /etc/gshadow
gpasswd 用于:
- 設(shè)置組密碼
- 添加/刪除組成員
- 指定組管理員
安全機(jī)制:
- 普通用戶(hù)可以作為組管理員管理特定組
- 組成員變更受
/etc/gshadow中的組管理員配置控制
10./usr/bin/sudo— 以超級(jí)用戶(hù)身份執(zhí)行命令
所有者: root
核心功能: 允許授權(quán)用戶(hù)以 root 或其他用戶(hù)身份執(zhí)行命令
sudo 是 Linux 系統(tǒng)中最重要的 SUID 程序之一,也是權(quán)限管理的核心組件。
工作流程:
- 用戶(hù)執(zhí)行
sudo command sudo以 root 身份啟動(dòng)- 驗(yàn)證用戶(hù)身份(密碼或免密配置)
- 檢查
/etc/sudoers或/etc/sudoers.d/中的授權(quán)規(guī)則 - 如果授權(quán)通過(guò),以目標(biāo)用戶(hù)身份執(zhí)行命令
- 記錄審計(jì)日志(通常到
/var/log/auth.log)
配置示例:
# /etc/sudoers root ALL=(ALL:ALL) ALL %admin ALL=(ALL) ALL user1 ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
滲透測(cè)試視角(重點(diǎn)關(guān)注):
sudo -l查看當(dāng)前用戶(hù)的 sudo 權(quán)限- 檢查是否存在 NOPASSWD 配置
- 檢查是否允許執(zhí)行可編輯的腳本
- 利用 GTFOBins 查詢(xún) sudo 允許的程序是否存在提權(quán)路徑
- 版本漏洞:如 CVE-2021-3156(Baron Samedit)
11./usr/sbin/suexec— Apache suEXEC 包裝器
所有者: root
核心功能: Apache HTTP Server 的 suEXEC 模塊
suexec 允許 Apache 以特定用戶(hù)身份運(yùn)行 CGI 程序,而非默認(rèn)的 www-data 用戶(hù)。這在共享主機(jī)環(huán)境中尤為重要,可以實(shí)現(xiàn)不同虛擬主機(jī)以不同用戶(hù)身份運(yùn)行。
安全機(jī)制:
- 嚴(yán)格的目錄和文件權(quán)限檢查
- 目標(biāo)用戶(hù)必須是系統(tǒng)有效用戶(hù)
- 程序路徑必須在允許范圍內(nèi)
- 日志記錄到
/var/log/apache2/suexec.log
配置要求:
- CGI 程序必須位于
DocumentRoot下 - 不能被其他用戶(hù)寫(xiě)入
- 不能是符號(hào)鏈接
滲透測(cè)試視角: 如果配置不當(dāng)(如允許任意用戶(hù)執(zhí)行或目錄權(quán)限錯(cuò)誤),可能導(dǎo)致本地權(quán)限提升。
SUID 安全審計(jì)與滲透測(cè)試
快速審計(jì)腳本
#!/bin/bash
# 查找所有 SUID/SGID 文件并分析
echo "=== SUID Files ==="
find / -perm -u=s -type f 2>/dev/null | while read file; do
owner=$(stat -c '%U' "$file")
echo "[SUID] $file (Owner: $owner)"
done
echo ""
echo "=== SGID Files ==="
find / -perm -g=s -type f 2>/dev/null | while read file; do
group=$(stat -c '%G' "$file")
echo "[SGID] $file (Group: $group)"
done
利用 GTFOBins 進(jìn)行提權(quán)分析
GTFOBins 是一個(gè)收集了可用于繞過(guò)安全限制的 Unix 二進(jìn)制文件項(xiàng)目。對(duì)于每個(gè) SUID 程序,可以查詢(xún)是否存在濫用路徑:
# 檢查 sudo 是否有已知提權(quán)路徑 # 訪問(wèn) https://gtfobins.github.io/gtfobins/sudo/ # 檢查其他 SUID 程序 # 如 find、vim、less、awk 等
自定義 SUID 程序風(fēng)險(xiǎn)
除了系統(tǒng)默認(rèn)的 SUID 程序,滲透測(cè)試中應(yīng)特別關(guān)注:
- 第三方 SUID 程序: 如自定義腳本、業(yè)務(wù)程序
- 可寫(xiě) SUID 程序: 如果 SUID 程序可被當(dāng)前用戶(hù)修改,直接替換為 shell
- 環(huán)境變量劫持: 某些 SUID 程序依賴(lài)環(huán)境變量,可能被劫持
常見(jiàn)提權(quán)向量
| 場(chǎng)景 | 利用方式 |
|---|---|
| SUID 程序存在緩沖區(qū)溢出 | 編寫(xiě) exploit 獲取 root shell |
| SUID 程序調(diào)用其他程序(未使用絕對(duì)路徑) | PATH 環(huán)境變量劫持 |
| SUID 程序允許文件讀取/寫(xiě)入 | 讀取敏感文件或?qū)懭霅阂馀渲?/td> |
| SUID 程序是解釋器(如 python、php) | 直接執(zhí)行系統(tǒng)命令 |
| SUID 程序可加載共享庫(kù) | LD_PRELOAD / LD_LIBRARY_PATH 劫持 |
防御與加固建議
1. 最小化 SUID 程序
# 移除不必要的 SUID 權(quán)限 chmod u-s /usr/bin/unnecessary_suid # 或使用更安全的替代方案 # 如用 sudo 替代直接 SUID
2. 使用文件完整性監(jiān)控
# AIDE (Advanced Intrusion Detection Environment) aide --check # Tripwire tripwire --check
3. 定期審計(jì)
# 建立 SUID 程序基線 find / -perm -u=s -o -perm -g=s -type f 2>/dev/null | sort > suid_baseline.txt # 定期對(duì)比 find / -perm -u=s -o -perm -g=s -type f 2>/dev/null | sort | diff suid_baseline.txt -
4. 使用 capabilities 替代 SUID
Linux capabilities 提供了更細(xì)粒度的權(quán)限控制,可以替代部分 SUID 需求:
# 示例:給 ping 添加 CAP_NET_RAW capability 而非 SUID setcap cap_net_raw+ep /bin/ping chmod u-s /bin/ping
5. 內(nèi)核加固
# 限制普通用戶(hù)的 SUID 程序使用 # /etc/sysctl.conf fs.suid_dumpable = 0 # 禁止 SUID 程序生成 core dump kernel.randomize_va_space = 2 # 啟用 ASLR
總結(jié)
系統(tǒng)默認(rèn)的 SUID 程序是 Linux 正常運(yùn)作的基礎(chǔ)設(shè)施,它們經(jīng)過(guò)長(zhǎng)期安全審計(jì),直接漏洞較少。但在滲透測(cè)試中,應(yīng)重點(diǎn)關(guān)注:
- sudo 配置: 這是最常見(jiàn)的提權(quán)入口
- 自定義/第三方 SUID 程序: 往往存在安全漏洞
- SUID 程序的組合利用: 單個(gè)程序可能安全,但組合使用可能產(chǎn)生意外效果
- 環(huán)境變量和配置文件: 不當(dāng)配置可能使安全程序變得危險(xiǎn)
理解這些默認(rèn) SUID 程序的設(shè)計(jì)原理和安全機(jī)制,是進(jìn)行 Linux 安全審計(jì)和權(quán)限提升測(cè)試的基礎(chǔ)。
以上就是Linux默認(rèn)SUID可執(zhí)行文件詳解的詳細(xì)內(nèi)容,更多關(guān)于Linux默認(rèn)SUID可執(zhí)行文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Linux進(jìn)程信號(hào)的捕捉&&信號(hào)補(bǔ)充內(nèi)容方式
信號(hào)處理在進(jìn)程從內(nèi)核態(tài)返回用戶(hù)態(tài)時(shí)觸發(fā),涉及狀態(tài)切換與權(quán)限管理,sigaction用于自定義信號(hào)處理,支持屏蔽信號(hào),volatile確保變量?jī)?nèi)存可見(jiàn)性,防止編譯器優(yōu)化導(dǎo)致的信號(hào)響應(yīng)異常2025-08-08
Linux?AMH?服務(wù)器管理面板遠(yuǎn)程訪問(wèn)的操作方法
AMH?是一款基于?Linux?系統(tǒng)的服務(wù)器管理面板,它提供了一系列的功能,包括網(wǎng)站管理、FTP?管理、數(shù)據(jù)庫(kù)管理、DNS?管理、SSL?證書(shū)管理等,本文介紹在Linux?中安裝AMH面板并結(jié)合Cpolar?內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問(wèn),感興趣的朋友一起看看吧2023-11-11
Serverless 架構(gòu)如何演進(jìn)詳細(xì)介紹
這篇文章主要介紹了Serverless 架構(gòu)如何演進(jìn)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-03-03
Linux設(shè)置命令行無(wú)操作超時(shí)退出的解決方案
在 Linux 系統(tǒng)安全基線檢查中,未配置命令行超時(shí)退出是一個(gè)常見(jiàn)的中危風(fēng)險(xiǎn),如果用戶(hù)長(zhǎng)時(shí)間保持登錄狀態(tài)但未操作,攻擊者可能利用這一點(diǎn)進(jìn)行未授權(quán)訪問(wèn),所以本文給大家介紹了Linux設(shè)置命令行無(wú)操作超時(shí)退出的解決方案,需要的朋友可以參考下2025-12-12
Linux基于環(huán)形隊(duì)列的生產(chǎn)消費(fèi)者模型詳解
這篇文章主要介紹了Linux基于環(huán)形隊(duì)列的生產(chǎn)消費(fèi)者模型方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Linux內(nèi)存管理優(yōu)化的五個(gè)實(shí)用技巧分享
在現(xiàn)代計(jì)算環(huán)境中,內(nèi)存管理是操作系統(tǒng)性能優(yōu)化的核心環(huán)節(jié)之一,對(duì)于 Linux 系統(tǒng)而言,內(nèi)存管理的效率直接影響系統(tǒng)的響應(yīng)速度、穩(wěn)定性以及資源利用率,本文將從 Linux 內(nèi)存管理的基本原理出發(fā),結(jié)合實(shí)際應(yīng)用場(chǎng)景,分享五個(gè)實(shí)用的優(yōu)化技巧,需要的朋友可以參考下2025-05-05

