vlambda博客
学习文章列表

Freddy:一款基于活动被动扫描方式的Java&.NET应用程序漏洞扫描工具

今天给大家介绍的是一款名叫Freddy的开源工具,该工具的功能基于主动/被动式扫描,在Freddy的帮助下,研究人员可以快速查找Java和.NET应用程序中的反序列化安全问题。

Freddy介绍

工具引入了一款Burp Suite插件来检测并利用目标引用程序中序列化库/ API中的安全漏洞。

早在2017年美国Black Hat黑客大会以及DEF CON25上,研究人员Alvaro Muñoz和Oleksandr Mirosh曾发布过一份标题为《Fridaythe 13th: JSON Attacks》【https://www.blackhat.com/us-17/briefings.html#friday-the-13th-json-attacks】的研究报告。研究人员在报告中指出,他们对大量Java和.NET应用程序中的JSON以及XML序列化库进行了安全分析,并且发现大多数库都支持对运行时对象进行序列化操作,而这种情况很容易引发反序列化安全问题,并导致任意代码/命令执行漏洞出现。

这款插件由Nick Bloor(@nickstadb)开发,基于的也是Alvaro Muñoz和Oleksandr Mirosh的研究成果。

该插件实现了主动式和被动式扫描这两种方式,可以识别并利用目标代码库中的安全漏洞。

功能介绍

被动式扫描

Freddy可以通过识别类型标识符、HTTP请求签名或HTTP响应来被动检测目标代码库或API中潜在的序列化/反序列化漏洞。比如说,代码库FastJson使用了一个JSON域“$types”来指定序列化对象的类型。

主动式扫描

Freddy引入了主动式扫描功能,可以在扫描的过程中,尝试对受影响的代码库进行漏洞利用测试。主动式扫描在检测和利用目标漏洞时使用了下列三种方法:基于异常的检测、基于时间的检测和基于Collaborator的检测。

基于异常的检测

在基于异常的主动扫描过程中,Freddy会向HTTP请求中注入测试数据,并尝试触发异常或错误信息。如果在目标应用程序所返回的响应信息中观察到了错误信息,那么就说明这里存在安全问题。

基于时间的检测

在某些情况下,基于时间的测试Payload可以用来检测安全漏洞,因为操作系统的命令执行会在反序列化的过程中被触发执行,在这个过程中,其他活动都会被阻止,直到操作系统命令执行完成。Freddy使用的Payload中包含了“ping [-n|-c] 21 127.0.0.1”,目的就是为了实现命令的延迟执行。

基于Collaborator的检测

基于Collaborator的Payload使用了nslookup命令来解析Burp Suite Collaborator生成的域名,并且会尝试从这个域名向Java应用程序中加载远程类。Freddy每隔60秒就会检查一次Collaborator的问题反馈,并以下列形式将问题记录在日志文件中。

RCE(Collaborator)

支持的扫描对象

目前该工具支持的扫描对象有:

Java

BlazeDSAMF 0 (detection, RCE)

BlazeDSAMF 3 (detection, RCE)

BlazeDSAMF X (detection, RCE)

Burlap(detection, RCE)

Castor(detection, RCE)

FlexJson(detection)

Genson(detection)

Hessian(detection, RCE)

Jackson(detection, RCE)

JSON-IO(detection, RCE)

JYAML(detection, RCE)

Kryo(detection, RCE)

Kryousing StdInstantiatorStrategy (detection, RCE)

ObjectInputStream(detection, RCE)

Red5AMF 0 (detection, RCE)

Red5AMF 3 (detection, RCE)

SnakeYAML(detection, RCE)

XStream(detection, RCE)

XmlDecoder(detection, RCE)

YAMLBeans(detection, RCE)

.NET

BinaryFormatter(detection, RCE)

DataContractSerializer(detection, RCE)

DataContractJsonSerializer(detection, RCE)

FastJson(detection, RCE)

FsPicklerJSON support (detection)

FsPicklerXML support (detection)

JavascriptSerializer(detection, RCE)

Json.Net(detection, RCE)

LosFormatter(detection, RCE) – Note not a module itself, supported throughObjectStateFormatter

NetDataContractSerializer(detection, RCE)

ObjectStateFormatter(detection, RCE)

SoapFormatter(detection, RCE)

Sweet.Jayson(detection)

XmlSerializer(detection, RCE)

项目地址

Freddy:【https://github.com/nccgroup/freddy】

许可证协议

本项目遵循开源许可证协议agpl-3.0。

*参考来源:

https://github.com/nccgroup/freddy

FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM