CVE-2019-0230 s2-059 漏洞分析1
需积分: 0 72 浏览量
更新于2022-08-03
收藏 257KB PDF 举报
CVE-2019-0230 s2-059 漏洞分析
Apache Struts 框架中的 CVE-2019-0230 漏洞是远程代码执行(RCE)漏洞,影响范围为 Struts 2.0.0 - Struts 2.5.20。官方建议升级到 2.5.22 或更高版本。该漏洞的成因是 Struts 框架在强制时对分配给某些标记属性的属性值执行双重计算,以便可以传递一个值,该值将在呈现标记的属性时再次计算。
在 Struts 标记属性内强制使用 OGNL 表达式时,如果攻击者能够修改请求中的属性,使原始 OGNL 表达式传递到属性而无需进一步验证,则当作为请求呈现标记时,属性中包含的提供的 OGNL 表达式将计算。例如,在 `<s:a id="%{skillName}" href="%{url}">List available Employees</s:a>` 中,如果攻击者能够修改 `skillName` 或 `url` 属性,可能会导致远程代码执行。
在 debug 过程中,我们可以看到在 `ComponentTagSupport` 类的 `doStartTag()` 函数的第一行,`this` 的 `href` 属性就是 `xxx.jsp`。然后,在 `populateParams()` 函数中,我们可以看到 `uiBean` 的各种属性的设置,例如 `setId`、`setCssClass`、`setCssStyle` 等。
在 `AbstractUITag` 类的 `populateParams()` 操作中,我们可以看到 `uiBean` 的 `setId` 操作,例如 `uiBean.setId(this.id)`。通过跟进 `findString` 和 `findValue` 函数,我们可以看到 Struts 框架如何处理 OGNL 表达式的计算。
因此,在使用 Struts 框架时,需要小心处理 OGNL 表达式的使用,以免导致远程代码执行漏洞。同时,升级到最新版本的 Struts 框架也可以避免该漏洞。
知识点:
1. Apache Struts 框架的 CVE-2019-0230 漏洞是远程代码执行(RCE)漏洞。
2. 漏洞的成因是 Struts 框架在强制时对分配给某些标记属性的属性值执行双重计算。
3. Struts 标记属性内强制使用 OGNL 表达式时,如果攻击者能够修改请求中的属性,使原始 OGNL 表达式传递到属性而无需进一步验证,则可能会导致远程代码执行。
4. 在 debug 过程中,需要关注 `ComponentTagSupport` 类的 `doStartTag()` 函数和 `AbstractUITag` 类的 `populateParams()` 操作。
5. 使用 Struts 框架时,需要小心处理 OGNL 表达式的使用,以免导致远程代码执行漏洞。
6. 升级到最新版本的 Struts 框架可以避免该漏洞。
ali-12
- 粉丝: 34
- 资源: 328
最新资源
- 基于java的教学资料管理系统的设计和实现.docx
- 基于java的老年人体检管理系统的设计和实现.docx
- 基于java的旅游推荐系统的设计和实现.docx
- 基于java的旅游网站的设计和实现.docx
- 基于java的美妆购物网站的设计和实现.docx
- 基于java的绿城郑州爱心公益网站的设计和实现.docx
- 基于java的民宿管理系统的设计和实现.docx
- 基于java的民族婚纱预定系统的设计和实现.docx
- 基于java的民谣网站的设计和实现.docx
- 基于java的企业信息管理系统的设计和实现.docx
- 基于java的企业OA管理系统的设计和实现.docx
- 基于java的农产品直卖平台的设计和实现.docx
- 基于java的汽车维修预约服务系统的设计和实现.docx
- 基于java的汽车租赁系统的设计和实现.docx
- 基于java的汽车销售系统的设计和实现.docx
- 基于java的社区医疗综合服务平台的设计和实现.docx