目录
[(2)Win Server 2008](#(2)Win Server 2008)
[三、Web服务(ThinkPHP V5)GetShell](#三、Web服务(ThinkPHP V5)GetShell)
[(1)添加cs http beacon监听](#(1)添加cs http beacon监听)
2、通过冰蝎上传baecon文件2008-923.exe到服务器中
本文讲解vulnhub stack红日靶场5的完整渗透实战全流程。首先搭建由Win7和WinServer2008组成的环境,通过C段扫描和端口探测发现目标。利用ThinkPHP漏洞上传冰蝎木马后,使用Cobalt Strike生成并执行Payload。成功上线后,关闭防火墙并利用ms14-056漏洞提权至system权限。最后进行内网扫描,通过ps-exec横向渗透获取域控制器权限,最终成功控制DC域控主机10.23.134.130。整个流程涵盖了信息收集、漏洞利用、权限提升和横向移动等关键渗透环节。
一、渗透环境搭建
1、环境拓扑
本篇文章的靶场vulnstack5拓扑如下所示,由一台Windows7设备以及一台Windows Server 2008组成,其中Windows7有两块网卡,分别连接内网和外网。

详细的角色分配以及对应的IP地址如下表所示。
| 角色 | 操作系统 | IP地址 (Vmnet8) | IP地址 (Vmnet2) | 说明 |
|---|---|---|---|---|
| 攻击者 (Attacker) | Kali Linux | 192.168.59.128 |
- | 攻击发起点,运行Cobalt Strike Team Server。 |
| C&C 服务器 (C2 Server) | Kali Linux | 192.168.59.128 |
- | 与攻击者同一机器,负责管理被控主机。 |
| 操作员 (Operator) | Windows 11 | 192.168.59.1 |
- | 攻击者使用的客户端,通过CS客户端控制攻击行动。 |
| 跳板机 / 初始入口点 | Windows 7 | 192.168.59.149 |
10.23.134.129 |
第一台被攻陷的机器,作为通往内网的桥梁。其上运行有ThinkPHP。 |
| 最终目标 (Target) | Windows Server 2008 | - | 10.23.134.130 |
内网域环境中的域控制器(DC),是本次渗透的核心目标。 |
| 内部网络 | - | - | 10.23.134.0/24 |
需要渗透的目标内网段,与外部网络隔离。 |
2、环境配置
(1)Win7
一块网卡使用NAT模式(vmnet8),一块网卡使用自定义的vmnet,我这里选择使用vmnet2,实验前开机并将两块网卡的ip地址由静态配置改为动态DHCP获取,配置完毕后查看ip地址,效果如下所示。

打开c盘phpstudy目录下启动小p,启动Apache和MySQL服务器,具体步骤如下所示。

(2)Win Server 2008
网卡使用自定义的vmnet,我这里选择使用vmnet2(需要与win7系统中除vmnet8以外的的另一个网卡一致),实验前开机并将两块网卡的ip地址由静态配置改为DHCP动态获取,配置完毕后查看ip地址,效果如下所示。

二、信息搜集
1、C段扫描
使用nmap探测vmnet8网段192.168.59.0/24,目的是找出网络中有哪些活跃主机,命令如下所示。
nmap -sn 192.168.59.0/24
-
-sn:只进行主机发现(Ping扫描),不进行端口扫描 -
192.168.59.0/24:扫描整个子网(256个IP地址)
分析扫描结果,通过对192.168.59.0/24网段的主机发现扫描,成功识别出5台活跃设备。其中192.168.59.128为Kali攻击机,192.168.59.1是Windows宿主机,192.168.59.2为VMnet8网关。综合分析确认192.168.59.149为跳板Web靶机,该设备是网络中唯一的未知业务主机,位于合理攻击路径上,应作为后续渗透测试的首要目标,重点进行端口扫描和服务识别,具体如下所示。

对扫描出的5个主机进行详细分析,具体如下表所示。
| IP地址 | 主机状态 | 延迟 | MAC地址 | 设备类型 | 角色分析 | 备注 |
|---|---|---|---|---|---|---|
| 192.168.59.1 | ✅ 在线 | 0.00188s | 00:50:56:60:00:00 | VMware虚拟机 | Windows宿主机 | 网关相邻IP,通常为宿主机的NAT接口 |
| 192.168.59.2 | ✅ 在线 | 0.00029s | 00:50:56:15:15:15 | VMware虚拟机 | VMnet8网关 | 响应最快,典型的网关特征 |
| 192.168.59.128 | ✅ 在线 | 未显示 | 未显示 | VMware虚拟机 | Kali攻击机 | 当前操作主机,MAC被隐藏 |
| 192.168.59.149 | ✅ 在线 | 0.00074s | 00:50:57:21:16:17 | VMware虚拟机 | 跳板Web靶机 | 唯一未知业务主机 |
| 192.168.59.254 | ✅ 在线 | 0.00030s | 00:50:56:17:33:18 | VMware虚拟机 | 辅助网络设备 |
2、端口探测
对目标主机进行**标准TCP端口扫描(**默认扫描1000个最常用端口),命令如下所示。
nmap 192.168.59.149
对192.168.59.149的扫描显示该靶机开放了80端口的HTTP服务和3306端口的MySQL服务,其余998个端口均被过滤,具体扫描结果如下所示。

这表明目标运行典型的Web应用架构,且防火墙配置严格仅暴露必要业务端口。该结果揭示了明确的攻击路径:Web应用和数据库服务作为主要入口点,详细分析如下所示。
| 端口 | 状态 | 服务 | 说明 |
|---|---|---|---|
| 80/tcp | ✅ 开放 | HTTP | Web服务,主要攻击入口 |
| 3306/tcp | ✅ 开放 | MySQL | 数据库服务,敏感目标 |
| 其他998个端口 | 🔒 过滤 | 无响应 | 被防火墙屏蔽或不存在 |
三、Web服务(ThinkPHP V5)GetShell
1、发现服务框架
访问靶机192.168.59.149的web服务80端口,使用浏览器打开URL,发现其为thinkphp框架。
http://192.168.59.149

2、使用ThinkPHP综合利用工具上传冰蝎木马
(1)漏洞检测
在URL地址栏输入ip地址(http://192.168.59.149),配置为all进行漏洞检测,点击漏洞检测,此时工具开始进行漏洞扫描,观察输出信息,找到存在的漏洞类型,具体如下图红框所示。

(2)尝试执行whoami
对于基本信息查出来的每个code exec漏洞,使用综合利用工具中的"命令执行"模块进行渗透,查看是否whoami可以正常执行,以tp5 invoke func code exec1为例,成功执行whoami,返回sun\administrator。

(3)尝试getshell
对确定可以执行whoami的code exec漏洞(tp5 invoke func code exec1),接下来尝试使用综合利用工具的getshell上传冰蝎木马,将冰蝎中的shell.php内容(密码为rebeyond)放入到下图箭头所指的部分,文件名写入上传后脚本的命名ljn.php,点击getshell,具体如下所示。

分析如上运行结果,提示"上传成功,请检查URL:http://192.168.59.149/ljn.php",这说明木马已经上传成功,此时木马的URL地址为http://192.168.59.149/ljn.php。
(4)连接冰蝎
在成功上传冰蝎webshell后,使用冰蝎连接脚本,具体操作如下所示,特别注意需要将脚本类型改为php,否则会连接失败。
脚本URL:http://192.168.59.149/ljn.php
脚本密码:rebeyond

将脚本URL成功添加到冰蝎后效果如下所示。

双击后进入,选择进入文件系统页面,如下所示。

四、冰蝎上传cs生成Payload
1、cs生成baecon
(1)添加cs http beacon监听
添加cs监听器,选择 payload 类型(Beacon HTTP ),并配置回连的IP地址(团队服务器的IP地址:192.168.59.128 )和端口(10087 , 任意不冲突即可)。

(2)生成木马Payload
payload 是将要投放到目标主机上的可执行文件,即Beacon代理。在菜单栏-有效载荷(P)的菜单下, 选择"Windows可执行文件(Stageless)",如下图所示。

选择格式后,会弹出一个配置窗口,选择mooyuan2008监听器。

这时监听器选择mooyuan2008,输出格式windows exe,输出格式选择目标靶机win server2008匹配的的x64格式,点击生成后,会提示保存,将其保存并命名,这里我选择命名为mooyuan2008-http-x64.exe,保存到了f:/2008/目录中。

2、通过冰蝎上传baecon文件2008-923.exe到服务器中
注意,并不是每个目录中自己都能上传成功,D盘就失败了,上传到C:/phpstudy/目录即可。

五、CS上线Baecon会话
1、冰蝎中运行baecon文件2008-923.exe
点击虚拟终端,进入到cs的载荷2008-923.exe的上传目录中,执行载荷,如下所示。

2、cs上线win7系统的2008-923.exe
通过冰蝎执行2008-923.exe后,查看cs,如下所示进程2008-923.exe在计算机名为win7的系统中,监听器为ljn-2008-http,内网ip地址为192.168.59.149,内网ip地址为10.223.134.129,结构为x64。

3、查看whoami
右键-会话交互-查看whoami,用户为sun\administrator。

六、修改防火墙配置
在测试过程中也发现这台web服务器没有办法ping通,同时信息搜集nmap端口扫描结果我们分析w其开启了防火墙配置,接下来查看防火墙的配置确认下其安全策略,并尝试将其关闭。
1、查看防火墙配置状态
使用netsh firewall show config命令查看防火墙状态,如下所示这是一个针对PHPStudy开发环境的Windows防火墙配置,防火墙处于启用状态且采用安全的"例外模式"。当前配置明确允许Apache HTTP Server和MySQL数据库服务的入站连接,确保Web开发环境正常运作,同时开放了6666TCP端口。
域 配置文件配置:
-------------------------------------------------------------------
操作模式 = 启用
例外模式 = 启用
多播/广播响应模式 = 启用
通知模式 = 启用
域 配置文件的允许的程序配置:
模式 流量方向 名称/程序
-------------------------------------------------------------------
域 配置文件的端口配置:
端口 协议 流量方向 名称
-------------------------------------------------------------------
6666 TCP 启用 入站 cs
域 配置文件的 ICMP 配置:
模式 类型 描述
-------------------------------------------------------------------
启用 2 允许出站数据包太大
标准 配置文件配置(当前):
-------------------------------------------------------------------
操作模式 = 启用
例外模式 = 启用
多播/广播响应模式 = 启用
通知模式 = 启用
标准 配置文件的服务配置文件:
模式 自定义 名称
-------------------------------------------------------------------
启用 否 网络发现
标准 配置文件的允许的程序配置:
模式 流量方向 名称/程序
-------------------------------------------------------------------
启用 入站 mysqld / C:\phpstudy\phptutorial\mysql\bin\mysqld.exe
启用 入站 Apache HTTP Server / C:\phpstudy\phptutorial\apache\bin\httpd.exe
标准 配置文件的端口配置:
端口 协议 流量方向 名称
-------------------------------------------------------------------
6666 TCP 启用 入站 cs
标准 配置文件的 ICMP 配置:
模式 类型 描述
-------------------------------------------------------------------
启用 2 允许出站数据包太大
日志配置:
-------------------------------------------------------------------
文件位置 = C:\Windows\system32\LogFiles\Firewall\pfirewall.log
文件大小上限 = 4096 KB
丢弃的数据包数 = 禁用
连接数 = 禁用
根据提供的防火墙配置信息,我们可以得出以下分析结果:
(1)总体配置状态
- 系统同时启用了 "域" 和 "标准" 两种配置文件,且两种配置文件的基础模式(操作模式、例外模式等)均处于启用状态
- 两种配置文件都启用了通知模式,意味着当防火墙阻止连接时会通知用户
- 多播 / 广播响应模式启用,允许系统响应网络中的多播和广播请求
(2)域配置文件特点
- 允许的程序:未配置任何允许的程序(列表为空)
- 端口配置:仅开放了 TCP 6666 端口(入站),名称为 "cs"
- ICMP 配置:允许类型 2 的 ICMP 消息(出站数据包太大时的响应)
(3)标准配置文件特点(当前活跃)
-
服务配置:启用了 "网络发现" 服务,这有助于在局域网中发现其他设备
-
允许的程序:
- 允许 mysqld 程序(MySQL 数据库服务)入站连接
- 允许 Apache HTTP Server(Web 服务器)入站连接这两个程序都位于 phpstudy 的安装目录下,表明系统可能运行着本地开发环境
-
端口配置:同样开放了 TCP 6666 端口(入站),名称为 "cs"
-
ICMP 配置:与域配置文件相同,允许类型 2 的 ICMP 消息
(4)日志配置情况
- 日志文件位置:C:\Windows\system32\LogFiles\Firewall\pfirewall.log
- 日志文件大小上限:4096 KB
- 未记录丢弃的数据包和连接数(均为禁用状态)
2、关闭防火墙
执行netsh advfirewall set allprofiles state off命令关闭防火墙,如下所示。
netsh advfirewall set allprofiles state off
该命令将立即禁用Windows防火墙的所有配置文件(域、专用、公用),使系统完全暴露于网络威胁中。执行后所有入站和出站连接将不受任何限制,所有网络端口对外可见,防火墙保护功能彻底失效。
(1)核心作用
完全关闭Windows高级防火墙的所有配置文件
(2)具体影响范围
-
域配置文件 (Domain Profile) → 关闭
-
专用配置文件 (Private Profile) → 关闭
-
公用配置文件 (Public Profile) → 关闭
3、再次查看防火墙状态
再次使用netsh firewall show config命令查看防火墙状态,这是一次通过Cobalt Strike Beacon在受控主机上执行的防火墙配置查看操作,结果显示该系统的Windows防火墙已完全禁用(操作模式=禁用),导致所有网络连接处于无防护状态。配置中保留了6666 TCP端口的入站规则(标记为"cs")以及PHPStudy环境的MySQL和Apache服务规则,但由于防火墙整体关闭,这些规则实际无效,系统所有端口均对外暴露。
[09/23 19:40:00] [*] Tasked beacon to become interactive
[09/23 19:40:46] [+] -------------------------------------------------------------查看防火墙配置-------------------------------------------------------------
[09/23 19:40:46] [*] Tasked beacon to run: netsh firewall show config
[09/23 19:40:58] [+] host called home, sent: 73 bytes
[09/23 19:40:59] [+] received output:
域 配置文件配置:
-------------------------------------------------------------------
操作模式 = 禁用
例外模式 = 启用
多播/广播响应模式 = 启用
通知模式 = 启用
域 配置文件的允许的程序配置:
模式 流量方向 名称/程序
-------------------------------------------------------------------
域 配置文件的端口配置:
端口 协议 流量方向 名称
-------------------------------------------------------------------
6666 TCP 启用 入站 cs
域 配置文件的 ICMP 配置:
模式 类型 描述
-------------------------------------------------------------------
启用 2 允许出站数据包太大
标准 配置文件配置(当前):
-------------------------------------------------------------------
操作模式 = 禁用
例外模式 = 启用
多播/广播响应模式 = 启用
通知模式 = 启用
标准 配置文件的服务配置文件:
模式 自定义 名称
-------------------------------------------------------------------
启用 否 网络发现
标准 配置文件的允许的程序配置:
模式 流量方向 名称/程序
-------------------------------------------------------------------
启用 入站 mysqld / C:\phpstudy\phptutorial\mysql\bin\mysqld.exe
启用 入站 Apache HTTP Server / C:\phpstudy\phptutorial\apache\bin\httpd.exe
标准 配置文件的端口配置:
端口 协议 流量方向 名称
-------------------------------------------------------------------
6666 TCP 启用 入站 cs
标准 配置文件的 ICMP 配置:
模式 类型 描述
-------------------------------------------------------------------
启用 2 允许出站数据包太大
日志配置:
-------------------------------------------------------------------
文件位置 = C:\Windows\system32\LogFiles\Firewall\pfirewall.log
文件大小上限 = 4096 KB
丢弃的数据包数 = 禁用
连接数 = 禁用
相对于关闭前,主要修改位置为由【操作模式 = 启动】改为了【操作模式 = 禁用】,修改后的防火墙配置含义如下所示。
-
操作模式 = 禁用
-
❌ 防火墙完全关闭,不提供任何网络保护
-
所有入站和出站连接都不受限制
-
系统处于无防火墙状态,网络安全风险极高
-
-
例外模式 = 启用 (在防火墙禁用时无效)
-
虽然显示"启用",但由于操作模式已禁用,此设置不起作用
-
如果防火墙启用时,表示采用"白名单"机制(只允许明确规则中的连接)
-
-
多播/广播响应模式 = 启用
-
✅ 允许系统响应网络中的多播和广播请求
-
影响网络发现、设备识别等功能
-
-
通知模式 = 启用
-
✅ 在连接被阻止时向用户显示安全提示
-
但由于防火墙已禁用,不会产生任何通知
-
七、ms14-056提权(CVE-2014-4113)
1、插件提权
使用cs插件工具进行快速提权,如下所示点击"谢公子-权限提升-ms14-056"进行提权。

在弹出的监听器中,选择监听ljn-2008-http,具体如下所示。

2、CS上线新会话
点击运行后cs上线新的baecon,如下所示权限为sysntem用户,说明提权成功。

3、执行whoami
执行shell whoami确定其为system权限,如下所示。

八、横向渗透
1、内网扫描
(1)网络扫描发现DC
使用net view发现dc目标10.23.134.130,如下图红框所示。
shell net view

net view显示当前域或工作组中的所有计算机,分析如下所示。
| 服务器名称 | IP地址 | 平台/端口 | 版本 | 类型 |
|---|---|---|---|---|
| PC | 10.22.134.130 | 500 | 6.1 | PBC |
| WIN7 | 192.168.59.149 | 500 | 6.1 | 未知 |
此时点击-视图-目标列表,即可发现目标列表中增加了net view发现的两台设备。

(2)端口扫描
发现存活主机为129和130,由于129是192.168.59.149的另一个网卡,故而目前同一网段的内网就仅包括10.23.134.129这台设备,如下所示。

在弹出的扫描框中选中10.23.134.0 255.255.255.0网段,具体如下所示。

点击扫描后运行结果如下所示,实际执行的是portscan命令。

对扫描结果进行详细分析,发现的活跃主机如下表所示。
| IP地址 | MAC地址 | 厂商识别 | 状态 |
|---|---|---|---|
| 10.23.134.1 | 00-50-56-C0-00-02 | VMware | ✅ 网关/路由器 |
| 10.23.134.129 | 00-00-29-CB-6E-01 | VMware | ✅ 虚拟机 |
| 10.23.134.130 | 00-00-29-34-B5-08 | VMware | ✅ 虚拟机 |
| 10.23.134.254 | 00-50-56-E0-DA-14 | VMware | ✅ 网络设备 |
2、cs创建中转会话
(1)原理详解
Cobalt Strike 中的「跳板机普通中转会话」功能是其横向移动能力的核心,它本质上是一种 TCP 隧道 或 端口转发 技术。普通中转会话 指的是在已经控制的一台机器(我们称之为 跳板机 或 中继站)上,建立一个通信通道,使得攻击者的团队服务器能够通过这个通道,与跳板机能访问到、但团队服务器直接访问不到的其他内部网络机器进行通信。

-
建立初始会话:首先,攻击者需要通过某种方式(如漏洞利用、社会工程学等)获取到一台外部网络或内部网络中主机的控制权,使其上线到 Cobalt Strike 团队服务器,得到一个 Beacon 会话。
-
创建中转监听器:右键点击已有的 Beacon 会话,选择 "Pivoting"->"Listener",创建一个新的监听器。在创建监听器时,需要指定监听的地址(通常是跳板机的内网地址)和端口,以及选择合适的 Payload 类型。
-
上线内部主机 :可以通过多种方式让内部网络中的目标主机连接到刚刚创建的中转监听器,从而上线到 Cobalt Strike。
- 例1,可以生成一个可执行的后门程序,将其上传到内网目标主机并执行,该后门程序会根据配置主动连接跳板机上的监听器;
- 例2,利用一些横向移动技术,如通过 IPCS 连接对目标主机进行 Psexec 攻击,指定使用创建的中转监听器,从而使目标主机上线。
-
管理和使用中转会话:一旦内部主机成功通过跳板机上线,攻击者就可以在 Cobalt Strike 中看到新的会话,并像操作其他普通会话一样,对目标主机执行各种命令,如执行系统命令、窃取数据、进行端口扫描、进一步横向移动等。
graph LR
A[CS客户端
Windows 11
192.168.59.1]
B[CS团队服务器
Kali Linux
192.168.59.128]
C[Web跳板机 Win7
已上线HTTP Beacon 会话
开启TCP中转监听
外网网卡:192.168.59.149
内网网卡:10.23.134.129]
D[内网渗透目标
Windows Server 2008 DC
10.23.134.130]A --> |1 图形化控制指令| B B --> |2 C2加密流量<br>Beacon心跳与指令| C C --> |3 TCP协议通信<br>| D D --> |6 返回协议响应| C B --> |5 解密后数据返回| A C --> |4 窃取数据与响应<br>封装回C2流量| B subgraph 外部网络 [外部网络 VMnet8] A B end subgraph 跳板机 [跳板机 双网卡] C end subgraph 内部网络 [内部网络 VMnet2] D end style A fill:#e1f5fe style B fill:#f3e5f5 style C fill:#fff3e0 style D fill:#ffebee style A stroke:#01579b style B stroke:#4a148c style C stroke:#e65100 style D stroke:#c62828
(2)渗透实战
选中10.23.134.129的会话(system用户),右键选择代理转发-转发上线,如下图所示。

新建的转发监听,命名为dc-forward,监听地址选择跳板机win7系统的内网ip地址10.23.134.129。

配置完毕后,监听列表增加了我们刚刚配置的监听10.23.134.129(跳板机内网ip地址),具体如下图的红箭头所示。

3、cs抓取明文密码
选中10.23.134.129的会话(system用户),右键选择"凭证提权-抓取明文密码",如下图所示。

如下所示,域管理员Administrator的密码为dc123.com。

如下所示,域成员leo的密码为123.com。

4、ps-exec横向渗透
在视图-目标中找到DC 10.23.134.130,右键-横向移动-psexec,如下所示

配置用户名和密码,选择DC域的管理员账户administator(密码为dc123.com),然后配置监听器,选择10.23.134.129对应的dc-forward,如下所示。

配置会话,选择10.23.134.129的system提权会话,如下所示。

配置会话,选择10.23.134.129对应的dc-forward,如下所示。

5、cs上线DS会话
在点击psexec运行后,隔一会新上线了DC域的会话,如下表所示。

在新上线的DC域控会话上-右键-执行"会话交互",并输入shell ipconfig命令,如下所示显示的ip地址为10.23.134.130,说明渗透成功,具体如下所示。
