
SUID/SGID位檢測與全盤掃描GTFONow二進制權限漏洞檢測代碼實現【免費下載鏈接】GTFONowAutomatic privilege escalation for misconfigured capabilities, sudo and suid binaries using GTFOBins.項目地址: https://gitcode.com/gh_mirrors/gt/GTFONowGTFONow 是一款運行在 Linux/Unix 系統上的SUID/SGID 二進制權限漏洞檢測工具它以 GTFOBins 漏洞庫為引擎自動掃描系統中的 SUID、SGID 位、Linux Capabilities 和 sudo 配置找出可被利用的本地提權點并一鍵給出可用的利用載荷。對剛接觸滲透測試的新手來說它把「找漏洞 查利用方法 執行利用」這三步合并成了一條命令。本文帶你讀懂它最核心的SUID/SGID 位檢測邏輯和全盤掃描實現。先搞懂什么是 SUID / SGID 位Linux 文件權限除了 rwx還有兩個特殊位權限位符號八進制作用風險SUIDs4000執行該程序時臨時獲得文件屬主的權限屬主是 root 時可被利用獲得 root shellSGIDs2000執行該程序時臨時獲得文件屬組的權限可獲得高權限組的身份用ls -l觀察時它們會顯示為-rwsr-xr-x 1 root root ... /usr/bin/find # SUID 位屬主 root -rwxr-sr-x 1 root root ... /usr/bin/uuencode # SGID 位 為什么危險普通用戶執行 SUID root 的find時進程會以 root 身份運行。而find恰好支持-exec參數——于是一個普通用戶就能執行任意 root 命令。這就是 SUID 權限位檢測與利用的經典場景。GTFONow 的兩級 SUID/SGID 檢測流程GTFONow 對 SUID/SGID 的檢測分為「快速掃描」和「全盤掃描」兩級流程圖如下┌─────────────────────────────────────────────────────────────┐ │ 第 1 級默認PATH 快速掃描 check_suid_bins() │ │ 遍歷內置 GTFOBins 候選表suid_bins→ 在 PATH 中定位 │ │ → check_suid_sgid() 按位檢測 S_ISUID / S_ISGID │ │ → 命中則匹配 GTFOBins 利用載荷 │ ├─────────────────────────────────────────────────────────────┤ │ 第 2 級--level 2全盤掃描 check_suid_full_disk() │ │ find / -perm -4000 → 全盤找出所有 SUID 文件 │ │ find / -perm -2000 → 全盤找出所有 SGID 文件 │ │ → 跳過 PATH 內已檢測項 → 逐個查 GTFOBins 庫匹配載荷 │ └─────────────────────────────────────────────────────────────┘ ↓ 結果排序root 屬主 / Shell 類載荷優先 → 交互式選擇或自動利用核心檢測函數check_suid_sgid()所有檢測最終都匯聚到一個 30 行的函數check_suid_sgid()。它的原理非常樸素——用os.stat()拿到文件權限位再做兩次**按位與bitwise AND**判斷is_suid bool(mode stat.S_ISUID) # 檢測 SUID 位4000 is_sgid bool(mode stat.S_ISGID) # 檢測 SGID 位2000如果命中函數還會順帶查出文件的屬主名和屬組名通過pwd.getpwuid()/grp.getgrgid()并返回形如{SUID: True, SGID: False, Owner: root, Group: root}的結構。這個屬主信息很關鍵SUID 位只有當屬主是root時才最有價值后續的結果展示和排序都會用到它。快速掃描在 PATH 中「按名單排查」check_suid_bins() 的思路是「名單制」程序內置了一張由 GTFOBins 持續更新的候選表suid_bins約 100 多個已知可利用的二進制見 gtfonow/gtfonow.py#L2095。函數逐一遍歷這張表用get_binary_path()相當于 Python 版which在PATH環境變量里定位二進制調check_suid_sgid()判斷 SUID/SGID 位是否被設置命中則把該二進制的全部 GTFOBins 載荷展開記入提權候選列表。之所以只查 PATH是因為普通用戶只能直接執行 PATH 中的程序——PATH 之外的 SUID 文件雖然也可能有用但默認掃描不必全盤遍歷保證速度。全盤掃描find 兩條命令找出「漏網之魚」加上--level 2后check_suid_full_disk() 接手更徹底的搜索核心就是兩條經典 find 命令find / -perm -4000 -type f 2/dev/null # 全系統找 SUID 文件 find / -perm -2000 -type f 2/dev/null # 全系統找 SGID 文件實現細節見 gtfonow/gtfonow.py#L4010-L4015。隨后它做三件事去重跳過已經在 PATH 中檢測過的二進制is_binary_in_path()判斷匹配把文件名對照suid_bins載荷表命中則附上利用載荷未命中的會打印提示「發現 SUID/SGID 文件但暫無已知 GTFOBins 利用」提醒人工關注記錄同樣通過check_suid_sgid()補全屬主/屬組信息。 全盤掃描的價值很多系統會把特殊工具放在/opt、/usr/local等非 PATH 目錄只有全盤掃描才能抓到這些「漏網之魚」。運行效果與結果排序獲取源碼并運行git clone https://gitcode.com/gh_mirrors/gt/GTFONow cd GTFONow python gtfonow/gtfonow.py --level 2 -v # level 2 全盤掃描程序結束時會打印編號列表例如[1] find Shell、[2] dd Arbitrary write。排序邏輯在 order_priv_escs()屬主為 root 的 SUID 二進制排在最前user_priority 0載荷類型按 Shell 任意讀 任意寫 權限變更 排序。也就是說列表第一項基本就是「最容易拿到 root」的路徑。常用參數參數說明--level 1/21 為快速掃描默認2 增加全盤 SUID 與 Capability 掃描--risk 1/21 為安全操作默認2 允許修改文件等激進操作CTF 場景常用--auto跳過交互自動執行利用-v輸出 DEBUG 級日志方便學習檢測過程動手驗證看看測試是怎么寫的如果想直觀理解檢測函數最好的入口是 gtfonow/tests/test_privesc.py 中的test_check_suid_bins()第 14 行它斷言掃描結果里包含{Binary: find, Path: /usr/bin/find, Type: SUID/SGID Binary, SUID: root, ...}這樣的記錄——正是check_suid_bins()的真實輸出形態。小結位檢測原理os.stat()取權限位mode stat.S_ISUID / S_ISGID兩次按位與一行代碼判定 SUID/SGID 位。兩級掃描默認按 GTFOBins 名單快速掃 PATH--level 2用find / -perm -4000/-2000全盤掃描補齊 PATH 之外的目標。結果優先root 屬主 Shell 類載荷排最前新手直接選第一項即可。項目亮點單文件、純標準庫、兼容 Python 2/3 與任意 Unix 架構可無文件化直接管道執行。?? 安全提醒GTFONow 設計用于 CTF 與獲得授權的滲透測試pentest環境請勿對未授權系統運行--risk 2會修改目標文件務必確認你理解它的行為。【免費下載鏈接】GTFONowAutomatic privilege escalation for misconfigured capabilities, sudo and suid binaries using GTFOBins.項目地址: https://gitcode.com/gh_mirrors/gt/GTFONow創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考