Struts 2.0.0 至 2.1.8.1 远程命令执行(CVE-2010-1870)

简介: Struts 2.0.0 至 2.1.8.1 远程命令执行(CVE-2010-1870)

前言

CVE-2010-1870 是一个存在于 Apache Struts 2 中的,特别是在 Struts 2 动作框架中。这个安全缺陷允许远程通过操纵动态方法调用(DMI)功能在服务器上执行任意代码。当 DMI 功能启用时,框架可以接受和处理来自用户输入的方法名称。这可以通过发送包含恶意方法名称的特制请求来利用,从而导致任意代码执行。

影响版本

该影响 Apache Struts 版本 2.1.0 至 2.2.1.1。

利用

可以通过构造包含恶意表达式的请求来利用此,这些表达式包含在动作参数中,服务器会对其进行评估并执行。具体而言,当 Struts 2 的配置允许动态方法调用时,恶意用户可以通过在 URL 中指定方法名称来执行任意代码。这可能导致远程代码执行(RCE),并且攻击者能够完全控制受影响的服务器。

缓解措施

为了解决此问题,建议采取以下措施:

  1. 禁用 DMI 功能:在 struts.xml 配置文件中禁用动态方法调用功能。
  2. 升级 Apache Struts:升级到已修复此的更高版本的 Apache Struts。

春秋云镜是一个专注于网络安全培训和实战演练的平台,旨在通过模拟真实的网络环境和场景,提升用户的网络安全防护能力和实战技能。这个平台主要提供以下功能和特点:


实战演练:


提供各种网络安全攻防演练场景,模拟真实的网络事件,帮助用户在实际操作中掌握网络安全技术。

场景涵盖Web安全、系统安全、网络安全、社工等多个领域。


复现:


用户可以通过平台对已知的安全进行复现,了解的产生原因、利用方法和修复措施。

通过实战操作,帮助用户掌握利用和防护的技能。


教学培训:


提供系统化的网络安全课程,从基础到高级,覆盖多个安全领域,适合不同水平的用户。

包含理论讲解和实战操作,帮助学员全面提升网络安全知识和实战能力。


竞赛与评测:


定期举办网络安全竞赛,如CTF(Capture The Flag)比赛,激发学员的学习兴趣和动力。提供个人和团队的安全能力评测,帮助学员了解自己的安全技能水平。


资源共享:


平台提供丰富的学习资源,包括教程、工具、案例分析等,方便用户随时查阅和学习。

用户可以在社区中分享经验和资源,互相交流和学习。


春秋云镜适合网络安全从业人员、学生以及对网络安全感兴趣的个人,通过在平台上进行不断的学习和实战演练,可以有效提升网络安全技能和防护能力。

介绍

Apache Struts 2 是一个开源的 Java Web 应用程序框架,用于开发基于 MVC(Model-View-Controller)架构的现代化应用程序。它是 Apache Software Foundation 下的一个项目,并在开发社区中广泛使用。以下是对 Apache Struts 2 的详细介绍:

主要特性

  1. 基于 MVC 架构
  • Struts 2 实现了经典的 MVC 设计模式,将应用程序的业务逻辑(Model)、用户界面(View)和用户输入(Controller)分离。这种架构使得应用程序的开发和维护更加清晰和高效。
  1. 灵活的请求处理机制
  • Struts 2 使用拦截器(Interceptor)链来处理用户请求。拦截器是一个独立的处理单元,可以在请求到达控制器之前或响应返回之前执行。开发者可以自定义和扩展拦截器以实现特定的需求。
  1. OGNL 表达式语言
  • Struts 2 使用 Object-Graph Navigation Language (OGNL) 作为默认的表达式语言。这使得开发者可以方便地访问和操作 Java 对象及其属性。
  1. 强大的表单处理和验证
  • Struts 2 提供了强大的表单处理和验证功能,支持多种数据验证方式。开发者可以通过 XML 配置或注解(Annotations)定义验证规则。
  1. 国际化支持
  • Struts 2 支持国际化(i18n),允许开发者轻松地创建多语言的应用程序。通过资源文件,可以将应用程序的文本内容翻译成不同的语言。
  1. 插件机制
  • Struts 2 具有丰富的插件机制,允许开发者扩展框架的功能。常用的插件包括 REST 插件、Spring 插件、JFreeChart 插件等。

