记某次AWDP的坎坷之旅
字数 1339 2025-08-18 11:39:03
AWDP攻防竞赛技术分析与实战教学文档
1. Web ezcache题目分析与利用
1.1 题目环境分析
- 题目提供两个源码目录:src(主源码)和packages(依赖)
- Web根目录在/app下,但源码中也有app目录,导致路径混淆(重要注意点)
1.2 关键漏洞点
- SSTI(服务器端模板注入)漏洞:
generate_page函数中intro参数可控- 使用
format()方法拼接用户输入,存在模板注入风险 - 原始过滤仅检查
admin和config.关键词
1.3 漏洞利用方法
-
绕过过滤:
- 初始过滤:
intro.replace("{", "").replace("..", "").replace("/", "") - 绕过思路:使用未过滤的模板语法,如
{{7*7}}
- 初始过滤:
-
文件上传利用:
- 可上传任意文件(除.py后缀)
- 文件保存路径:
/app/static/目录下 - 可结合SSTI实现RCE
1.4 修复方案
- 加强SSTI过滤:彻底禁用
{}符号或使用更安全的模板渲染方式 - 限制文件上传类型:白名单方式限制可上传文件扩展名
2. Whatis题目分析与利用
2.1 题目特点
- 通过控制变量法进行fuzz测试
- 关键发现:禁用特定导入包(file模块)会导致服务异常
2.2 漏洞定位
- 异常文件位于
file/__init__.py - POST请求存在文件读取功能
2.3 漏洞利用
-
过滤绕过:
- 原始过滤:替换
{,..,/,cat,flag,tac等关键词 - 绕过思路:使用未过滤的命令如
less、more或编码方式
- 原始过滤:替换
-
修复方案:
- 实现更严格的路径校验
- 禁用危险命令执行功能
3. Security System题目分析与利用
3.1 漏洞类型
- Jackson反序列化漏洞
- 使用Spring 2.7.12版本(已知存在漏洞)
3.2 关键代码分析
/safeobject路由接收obj和classes参数- 通过反射获取类并进行反序列化
SecurityCheck.deObject()方法存在安全隐患
3.3 漏洞利用链
-
修改safe属性:
{ "@type": "com.example.jackson.SecurityCheck", "safe": false } -
利用treeMap属性:
{ "@type": "com.example.jackson.SecurityCheck", "safe": false, "treeMap": { "@type": "java.util.HashSet", "map": { "base64编码的payload": null } } } -
攻击载荷:
- 反弹Shell
- Spring内存马注入
3.4 修复方案
- 禁用危险的base64反序列化功能
- 限制可反序列化的类范围
- 升级Jackson库版本
4. AWDP实战技巧总结
4.1 路径处理要点
- 必须仔细确认Web根目录和实际路径
- 可疑路径都应尝试(如/app和app同时存在时)
4.2 过滤策略
- 不必过度过滤,关键过滤1-2个点即可
- 禁用单个字母如"f"可能比禁用完整单词"flag"更有效
4.3 依赖分析
- 检查render等关键函数的依赖关系
- 通过禁用依赖测试服务异常点
4.4 代码处理
- 不必追求最少代码,确保功能完整更重要
- 可疑功能点可先删除测试服务反应
5. 附录:关键Payload示例
5.1 Jackson反序列化完整攻击Payload
POST /safeobject HTTP/1.1
Host: target
Content-Type: application/x-www-form-urlencoded
obj={"@type":"com.example.jackson.SecurityCheck","safe":false,"treeMap":{"@type":"java.util.HashSet","map":{"rO0ABXNy...(base64编码payload)":"null"}}}&classes=org.springframework.ui.ExtendedModelMap
5.2 Spring内存马注入
{
"@type": "com.example.jackson.SecurityCheck",
"safe": false,
"treeMap": {
"@type": "java.util.HashSet",
"map": {
"rO0ABXNy...(内存马payload)": ""
}
}
}
本教学文档涵盖了三个典型AWDP题目的详细分析、利用方法和修复方案,以及实战中的关键技巧,可作为AWDP竞赛的参考指南。