一个用于辅助检测和利用序列化库/API的Burp Suite扩展。
这个有用的扩展最初由Nick Bloor(@nickstadb)为NCC Group开发,主要基于Alvaro Muñoz和Oleksandr Mirosh的工作,Friday the 13th: JSON Attacks,他们在Black Hat USA 2017和DEF CON 25上进行了展示。在他们的工作中,他们审查了一系列Java和.NET的JSON和XML序列化库,发现其中许多支持任意运行时对象的序列化,因此与许多序列化技术一样容易受到攻击——在反序列化期间或之后执行的代码片段(POP gadgets)可以通过序列化对象的属性进行控制,通常为任意代码或命令执行开辟了潜在可能。
还包括支持YAML和AMF等更多格式的附加模块,基于Moritz Bechler的论文Java Unmarshaller Security - Turning your data into code execution和工具marshalsec。
该Burp Suite扩展实现了被动和主动扫描,用于识别和利用易受攻击的库。
Freddy可以通过监视HTTP请求中的类型说明符或其他签名,以及通过监控HTTP响应中目标库抛出的异常,来被动检测潜在危险的序列化库和API的使用。例如,FastJson库使用JSON字段$types来指定序列化对象的类型。
Freddy包含主动扫描功能,尝试检测并在可能的情况下利用受影响的库。
主动扫描尝试使用三种方法检测易受攻击库的使用:基于异常、基于时间和基于协作。
在基于异常的主动扫描中,Freddy将数据插入HTTP请求,这些数据应触发已知的目标特定异常或错误消息。如果在应用程序的响应中观察到该错误消息,则会报告一个问题。
在某些情况下,可以使用基于时间的有效载荷进行检测,因为操作系统命令执行会在反序列化期间触发,并且该操作会阻塞执行直到操作系统命令完成。Freddy使用包含ping [-n|-c] 21 127.0.0.1的有效载荷,以在这些情况下引入时间延迟。
基于协作的有效载荷通过发出nslookup命令解析Burp Suite协作生成的域名,或尝试从域名加载远程类到Java应用程序来工作。Freddy每60秒检查一次新的协作问题,并在问题列表中标记为RCE (Collaborator)。
目前支持以下目标(v2.0新增的以斜体表示):
Java
.NET
基于AGPL-3.0发布,更多信息请参见LICENSE
Freddy使用gradle构建系统。要构建jar包,只需在根目录下运行gradle jar。这将运行测试,如果一切正确,将在build/libs目录中创建jar文件。