核心组件

  1. Actions(动作类)
  • Action 是 Struts 2 的核心组件之一,用于处理用户请求。每个 Action 类对应一个用户请求,负责业务逻辑的处理,并返回一个结果视图(View)。
  1. Interceptors(拦截器)
  • 拦截器是处理请求的核心机制。它们可以在请求处理链中的不同阶段执行特定的任务,例如身份验证、日志记录、输入验证等。
  1. Result(结果)
  • Result 是 Action 执行完毕后返回的视图。它可以是 JSP 页面、模板文件、重定向 URL 等。开发者可以配置不同的 Result 类型来渲染响应。
  1. Configuration(配置)
  • Struts 2 的配置可以通过 XML 文件(如 struts.xml)或注解来完成。配置文件定义了 Action 类、拦截器、结果类型等信息。

优势和应用场景

  1. 易于开发和维护
  • Struts 2 的基于 MVC 的架构使得应用程序的开发和维护更加简便,特别适用于大型企业级应用的开发。
  1. 扩展性强
  • 插件和拦截器机制使得 Struts 2 具有高度的扩展性,开发者可以根据需求自定义功能模块。
  1. 社区支持
  • 作为 Apache 基金会的项目,Struts 2 拥有庞大的用户社区和丰富的文档资源,开发者可以方便地找到支持和帮助。

典型应用

Struts 2 广泛应用于企业级 Web 应用程序的开发中,例如:

  • 电子商务平台
  • 内容管理系统(CMS)
  • 客户关系管理系统(CRM)
  • 在线教育平台

总结

Apache Struts 2 是一个功能强大且灵活的 Java Web 应用框架,适用于各种复杂的 Web 应用程序开发。通过其 MVC 架构、丰富的插件和强大的配置功能,Struts 2 为开发者提供了一个高效的开发平台。

复现

打开

靶场页面有一个选择语言的功能


因为是 2010 年的老了,直接网上找工具


链接

https://pan.baidu.com/s/17-0ggQirbDyWaD8jSzW_vg?pwd=6666

复现完整的 URL 路径

复现完整的 URL 路径

使用工具获取信息(能否利用漏洞)

接下来就是执行命令拿到 flag

相关文章
|
安全 网络安全 PHP
Pluck-CMS-Pluck-4.7.16 远程代码执行(CVE-2022-26965)
Pluck-CMS-Pluck-4.7.16 远程代码执行(CVE-2022-26965)
|
8月前
|
前端开发 JavaScript 安全
剖析跨域问题始末及其解决方案——前端必备交叉知识(一)
跨域问题是前端开发中的常见挑战,了解并掌握不同的跨域解决方案能帮助你更高效地进行开发工作。本文对同源策略、跨域以及解决跨域的三种方案: CORS、JSONP、代理等跨域技术进行了介绍。选择合适的跨域解决方案非常重要。 在实际开发中,推荐优先考虑使用 CORS,因为它是现代浏览器支持的标准,且安全性较高。如果服务器无法修改,则可以考虑使用代理。如果是特殊情况,可以使用 JSONP,但要注意安全性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错
|
自然语言处理 安全 网络安全
WBCE CMS v1.5.2 远程命令执行(CVE-2022-25099)
WBCE CMS v1.5.2 远程命令执行(CVE-2022-25099)
|
安全 关系型数据库 网络安全
Taogogo Taocms v3.0.2 远程代码执行(CVE-2022-25578)
Taogogo Taocms v3.0.2 远程代码执行(CVE-2022-25578)
|
监控 安全 前端开发
Zabbix Sia Zabbix 逻辑(CVE-2022-23134)
Zabbix Sia Zabbix 逻辑(CVE-2022-23134)
|
JSON 安全 API
CMS识别
【10月更文挑战第03天】
235 5
|
JSON 开发框架 网络安全
[网络安全] Dirsearch 工具的安装、使用详细教程
[网络安全] Dirsearch 工具的安装、使用详细教程
8379 0
|
SQL 安全 网络安全
ED01-CMS v20180505 文件上传(CVE-2022-28525)
ED01-CMS v20180505 文件上传(CVE-2022-28525)
ED01-CMS v20180505 文件上传(CVE-2022-28525)
什么是 CSRF?如何防止 CSRF 攻击?
CSRF 攻击是一种常见且危险的 Web 安全漏洞,攻击者可以通过伪造用户请求,执行恶意操作,作为程序员,为了防御 CSRF 攻击,常见的策略包括使用 CSRF Token、检查 Referer 或 Origin 头、设置 SameSite Cookie 属性以及双重提交 Cookie。 因为程序员对于 CSRF 攻击可以做的事情还是很有限,所以,承担主要责任的是安全部门或者运维部门,但是作为程序员,我们需要具备这些安全意识,在安全等级比较高的需求中也需要把这些安全因素考虑在内。