谈谈AMF网站的渗透测试
字数 1427 2025-08-18 11:35:42
AMF网站渗透测试全面指南
0x00 AMF技术简介
AMF(Action Message Format)是一种二进制数据格式,主要用于ActionScript中的对象序列化传输。
AMF核心特性
- 两种版本:AMF0和AMF3(数据流中0×11标记表示AMF3)
- 基于HTTP协议工作流程:
- 获取客户端请求(request)
- 服务端反序列化请求
- 处理请求
- 序列化响应(response)
- 返回HTTP响应给客户端
- 优势:传输效率高
技术参考资料
0x01 测试工具集
主要工具
-
BurpSuite插件:
- AMFDSer-ngng
- 已知问题:部分响应解码返回空或报异常
- 相关issue:解码问题
- BurpAMFDser
- 功能:将AMF反序列化并利用xtream库编码为XML
- AMFDSer-ngng
-
其他工具:
- Charles
- AppScan
- Flash Player (IE浏览器)
- Blazer
- Firebug + AMFExplorer
- Firebug + Flashbug (未测试)
0x02 实战渗透案例
1. 用户名枚举漏洞
- 发现方式:登录处发送
getuserlistbyname操作请求 - 利用方法:参数中输入字母(如"a"),返回以该字母开头的所有用户信息
- 风险:可获取系统用户列表
2. 敏感信息泄露
- 发现方式:登录处发送
getuserbyid请求 - 利用方法:参数填入数字ID,返回该用户的详细信息(包括加密密码)
- 典型问题:开发人员直接执行
select * from xxx返回全部字段 - 工具辅助:使用burp-info-extractor提取敏感信息
3. 管理员账户劫持
- 通过ID枚举获取管理员加密密码
- 登录时抓包修改密码字段为获取的加密密码
- 成功以管理员身份登录
4. 暴力破解
- 方法:将登录数据包发送到Burp的Intruder模块
- 优势:AMF格式的暴力破解可能绕过传统防护
5. SQL注入漏洞
- 触发方式:
- 去掉jsessionid值触发报错
- 使用单引号触发SQL报错
- POC示例:
<string>bbb' and 1=(ordsys.ord_dicom.getmappingxpath((select banner from sys.v_$version where rownum=1), user, user))--</string> <string>bbb' and 1=(ctxsys.drithsx.sn(1,(select user from dual)))--</string>
6. 未授权访问
- 检测工具:burp-unauth-checker
- 示例:去掉jsessionid后可直接获取接收人信息
7. 文件删除漏洞
- 发现方式:请求中存在
delete=false参数 - 利用方法:将参数改为
delete=true - 潜在风险:若filePath未做安全处理,可能导致任意文件删除
- 工具辅助:使用burp-sensitive-param-extractor检测敏感参数
0x03 渗透测试方法论
- 数据格式分析:遇到加密/编码数据不要轻易放弃
- 工具链组合:合理搭配使用反序列化工具和漏洞检测工具
- 参数探测:系统化测试所有可能的参数和操作
- 信息关联:将获取的信息(如用户ID、加密密码)关联利用
- 自动化辅助:利用插件提高测试效率和覆盖率
0x04 防御建议
- 输入验证:对所有AMF请求参数进行严格验证
- 权限控制:确保每个操作都有适当的权限检查
- 信息最小化:避免返回不必要的字段数据
- 错误处理:统一错误响应,避免泄露技术细节
- 参数安全:对文件路径等敏感参数进行严格过滤
- 会话验证:确保所有操作都验证会话有效性
通过系统化的AMF渗透测试方法,安全人员可以有效发现这类接口中的安全隐患,而开发人员则可根据测试点加强防护措施。