前言
CVE-2010-1870 是一个存在于 Apache Struts 2 中的,特别是在 Struts 2 动作框架中。这个安全缺陷允许远程通过操纵动态方法调用(DMI)功能在服务器上执行任意代码。当 DMI 功能启用时,框架可以接受和处理来自用户输入的方法名称。这可以通过发送包含恶意方法名称的特制请求来利用,从而导致任意代码执行。
影响版本
该影响 Apache Struts 版本 2.1.0 至 2.2.1.1。
利用
可以通过构造包含恶意表达式的请求来利用此,这些表达式包含在动作参数中,服务器会对其进行评估并执行。具体而言,当 Struts 2 的配置允许动态方法调用时,恶意用户可以通过在 URL 中指定方法名称来执行任意代码。这可能导致远程代码执行(RCE),并且攻击者能够完全控制受影响的服务器。
缓解措施
为了解决此问题,建议采取以下措施:
- 禁用 DMI 功能:在
struts.xml
配置文件中禁用动态方法调用功能。 - 升级 Apache Struts:升级到已修复此的更高版本的 Apache Struts。
春秋云镜是一个专注于网络安全培训和实战演练的平台,旨在通过模拟真实的网络环境和场景,提升用户的网络安全防护能力和实战技能。这个平台主要提供以下功能和特点:
实战演练:
提供各种网络安全攻防演练场景,模拟真实的网络事件,帮助用户在实际操作中掌握网络安全技术。
场景涵盖Web安全、系统安全、网络安全、社工等多个领域。
复现:
用户可以通过平台对已知的安全进行复现,了解的产生原因、利用方法和修复措施。
通过实战操作,帮助用户掌握利用和防护的技能。
教学培训:
提供系统化的网络安全课程,从基础到高级,覆盖多个安全领域,适合不同水平的用户。
包含理论讲解和实战操作,帮助学员全面提升网络安全知识和实战能力。
竞赛与评测:
定期举办网络安全竞赛,如CTF(Capture The Flag)比赛,激发学员的学习兴趣和动力。提供个人和团队的安全能力评测,帮助学员了解自己的安全技能水平。
资源共享:
平台提供丰富的学习资源,包括教程、工具、案例分析等,方便用户随时查阅和学习。
用户可以在社区中分享经验和资源,互相交流和学习。
春秋云镜适合网络安全从业人员、学生以及对网络安全感兴趣的个人,通过在平台上进行不断的学习和实战演练,可以有效提升网络安全技能和防护能力。
介绍
Apache Struts 2 是一个开源的 Java Web 应用程序框架,用于开发基于 MVC(Model-View-Controller)架构的现代化应用程序。它是 Apache Software Foundation 下的一个项目,并在开发社区中广泛使用。以下是对 Apache Struts 2 的详细介绍:
主要特性
- 基于 MVC 架构
- Struts 2 实现了经典的 MVC 设计模式,将应用程序的业务逻辑(Model)、用户界面(View)和用户输入(Controller)分离。这种架构使得应用程序的开发和维护更加清晰和高效。
- 灵活的请求处理机制
- Struts 2 使用拦截器(Interceptor)链来处理用户请求。拦截器是一个独立的处理单元,可以在请求到达控制器之前或响应返回之前执行。开发者可以自定义和扩展拦截器以实现特定的需求。
- OGNL 表达式语言
- Struts 2 使用 Object-Graph Navigation Language (OGNL) 作为默认的表达式语言。这使得开发者可以方便地访问和操作 Java 对象及其属性。
- 强大的表单处理和验证
- Struts 2 提供了强大的表单处理和验证功能,支持多种数据验证方式。开发者可以通过 XML 配置或注解(Annotations)定义验证规则。
- 国际化支持
- Struts 2 支持国际化(i18n),允许开发者轻松地创建多语言的应用程序。通过资源文件,可以将应用程序的文本内容翻译成不同的语言。
- 插件机制
- Struts 2 具有丰富的插件机制,允许开发者扩展框架的功能。常用的插件包括 REST 插件、Spring 插件、JFreeChart 插件等。
核心组件
- Actions(动作类)
- Action 是 Struts 2 的核心组件之一,用于处理用户请求。每个 Action 类对应一个用户请求,负责业务逻辑的处理,并返回一个结果视图(View)。
- Interceptors(拦截器)
- 拦截器是处理请求的核心机制。它们可以在请求处理链中的不同阶段执行特定的任务,例如身份验证、日志记录、输入验证等。
- Result(结果)
- Result 是 Action 执行完毕后返回的视图。它可以是 JSP 页面、模板文件、重定向 URL 等。开发者可以配置不同的 Result 类型来渲染响应。
- Configuration(配置)
- Struts 2 的配置可以通过 XML 文件(如 struts.xml)或注解来完成。配置文件定义了 Action 类、拦截器、结果类型等信息。
优势和应用场景
- 易于开发和维护
- Struts 2 的基于 MVC 的架构使得应用程序的开发和维护更加简便,特别适用于大型企业级应用的开发。
- 扩展性强
- 插件和拦截器机制使得 Struts 2 具有高度的扩展性,开发者可以根据需求自定义功能模块。
- 社区支持
- 作为 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