Struts2 S2-045远程执行代码漏东

简介: Struts2 S2-045远程执行代码漏东

image.png

Struts2 S2-045远程执行代码漏懂允许公鸡者通过创建恶意的HTTP请求来远程执行系统命令。

具体来说,S2-045漏懂是因为在使用基于Jakarta插件的文件上传功能时,Struts2框架未能正确处理用户输入的错误信息。当进行文件上传时,如果恶意用户修改了HTTP请求头中的Content-Type值,这可能会触发异常处理函数中的逻辑错误,从而使得公鸡者可以在服务器上执行任意命令。

该漏懂影响Struts 2.3.5至2.3.31版本以及2.5至2.5.10版本。为了修复这个漏懂,建议将Apache Struts 2升级到2.3.32或2.5.10.1版,或者切换到不同的文件上传Multipart解析器实现。

总的来说,S2-045漏懂非常严重,因为它可以导致机密数据泄露、重要信息遭到篡改等危害,并且可能导致整个系统被黑课完全控制。因此,对于使用受影响版本的Struts2框架的应用,尽快采取相应的修复措施是至关重要的。

原理

Struts2 S2-045漏懂的原理是远程命令执行。

具体来说,Struts2是一个广泛使用的Web应用框架,它基于MVC(模型-视图-控制器)设计模式,作为控制器负责建立模型与视图之间的数据交互。S2-045漏懂出现在使用Jakarta插件进行文件上传的功能中。当用户上传文件时,Struts2默认会解析HTTP请求头中的Content-Type值。如果解析出现错误,Struts2会执行错误信息中的OGNL(Object-Graph Navigation Language)代码,这可能导致远程命令执行。

这个漏懂的严重性在于,它允许恶意用户通过创建特制的HTTP请求来上传文件,并通过修改Content-Type头来触发漏懂,从而在服务器上执行任意系统命令。这不仅可能导致机密数据泄露、重要信息遭到篡改,还可能使得黑课能够完全控制受影响的系统。

总之,S2-045漏懂的利用涉及到了Web应用框架的文件解析机制和对用户输入的错误处理方式,这些因素结合在一起导致了这一严重的安全风险。

首先,需要明确:复现安全漏懂通常涉及敏感操作,应在授权的环境中进行。

Struts2 S2-045漏懂复现步骤:

环境准备:

设置一个包含Struts2的Web应用,版本需在受影响范围内(例如2.3.5至2.3.31或2.5至2.5.10)。

确保服务器上有可执行文件或命令,以便测试远程命令执行。

image.png

创建恶意payload:

构造一个恶意的Content-Type头,其中包含了OGNL表达式,如multipart/form-data;boundary=%7B(#_memberAccess['']='')%7D。

multipart/form-data;boundary=%7B(#_memberAccess['']='')%7D 是HTTP请求头Content-Type中的一部分,用于定义发送的请求体是多部分类型的数据格式(通常用于文件上传或提交包含多个不同类型字段的表单数据),并且指定了用于分割这些不同部分的边界字符串(boundary)。让我们一步步解析这段内容:

multipart/form-data: 表示请求体是多部分数据类型,这种类型的数据常用于上传文件,因为它可以包含文本字段和二进制数据(如图片、文档等)。

;boundary=: 后面跟着的是边界字符串的定义。边界字符串是一个独一无二的字符串,用于在HTTP请求中分割不同的表单项,确保接收方能够正确解析出各个部分。

%7B(#_memberAccess['']='')%7D: 这是经过URL编码的边界字符串,解码后为{(#_memberAccess['']='')}。这里边界字符串的选择值得注意,因为它看起来像是尝试利用某种特定框架(如Apache Struts2)的漏懂。_memberAccess在Struts2框架中是一个重要的属性,控制着动作类的访问权限。通过设置_memberAccess['']='',理论上可以尝试禁用所有访问限制,尽管实际效果取决于目标系统的具体配置和版本,以及是否存在相关漏懂。

重要提醒:这段内容如果被用于实际的请求中,尤其是尝试利用特定的安全漏懂,必须在完全合法和授权的渗头测试环境下进行。未经授权的渗头测试或利用漏懂是非法且违反网络安全法规的。此外,随着框架和系统的不断更新,曾经的漏懂可能已经被修补,因此这种利用方式可能不再有效。

上传文件触发漏懂:

使用curl或其他HTTP请求工具,发送POST请求到目标应用的文件上传点,确保在请求头中包含上述构造的Content-Type值。

观察结果:

如果服务器响应表明文件上传成功,并且你能够看到OGNL表达式被执行的结果,那么漏懂复现成功。

代码演示(假设合法上传):

curl -F "file=@/path/to/your/file" -H "Content-Type: multipart/form-data; boundary=%7B(#_memberAccess['']='')%7D" http://target.com/upload

这段代码使用curl命令向指定的Web服务器(http://target.com/upload)发送一个HTTP POST请求,用于上传文件。此请求利用了特定的Content-Type头和一个特定的边界值来尝试绕过某些Web应用的安全限制或利用潜在的安全漏懂。下面逐部分解析这段命令:

curl: 是一个强大的命令行工具,用于发送HTTP请求,广泛用于测试Web服务、下载文件等。

-F "file=@/path/to/your/file":

-F 表示发送一个表单形式的POST请求。

"file=@" 指定了表单中的一个字段名为file,其值通过@符号后面跟的文件路径来提供。这里/path/to/your/file是你本地需要上传的文件路径。

-H "Content-Type: multipart/form-data; boundary=%7B(#_memberAccess['']='')%7D":

-H 添加HTTP头信息。

Content-Type: multipart/form-data 指明这是一个多部件表单数据的请求,常用于文件上传。

boundary=%7B(#_memberAccess['']='')%7D 设定了表单数据的边界字符串。边界字符串用于分割不同的表单项。这里,边界值被URL编码了,解码后为{(#_memberAccess['']='')}。这种特殊构造的边界值可能是为了尝试利用某些Web应用框架(如Struts2)的漏懂,通过修改_memberAccess属性来绕过访问控制,从而执行恶意操作。

http://target.com/upload: 目标URL,即文件上传的接收地址。

总结来说,这段命令试图上传一个文件到指定的Web服务器,并且尝试利用了一个特定的Content-Type头和边界值来尝试绕过或利用目标服务器上的安全机制。

安全问题和影响:

远程代码执行:公鸡者可以在没有任何身份验证的情况下远程执行任意代码。

数据泄露:公鸡者可以利用这个漏懂访问敏感信息,包括用户数据、配置文件等。

系统完整性破坏:通过执行恶意命令,公鸡者可以修改或删除关键文件,导致系统不稳定或不可用。

权限提升:如果结合其他漏懂利用,可能导致公鸡者获得更高权限。

持续控制:公鸡者可能会植入后们,以便长期控制受感染的系统。

传播速度快:一旦漏懂公开,自动化工具和蠕虫可能会快速利用此漏懂,加剧危害。

总之,S2-045是一个非常严重的漏懂,它直接威胁到了整个系统的安全性。因此,对于使用受影响版本的Struts2框架的应用,尽快采取修复措施是至关重要的。

练习

访问靶机地址加8080端口

***.***.***.***:8080

看到这个页面就对了

image.png

%{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',233*233)}.multipart/form-data

image.png

相关文章
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
16天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
20天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2577 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
18天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
3天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
2天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
164 2
|
20天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1576 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
22天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
978 14
|
4天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
221 2
|
17天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
735 9