Apache Struts2框架特征及漏洞复现

Apache Struts2 是一个流行的开源 Web 应用框架,用于开发 Java EE Web 应用。它使用并扩展了 Java Servlet API,鼓励开发者采用模型-视图-控制器(MVC)架构。该框架为开发者提供了丰富的标签和实用工具,以创建易于维护和扩展的企业级 Web 应用。

Web特征

URL格式:一般st2开发的应用,会以.do/.action为结尾后缀,但是spingweb同样可以这样结尾来定义相关接口,所以通过在相关接口追加actionErrors参数,st2应用会触发报错,而spring的话,类似user.do/的访问和user.do的结果一样。

网页显示4xx反证:Struts2 的配置文件路径固定,访问返回 403而非常规404,可证明框架存在,比如:/WEB-INF/struts.xml/WEB-INF/classes/struts.properties/WEB-INF/classes/struts-default.xml

页面源码中的标签库特征:Struts2 提供专属 UI 标签库(前缀 s:),页面源码中会暴露明显标识:

//类型1
<%@ taglib prefix="s" uri="http://struts.apache.org/tags/core" %> <!-- 核心标签 -->
<%@ taglib prefix="s" uri="http://struts.apache.org/tags/form" %>  <!-- 表单标签 -->
<%@ taglib prefix="s" uri="http://struts.apache.org/tags/bean" %>  <!-- Bean 标签 -->

// 类型2
<s:form action="login.action" method="post">
  <s:textfield name="username" label="用户名" />
  <s:password name="password" label="密码" />
  <s:submit value="登录" />
</s:form>

错误页面与异常堆栈特征:访问不存在的 Action 或触发业务异常时,Struts2 会返回框架专属错误,如异常堆栈中会出现 Struts2 核心包名 / 类名

//500 异常堆栈特征
java.lang.NullPointerException
    at com.opensymphony.xwork2.ActionSupport.execute(ActionSupport.java:101)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)

fofa语法:app="Struts2" && (url=".action" || url=".do")

漏洞复现

常见的漏洞复现和探测可以使用工具自动探测利用。

工具1:天狐渗透工具箱-社区版V2.0纪念版/Struts2全版本漏洞探测利用

image-20251125213754040

工具2:vulmap

image-20251125215047864

posted @ 2025-12-02 12:57  shinianyunyan  阅读(51)  评论(0)    收藏  举报