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

相关文章
|
网络性能优化 虚拟化 云计算
云计算——CPU虚拟化
云计算——CPU虚拟化
1561 0
|
6月前
|
机器学习/深度学习 监控 安全
102_灾难性遗忘:微调过程中的稳定性挑战
在大型语言模型(LLM)的微调过程中,我们常常面临一个关键挑战:当模型学习新领域或任务的知识时,它往往会忘记之前已经掌握的信息和能力。这种现象被称为"灾难性遗忘"(Catastrophic Forgetting),是神经网络学习中的经典问题,在LLM微调场景中尤为突出。
518 1
|
8月前
|
SQL 存储 运维
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
本文介绍了 Apache Doris 在菜鸟的大规模落地的实践经验,菜鸟为什么选择 Doris,以及 Doris 如何在菜鸟从 0 开始,一步步的验证、落地,到如今上万核的规模,服务于各个业务线,Doris 已然成为菜鸟 OLAP 数据分析的最优选型。
459 2
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
|
机器学习/深度学习 监控 安全
什么是用户行为分析(UBA)?使用用户行为分析进行数字身份保护
用户行为分析(UBA)利用数据分析和机器学习,通过建立用户行为基线检测异常,有效识别潜在安全威胁。与传统基于规则的安全工具不同,UBA能减少误报、提高检测精度,尤其擅长发现内部威胁和缓慢攻击。UBA通过动态阈值和实时监控,帮助组织快速响应异常行为,保护敏感数据。例如,AD360结合UBA功能,可实时监控用户活动,及时发现并阻止异常操作,如恶意文件访问或权限滥用,确保网络安全。
2258 5
|
弹性计算 监控 安全
打造安全云环境:深入理解阿里云权限体系
本文将探讨阿里云上的权限管理,帮助理解其背后原理并掌握实践方法。主要内容分为三部分:一是访问控制基本原理,强调避免使用root身份,介绍权限策略语言和类型;二是五种典型的授权方式,包括服务级、操作级和资源级授权等;三是多账号环境下的集中化权限管理,重点介绍如何使用管控策略实现安全合规的集中管控。通过这些内容,用户可以更好地理解和应用阿里云的权限管理体系,确保云资源的安全与高效管理。
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
【飞天技术沙龙—阿里云金融量化策略回测Workshop】在上海诺亚财富中心正式举行,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。
|
开发框架 安全 应用服务中间件
【文件上传绕过】——解析漏洞_IIS7.0 | IIS7.5 | Nginx的解析漏洞
【文件上传绕过】——解析漏洞_IIS7.0 | IIS7.5 | Nginx的解析漏洞
1107 9
|
开发框架 安全 .NET
Web安全-一句话木马
Web安全-一句话木马
1793 5
|
网络协议 Linux 开发者
探索Linux下的`dig`命令:DNS查询的利器
`dig`是Linux下强大的DNS查询工具,适用于系统管理员、网络工程师和开发者。它支持查询A、MX、NS、CNAME等记录类型,以及反向DNS。高级功能包括跟踪查询过程、显示额外信息、指定查询服务器和批量查询。学习`dig`能助你更好地理解DNS工作原理和优化网络问题。
再见手动编码,标准自动化编码规则来帮忙!
标准管理员小S面临数据标准编码管理的挑战:编码格式不统一、编码值不可读活相关性差,手动管理耗时易出错。Dataphin新推出“标准编码规则”功能,可以实现一次配置批量生成编码,并通过自增序列、固定字符串和所属标准集编码的组合,保证编码相关性和灵活性,同时提供了编码规则变更后的批量订正功能,大大简化管理工作。小S对此表示高度满意。
546 0