log4j2burpscanner

本文为log4j2burpscanner插件的用法说明

0x00 写在前面

本工具仅为企业测试漏洞使用,严禁他人使用本工具攻击

请勿将本项目技术或代码应用在恶意软件制作、软件著作权/知识产权盗取或不当牟利等非法用途中。实施上述行为或利用本项目对非自己著作权所有的程序进行数据嗅探将涉嫌违反《中华人民共和国刑法》第二百一十七条、第二百八十六条,《中华人民共和国网络安全法》《中华人民共和国计算机软件保护条例》等法律规定。本项目提及的技术仅可用于私人学习测试等合法场景中,任何不当利用该技术所造成的刑事、民事责任均与本项目作者无关。

0x01 插件介绍

​ 本插件是为了扫描CVE-2021-44228漏洞而写的,主要是该漏洞影响较大,且不易发现,所以写了一个burp的插件,进行被动化扫描,方便测试。

​ 插件继承的是burp的passive接口,所以拥有passive的一些特性,比如在一次burp记录中,不会对同一数据包进行第二次扫描、比如默认不会扫描repeater模块里的数据包等等。

​ 插件的特点是用最少的数据包尽可能探测更多的漏洞,所以不会去每个参数进行发包,只会在一个数据包内把所有的参数点进行payload的探测。

0x02 如何使用?

Releases下载最新jar包,在burp的Extender模块进行导入,插件页面如下(当存在漏洞,该页面才会有请求和响应)

插件页面

如果出现插件页面,且可以正常使用(正常扫描),那么就不用管报错,大部分都是jdk导致的ui图形的报错

访问一个存在漏洞的站点,进行代理至burp:

image-20211224000136631

进行登录,使Proxy模块有登录的记录:

image-20211224000229756

过一会就可以看到插件在报告漏洞了,插件页面:

image-20211224001145696

显示的是参数点0出现漏洞,可以找数字为0的payload,可以看到是username处的问题

Dnslog平台的请求:

image-20211224001207713

如果要对靶场测试,最好把自定义参数的√全部去掉,因为一些靶场没有对其他请求头处理,除非特殊情况的靶场需要自定义参数,普通靶场采用默认即可检测出来

这里检测也可以进行右键数据包Send to log4j2 Scanner进行对单个数据包的扫描,也可以达到同样效果

image-20211224001508381

0x03 插件参数介绍

主要是两个模块

dnslog configuration

0x001 log4j2 Passive Scanner 为被动扫描开关,勾选就会进行被动扫描,不勾选就不会扫描

0x002 isuseceye 是否使用ceye.io的平台

0x003 ceyetoken ceye.io的用户token

0x004 ceyednslog ceye.io的用户记录域名

0x005 isuseprivatedns 是否使用自定义dnslog

0x006 isip 自定义dnslog是否为ip(主要针对内网的ip监听)

0x007 privatednslogurl 自定义的dnslog记录域名

0x008 privatednsResponseurl 自定义dnslog记录域名响应查看地址,详细自定义dnslog配置可以到此处查看

0x009 Save configuration 保存配置

0x010 Restore/Loading latest params 恢复默认参数

0x011 Test dnslog delay 测试与dnslog的延迟

custom params

0x001 jndiparam 传入的jndi参数,可以使用类似于j${::-n}di:进行替换,达到bypass效果

0x002 dnsldaprmi 可选,传入dns、ldap、rmi三个参数

0x003 white lists 白名单,可使用通配符进行配置,如*.gov.cn*.edu.cn也可以设置成指定的域名后缀结尾,如qq.com,这样任何以qq.com结尾的域名都不会进行扫描

0x004 headers lists 自定义请求头的参数名

0x005 test UserAgentTokenXff 是否测试User-Agent、token(包含jwt一些关键字) 、常见XFF头参数等

0x006 test Xfflists 是否测试所有xff头参数

0x007 test Cookie 是否测试所有Cookie

0x008 test RefererOrigin 是否测试Referer、Origin参数

0x009 test Contenttype 是否测试Contenttype参数

0x010 test Accept 是否测试Accept等参数

0x04 插件常见问题解答

一些小问题在项目的FAQ里已有解答,这里说说常见的问题

0x001 插件不生效(插件右键Send to log4j2 Scanner按钮没有反应、插件不会被动扫描)

主要问题在于jdk版本的问题,后续发现还与burp的版本有关,甚至与电脑的操作系统有关系

测试成功的是MACOS jdk10.0.2启动2021.5版本的burp,burp的Java environment1.8_231或者1.8_151都是可以正常运行的

现在已知的是burp的Java environment高版本的jdk是不能成功的,如jdk15 jdk14等等,小版本号太高也可能无法成功,如1.8_301

总体来说这个问题是个玄学问题,但是使用和我一样的指定版本号95%是可以正常运行的

0x05 最后

打算创个vx交流群,反馈工具以及解决问题,发vx到jtsqrj@gmail.com,备注加群