【内网渗透】CFS三层靶机渗透
本文最后更新于:2023年9月26日 晚上
[TOC]
[内网渗透]CFS三层靶机渗透
网络拓扑图
三个Target主机的拓扑图如图,攻击机的网段在192.168.1.1/24
- Target1 Centos7
- Target2 Ubuntu
- Target3 Win7
该靶机的渗透流程如下:
通过攻击机kaili192.168.1.129
攻击target1的192.168.1.132,target2、3不能连通外网,只能在内网通信。所以需要先渗透target1,然后通过它的vmnet2网卡去攻击target2。拿下target2之后,通过target2做跳板,攻击target3.
靶机搭建
- kali:192.168.1.129(vmnet1)
- Target1:192.168.1.132(vmnet1)、192.168.22.130(vmnet2)
- Target2:192.168.22.128(vmnet2) 、192.168.33.128(vmnet3)
- Target3:192.168.33.33(vmnet3)
其他不在此赘述,参考:https://blog.csdn.net/qq_61237064/article/details/125602997
Target1
0x01.nmap主机探活
在kaili中使用nmap查看vmnet1网段有哪些主机:
1 |
|
查到一台:192.168.1.132
0x02.端口扫描
1 |
|
80端口开放
0x03.ThinkPHP5 RCE漏洞拿shell
浏览器访问一下是ThinkPHP5.0版本,有漏洞
我们直接拿工具,检测一下漏洞:
存在漏洞,直接命令执行,写shell进去(此处$_POST
被过滤,于是使用base64编码绕过):
1 |
|
蚁剑连接:
在txt文件发现两个flag
我们执行ifconfig
,发现了另一个网段22 192.168.22.130
:
那么肯定存在内网了
0x04.上传msf后门(reverse_tcp)反向连接拿主机权限
存在内网我们就要使用msf工具了,
首先使用msfevnom
生成一个elf的马,这里采取反向连接(Target1来连接kali)
使用uname -a
查看一下Target1的系统:
1 |
|
linux64
然后我们生成一个elf后门马,查看自己的IP地址,并根据自己的IP地址及目标靶机的系统类型生成对应的后门文件
1 |
|
然后在kali中运行监听模块,监听本机4444端口:
1 |
|
然后我们将elf马上传到target1,设置权限,并执行:
1 |
|
这个时候Target1靶机已经上线msf了:
下面开始内网渗透:
内网渗透
Target2
现在我们不能直接通过nmap去扫描Target2靶机的ip,因为我们网段的设置,kali与Target1是处在同一个网段的主机,我们可以直接扫描到。但是现在扫描的Target2处于内网网段,直接扫扫不到。但是我们知道Target1的vmnet2网卡与Target2处于一个网段,所以我们可以通过Target1的vmnet2网卡来打Target2,因此可以挂上Target1的代理
(1)路由信息探测
我们可以使用msf自带的模块进行信息探测:
- 探测网络接口的模块(get_local_subnets)
- 查看路由的模块(autoroute -p)
1 |
|
路由:路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程,就相当于把我们要传输的数据先传输到该路由,再发往目标。
我们可以设置一个路由,然后把我们的请求通过Target1的vmnet1网段发出,然后重定向转发到vmnet2网段,这样kali的msf就可以与22网段(Target2)互通了
于是我们可以设置一个路由:
静态路由配置
MSF 的 autoroute 模块是 MSF 框架中自带的一个路由转发功能,实现过程是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往“内网”的路由,直接使用 MSF 去访问原本不能直接访问的内网资源,只要路由可达我们既可使用 MSF 来进行探测了
1 |
|
(2)msf代理配置
路由有一个缺陷,它只能在msf建立的这个会话上使用,如果我们新开一个终端使用nmap扫描,还是扫描不到的,所以我们需要设置msf的代理
msf有自己的代理模块
auxiliary/server/socks_proxy
假设现在msf的会话是session1,是建立在Target1的shell上的,建立路由之后可以与22网段通信。那么我们想要通过session1使用工具去攻击22网段,这时该怎么办?
这种情况就需要设置一个代理了,通过这个代理给别人一个端口去连接,然后我们可以使用本机去连接kali的端口,这样就能访问Target2
的22网段了
1 |
|
在kali中通过vim /etc/proxychains.conf
修改proxychains
配置文件:
写入kali的ip和刚刚配置的端口
然后使用nmap探测端口(注意:使用nmap时前面要加上proxychains
这样才能使用msf的代理)
1 |
|
80端口开放
我们给浏览器设置一个socks5代理:
访问一下:
是一个bagecms
搭建的网站
(3)利用bagecms-sql注入漏洞,admin登录后台拿shell
这里可以使用一个好用的工具SocksCap
,这个工具可以给其他工具添加上代理
扫描到robots.txt
,告诉了我们admin的路径
1 |
|
信息收集,源码给了hint:SQL注入点:/index.php?r=vul&keyword=1
我们可以直接使用sqlmap跑,但是需要挂上代理,可以使用参数--proxy
或kali中前面加上proxychains
。我们可以直接指定注入点:-p keyword
1 |
|
拿到admin的账号和密码 admin:123qwe
登陆后台,拿到flag:
在tag/index.php
写入马
然后我们使用SocksCap
工具挂上代理,打开蚁剑连接:
注意URL:http://192.168.22.128/?r=tag
(4)上传msf后门(bind_tcp)正向连接拿ubuntu主机权限
我们拿到shell之后和前面一样,使用msf生成后门。但是这里有点不同,由于Target2不能出网
所以我们这次只能正向连接,即通过kali
去连接Target2
我们在蚁剑查看一下target2的操作系统:
1 |
|
可以看到是一个64位的操作系统
因此在kaili生成一个elf正向连接的后门:
1 |
|
上传到target2,并修改权限执行:
1 |
|
在MSF中开启监听,与Target2建立连接,这里需要注意,上一次代理使用的reverse_tcp是MSF作为监听,让Target1连到我们,而这次代理使用的bind_tcp是Target2作为监听,我们需要连到Target2,这个逻辑正好是相反的
同样,如果我们要用msf 另起一个终端开启监听,这里要注意,msf新开的终端之前的那个终端的配置都用不了。
如果我们这次代理使用的bind_tcp是Target2作为监听,我们要正向连接到内网里的target2
因此,我们不能直接使用msfconsole
打开,而是需要使用proxychains
打开msf,需要走代理,否则msf访问不到Target2,然后再去连接bind_tcp
这里有个图
(其实使用之前那个终端就行,已经配置了代理,我们就可以直接连bind_tcp了)
我们此处演示一下使用proxychains
:
1 |
|
target2成功上线msf
然后继续进行信息收集,我们可以使用:
1 |
|
此处我们还可以使用一种方法:
1 |
|
看到了一个33网段的ip,还存在内网
Target3
0x01.添加路由
由于我们在Target2(ubuntu)中探测到ubuntu主机 既处在22网段,又处在33网段,所以我们可以重复之前的步骤,增加一个路由,将kali通过代理发往Target2的流量通过路由从22网段重定向到33网段
1 |
|
成功添加了路由
nmap扫描一下target3靶机开放的服务
(新开一个终端后,我们需要在这个新开的msf终端上配置一个代理,然后修改/etc/proxychains.conf
)
1 |
|
扫描到开启了445和3389端口
0x02.利用ms17-010永恒之蓝漏洞拿shell
从扫描结果很容易知道这是win7系统,开启445和3389端口
445端口存在ms17-010永恒之蓝漏洞
于是我们可以试着使用msf中的ms17-010打一下:
1 |
|
成功利用,输出shell进入命令行
我们输出:netstat -ant
查看一下有哪些端口:
看到了3389端口,于是可以进行远程桌面连接,
我们先使用net user
查看一下有哪些用户,发现有administrator
我们输入:net user administrator 123456
修改密码
然后使用SocksCap
打开连接远程桌面程序mstsc.exe
(注意要设置代理为新的那个),输入ip:192.168.33.33连接
成功拿下
还有另一种连接方式:使用端口转发:
1 |
|
将192.168.33.33:3389转发到kali的7777端口上,然后直接连接就行:
参考:
https://www.cnblogs.com/1vxyz/p/17080748.html