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