• J3 - 白起
  • 技术(Log4j # 安全)

这两天有没有被 Log4j 爆出的漏洞给惊到!

作为一个行业人的角度来看(小白),我是在知道漏洞的第一时间看了一下相关的新闻也大概是知道这个漏洞是怎么一个来龙去脉了。

先来看看官方漏洞描述:

Apache Log4j2 是一个基于 Java 的日志记录工具。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。

在大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。攻击者利用此特性可通过该漏洞构造特殊的数据请求包,最终触发远程代码执行。

该漏洞危害等级:严重

影响范围:2.0 <= Apache log4j2 <= 2.14.1

解释起来就是,当系统使用 log4j 通过 ${} 形式将用户输入的信息打印到日志时,那这就会出现安全问题

演示

1、新建一个基本 maven 项目

2、添加如下依赖

<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.14.0</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.14.0</version>
</dependency>

3、编写 Java 代码

public class Log4jErrorTest {private static final Logger logger = LogManager.getLogger();public static void main(String[] args) {// 注意这个变量String error = "${java:vm}";logger.error("==============危险打印,{}", error);}}

4、结果

当然看到这里是不是觉得,这好像也没啥太危险的呀,那我想对于这样的获取系统参数值的好像确实没啥危险的顶多就是日志信息不一样而已。

看到这是,我们是不是要细思极恐一下

那,如果有黑客把 error 变量的值变为一个可访问的链接,log4j 是不是也会像执行参数一样,去执行它呢!

答案是显然的,会。

现在我们细思极恐一下,将一个类似 ${jndi:rmi//危险链接} 的字符串往目标程序中输入,那是不是就可以在受攻击服务器中执行。

如果真那样,随便注入一个数据库操作进行数据的修改是不是一下就飞黄腾达,人生巅峰,当然我不建议这样做哈。

原理

我们重点关注的就是字符串替换,log4j 根据占位符的原理将 {} 替换为需要占位的变量,而实现这一功能就是 log4j 中的一个 Lookup 功能。

官方 Lookup 文档地址:https://logging.apache.org/log4j/2.x/manual/lookups.html

而,我了解到这个功能是依据 JNDI 的,所以漏洞就是实现一个我们自定义的JNDI程序,往目标服务器程序发送,如果他们有打印我们输入的字符串,那么就会中招而在他们的系统中执行我自定义的程序

注意,是我们的程序会在他们的服务器运行,这是最大的危险。(阿里定义危险系数10,好像已经是满级危险了)

解决方式

方式一:简单粗暴点,就是不用 log4j 日志

方式二:升级版本,直接升到 2.15.0 版本

如果,项目没有用 log4j 日志而引入 Maven 依赖的时候又被关联进项目了,那可以使用 Maven 依赖排除功能。

来看看我的项目是怎么查是否存在 log4j 依赖的把!

本人维护的项目:https://gitee.com/j3_baiqi/communication

1、通过搜索项目 jar 包发现本人项目还真有 log4j 依赖,但我本人非常清楚我是没有引入 log4j 相关依赖的,那就只有一种可能了,被其他依赖给关联进来了。

2、Maven help 插件查询 jar 包依赖关系

首先要安装该插件

3、进入要分析 pom.xml 文件,点击下面我标注的就可以看到所有依赖关系了。

4、接着就是找到log4j 的依赖,就可以看到依赖关系,如图

5、右键log4j 依赖选择排除,最后刷新 maven 就可以发现项目没有 log4j 相关依赖啦,非常安全,完美解决。

好了,今天的内容到这里就结束了,关注我,我们下期见

联系方式:

QQ:1491989462,做个好友,来个点赞之交。


  • 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。

  • 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。

  • 感谢您的阅读,十分欢迎并感谢您的关注。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

CSDN:J3 - 白起

掘金:J3-白起

知乎:J3-白起

这是一个技术一般,但热衷于分享;经验尚浅,但脸皮够厚;明明年轻有颜值,但非要靠才华吃饭的程序员。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Log4j重大漏洞、看看我怎么重现与解决相关推荐

  1. Log4j 2漏洞(CVE-2021-44228)的快速响应

    简介 2021 年 12 月 9 日,在Log4j的 GitHub 上公开披露了一个影响多个版本的 Apache Log4j 2 实用程序的高严重性漏洞 CVE-2021-44228.CVSSv3 1 ...

  2. OpenShift Security (9) - 用 RHACS 扫描 Log4j 安全漏洞,屏蔽不安全镜像部署

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在 OpenShift 4.9 + RHACS 环境中验证,需要先完成<OpenShift Security (2) - ...

  3. Log4j CVE-2021-44228 漏洞及Spring Boot解决方案

    Log4j 的2 到 2.14 版本最近爆出了一个比较大的漏洞,漏洞编号是CVE-2021-44228.本篇对该漏洞进行简单介绍, 并介绍Spring Boot项目如何解决该漏洞. CVE-2021- ...

  4. 关于Log4j高危漏洞的反思

    你用Log4j 吐了吗? 反正我是吐了一个月了. 2021年11月份底,log4j官网发布了log4j的漏洞,消息一出,整个IT互联网行业几乎都是后院着火.漏洞的原理很简单,但是其危害相当于把服务器变 ...

  5. django mysql 2006_Django (2006, 'MySQL server has gone away') 本地重现与解决

    最近我们的Django项目供Java Sofa应用进行tr调用时, 经常会出现一个异常: django.db.utils.OperationalError: (2006, 'MySQL server ...

  6. Monkey测试手机BUG重现及解决方法

    Monkey测试手机BUG重现及解决方法 参考文章: (1)Monkey测试手机BUG重现及解决方法 (2)https://www.cnblogs.com/ckie/p/6883843.html (3 ...

  7. 紧急!Log4j 史诗级漏洞来袭,已引起大规模入侵,速速自查!

    1.漏洞简介 Apache Log4j 2是一款优秀的Java日志框架.该工具重写了Log4j框架,并且引入了大量丰富的特性.该日志框架被大量用于业务系统开发,用来记录日志信息.由于Apache Lo ...

  8. Log4j执行漏洞修复教程

    12 月 10 日凌晨,Apache 开源项目 Log4j2 的远程代码执行漏洞细节被公开,漏洞威胁等级为:严重. Log4j2 是一个基于 Java 的日志记录工具.它重写了 Log4j 框架,引入 ...

  9. Log4j史诗级漏洞,我们这些小公司能做些什么?

    事件背景 12月10日,看到朋友圈中已经有人在通宵修改.上线系统了.随即,又看到阿里云安全.腾讯安全部门发出的官方报告:"Apache Log4j2存在远程代码执行漏洞",且漏洞已 ...

最新文章

  1. 源码WIFI--扫描和连接
  2. BUU--[MRCTF2020]PixelShooter
  3. java如何获得集合的长度_Java集合长度
  4. python需要的英语单词怎么写_如何删除Python中的非英语单词?
  5. boot spring 跨域注解_每日一问学技术:@SpringBootApplication注解干了个啥?
  6. c#中抽象类和接口异同
  7. win7 旗舰版 64位注册dll(regsvr32)失败解决方法
  8. Vbs 脚本编程简明教程之一
  9. Android开发——GPS定位
  10. c语言析构函数的作用,详解析构函数出现的必要性
  11. 塔塔露也能看懂的服务器配置pytorch,TensorFlow教程
  12. 华为手机刷微博体验更好?技术角度的分析和思考,Android基础72问
  13. 干货 | PID算法在广告成本控制领域的应用
  14. 网游点卡接口说明文档
  15. HDU 2096 小明A+B
  16. 申请博客的波折历程~~
  17. Picasso 源码 学习(一) 图片加载流程
  18. 模拟电路60(三角波产生电路)
  19. MGRE GRE PPP协议综合运用
  20. 《程序员》2012年9期精彩内容:IT运维自动化

热门文章

  1. mmap(内存映射)和shm(共享存储)
  2. postgresql使用教程
  3. go获取get请求参数
  4. ubuntu下安装caffe时,在python中import caffe报错。
  5. 《Left 4 Dead》作弊指令大全
  6. CreateMutex用法
  7. esp8266--arduinoJson在线解析V6版本的使用
  8. onmouseover和onmouseout的使用
  9. [Bash基础] 判断字符串相等
  10. 设置VirtualBox共享文件夹的方法