当前位置: 首页 > 网络应用技术

LO4J2脆弱性复制过程和解决方案

时间:2023-03-06 22:12:44 网络应用技术

  最近,阿里巴巴云团队发现并报告了Log4J2中的漏洞。

  因为Log4J2是一个宽阔的基础文库,所以它具有较大的影响范围。影响程度是严重的,这是多么严重?让我们说,这是灾难性的。

  引用公共帐户:“ Kobayashi编码”图片:

  正常使用log4j2时,可以::可以::

  但是,如果您的日志包含“”的开头,则“”的内容将被分开解析和处理。

  如果“”的内容被这样包装:它可能会触发此漏洞。

  繁殖的具体过程是:

  可以看出,我通过spring-boot-starter-log4j2间接引用了log4j2。引入的特定软件包版本是这样:

  让我们写一个您要首先执行的程序:

  该程序是在我的计算机上打开计算器程序。

  注意:请勿在此处编写软件包名称。我在这里浪费了很多时间。编写软件包名称可能会在以后的执行中导致错误。

  然后,我们找到一个空目录,复制Java文件并将其编译:

  然后我在当前目录中执行:

  目的是启动HTTP服务器。当然,您也可以使用NGINX或JAVA程序来执行此操作,只要您可以用作HTTP服务器即可。

  启动后,您可以在浏览器中验证:

  让我们从本地启动LDAP服务器。

  https://github.com/mbechler/marshalsec从此处下载代码,然后执行包装汇编:

  包装后,在目标目录中执行:

  上述命令的目的是启动LDAP服务器并将我们的程序注册到LDAP服务器。特别是,它在LDAP服务器上注册,并使用HTTP服务器地址(HTTP Server始于Python启动)到LDAP服务器。

  正常启动后,LDAP将开始监视端口

  最后,我们编写一个记录日志程序:

  执行后的效果:

  可以看出,我的计算器是对的。您可以执行语句和代码逻辑,然后像可以执行此操作一样!

  在上面的程序中,有一系列的代码要注意:

  如果将其设置为false或评论,则计算器将不会被调整,也就是说,攻击程序将不会执行。

  Java还修复了此利用点,增加了对LDAP参考远程工厂类的加载的限制。在Oracle JDK 11.0.1、8U191、7U201、6U211之后,com.sun.sun.jndap.trusturlcodebase.trusturlcodebase的默认值默认值的默认值与false相对应3149

  这是否意味着高版本的JDK不会有漏洞?

  不,仍然有一种攻击方法。不要幸运。有关详细信息,请参阅:https://paper.seebug.org/942/ JDK-8U191

  临时补救方案经常在互联网上说是修改配置,例如:

  原理实际上是相同的,也就是说,Log4j2的查找是禁用的。

  目前,官方版本2.15.0已维修。可以升级此版本。使用上述程序修改版本编号后,我发现无法再现漏洞了

  当然,您还可以手动编译Log4J2的源代码,然后上传到Maven私人服务器,然后修改公共依赖升级版本。

  请注意,编译Log4J2源代码时,您需要是1.9上方JDK的版本,因为它具有这样的东西