0x00 AMF简介

AMF(Action Message Format)是一种二进制的数据格式,即数据(actionscript里面的Object, Array, Boolean, Number等)经过了序列化成二进制。

有amf0和amf3,当数据流中有0×11标记时,表示这个数据属于AMF3。

AMF基于HTTP协议,大致处理过程:
获取客户端请求(request) - 服务端反序列化请求 - 处理请求 - 序列化响应(response) - 返回http响应给客户端

AMF的传输效率较高。

AMF相关参考资料:
https://www.cnblogs.com/yaozhongxiao/archive/2013/04/12/3016302.html
https://my.oschina.net/yan5845hao/blog/692474
https://www.biaodianfu.com/amf.html

0x01 测试工具

burpsuite插件

https://github.com/nccgroup/AMFDSer-ngng
有些响应解码返回空,报异常,请求都没问题。
相关issue:
https://github.com/nccgroup/AMFDSer-ngng/issues/2
反序列化并编码为xml的效果

可以转为xml给sqlmap

给intruder模块

类似的还有
https://github.com/khai-tran/BurpAMFDser
都是将AMF反序列化再利用xtream库编码为xml。

charles

appscan

安装flash player IE

blazer

https://github.com/ikkisoft/blazer

firebug

firebug+amfexplorer
firebug+flashbug
//这两种组合未测试。

0x02 实战案例

某管理系统

先安装flash player,抓包发现是二进制格式,可以发现是AMF

利用burp插件即可反序列化并编码为xml格式。

撕开遮蔽的外衣,是时候探索无尽的宝藏了。

用户名枚举

登录处会发一个请求,执行getuserlistbyname的操作,参数中输入a就把a开头的用户信息返回了。

敏感用户信息泄漏

类似用户名枚举,登录处会发一个getuserbyid的请求,参数填一个数字id即可返回该id用户的详细信息,包括加密后的密码。
有些开发可能为了方便前端调用,后端直接执行select * from xxx把用户所有信息都返回前端。
这些信息可以利用burp-info-extractor提取,方便进一步渗透。

利用id几乎可以获取系统所有用户大量敏感信息(包括管理员)

尝试利用管理员登录,抓包改密码为获取的加密后的密码

成功登录

暴力破解

登录数据包发送到intruder即可

错误信息泄漏

去掉jsessionid值触发报错

单引号出发了sql报错,明显可以注入

SQL注入

poc:

<string>bbb&apos; and 1=(ordsys.ord_dicom.getmappingxpath((select banner from sys.v_$version where rownum=1),user,user))--</string>

poc:

<string>bbb&apos; and 1=(ctxsys.drithsx.sn(1,(select user from dual)))--</string>

未授权访问

插件burp-unauth-checker可以方便检测未授权访问漏洞。
去掉jsessionid,未授权即可获取接收人信息。


文件删除漏洞



竟然有个delete=false,那改为true会发生什么......

意料之内,成功删除该文件,无法下载了,如果filePath没做安全处理,可能可以删除任意文件。
可以利用burp-sensitive-param-extractor方便检测提取各种敏感参数,比如这里的filePath,方便进行测试,避免遗漏。

0x03 结语

遇到加密/编码的数据,不要轻易放弃,解出明文后,可能就是无尽的漏洞!

点击收藏 | 4 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