渗透测试:信息泄露靶机FLAG夺取

发布于 2025-12-19  16 次阅读


🎯 目标

获取 Web 应用中的管理员权限,读取隐藏的 FLAG:

🔍 第一阶段:信息收集(Reconnaissance)

1. 发现敏感路径

访问目标网站:

访问到http://10.10.1.171:18081/ 发现几乎没有可操作页面

尝试常见敏感文件:

直接访问http://10.10.1.171:18081/robots.txt

​发现robots.txt存在

响应内容是User-agent: * Disallow: /app.py

✅于是便寻找到了突破口 /app.py 被禁止爬取,说明它可能存在!(robots.txt 是网站根目录下的一个纯文本文件,它的作用一般是告诉搜索引擎爬虫(如 Googlebot、Bingbot 等)哪些页面可以抓取,哪些不可以抓取。

安全提示
绝对不要在 robots.txt 中写入真实敏感路径!
因为黑客会专门看这个文件来找漏洞。

2. 获取源码

直接访问泄露的源码:http://10.10.1.171:18081/app.py 成功返回完整的应用代码。

这其实是典型的 “源码泄露”漏洞,常由错误的 Web 服务器配置导致(如未禁止 .py 文件访问)。

第二阶段:漏洞分析(Vulnerability Analysis)

从app.py中识别出以下致命问题:

✅ 漏洞 1:硬编码加密密钥

SECRET_KEY = b'SafeBox_Secret_K' # 16 bytes

密钥直接写死在代码中。我可以完全掌握加密/解密能力。

✅ 漏洞 2:自研认证机制(Roll Your Own Crypto)

使用 AES-ECB 加密用户数据作为 Cookie(auth_token)。

AES-ECB模式不安全(相同明文 → 相同密文),但此处因密钥已知,模式就无关紧要。

✅ 漏洞 3:客户端声明权限

Python编辑 1user_data = json.loads(user_data_json) 2if user_data.get('role') == 'admin': 3 return render_template('admin.html', flag="flag{...}")

权限完全由客户端的 Cookie 决定,服务端没有进行session校验。所有只要能构造出包含 "role": "admin"的合法加密数据就可以提权。

攻击思路:用已知密钥加密一段{"role":"admin"}的 JSON,生成伪造 Cookie,替换浏览器中的auth_token。

🛠️ 第三阶段:环境与工具准备

系统环境

攻击机: Ubuntu / Windows(带 Python)

目标机:http://10.10.1.171:18081

必需工具/模块

工具用途安装方式
Python 3.6+运行脚本系统自带或 apt install python3
pycryptodomeAES 加解密pip install pycryptodome(在虚拟环境中)
浏览器(Chrome/Firefox)手动替换 Cookie自带
开发者工具(DevTools)查看/编辑 CookieF12 打开

⚠️ 在新版 Debian/Ubuntu 中,必须使用 虚拟环境 避免 externally-managed-environment 错误。

但实际上由于只是自身靶场,所以并没有使用虚拟环境,安装pycryptodome时直接加上--break-system-packages即可强制安装。

💻 第四阶段:编写利用脚本(Exploit)

文件名:cookie.py

运行脚本:

Bash运行 python3 cookie.py

输出:

Forged Admin auth_token: RR8GZ+QBFe/2HK9Zdgrf/njsXYKO741F3Ka5SSLxNH4vPzel9nARLW2i6WuWKFgCqUnZkNIlIkIBrsPOsKtc0BT2jgl18C312dcoVV8nmCo=

✅ 此 Token 是 Base64 编码的 AES-ECB 密文,服务端可正确解密。

🕵️ 第五阶段:利用(Exploitation)

步骤 1:访问目标登录页

浏览器打开:

Text编辑 1http://10.10.1.171:18081/login

用guest/guest,登录一次,建立 Cookie 上下文。

步骤 2:打开开发者工具

按 

F12→ 切换到 Application展开 Cookies → http://10.10.1.171:18081

步骤 3:替换 Cookie

找到 auth_token

双击其 Value,粘贴生成的伪造 Token:

🛡️ 第六阶段:漏洞成因与防御建议

根本原因

问题后果
源码泄露(/app.py 可访问)密钥暴露
硬编码密钥无法轮换,一旦泄露即沦陷
客户端存储权限信任不可信输入
自研加密方案引入非必要风险

攻击全景

Text编辑

1[信息收集]
2 ↓
3访问 robots.txt → 发现 /app.py
4 ↓
5[源码泄露]
6 ↓
7下载 app.py → 获取 SECRET_KEY = b'SafeBox_Secret_K'
8 ↓
9[漏洞分析]
10 ↓
11识别:硬编码密钥 + 客户端权限控制
12 ↓
13[利用准备]
14 ↓
15安装 pycryptodome(虚拟环境)→ 编写 forge_admin_cookie.py
16 ↓
17[生成伪造 Token]
18 ↓
19运行脚本 → 得到 Base64 Token
20 ↓
21[权限提升]
22 ↓
23浏览器替换 auth_token Cookie
24 ↓
25[获取 FLAG]
26 ↓
27访问 /dashboard → 显示 flag{…}


一昼一世界,一夜一星河。昼迷天未晓,夜尽终天明。