java代码审计 | struts2框架路由详解

2024-12-20 6 0

引言

一般在拿到一套源码的时候,一开始学习代码审计的可能有点无从下手,在不用工具的情况下,不知道去怎么找路由,去看哪个目录的代码,本文详细讲解遇到java的struts2框架的时候,在不借助工具的情况下如何进行审计,毕竟了解原理才是正解,而不是只会用工具。

struts2框架路由分析

以这套源码为例,拿到一套源码首先看代码的结构,可以看到webapps有很多目录,admin,CardSolution,emap等,再展开很容易判断出这是他不同子系统的代码。

java代码审计 | struts2框架路由详解插图

比如emap模块,展开看WEB-INF

java代码审计 | struts2框架路由详解插图1

WEB-INF 目录的基本概念

WEB-INF 是 Java Web 应用中专门用于存放配置文件、类文件和资源文件的目录。它是一个保密的目录,不会被直接访问。例如,浏览器不能直接访问 WEB-INF 中的文件,但这些文件对应用的正常运行至关重要。下面是 WEB-INF 目录中常见的几个关键子目录和文件:

•WEB-INF/web.xml :这是 Web 应用的部署描述符文件,包含了整个应用的配置信息,如 Servlet、过滤器、监听器的配置,以及其它一些关键的上下文参数。

•WEB-INF/classes/ :该目录下存放 Java 类文件和应用的资源文件(例如,配置文件、图片等)。其中的类文件通常包括应用的业务逻辑、控制器(Servlet)、过滤器等。

WEB-INF/lib/ :该目录存放 Web 应用所依赖的 JAR 包

接着我们直接来看web.xml文件,看看是用了什么框架,搜StrutsPrepareAndExecuteFilter,如果有就是用了struts2,如果都没有,那就只有servlet,像这个就是用了struts2。

java代码审计 | struts2框架路由详解插图2

这里补充一下这一段配置的意思,这段代码使用的是 Struts2 框架的过滤器配置,Struts2使用了不同的机制来处理请求,这里的 StrutsPrepareAndExecuteFilter 是 Struts2 框架的核心组件之一,用于拦截所有进入的 HTTP 请求并进行处理。

•filter-name :定义了过滤器的名称,这里命名为 struts2。
•filter-class :指定了 Struts2 框架中的过滤器类 StrutsPrepareAndExecuteFilter。这个过滤器类是 Struts2 请求处理的核心,它负责准备请求并执行相应的 Action 类。

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
</filter>
Struts 框架的核心类,Struts1.x,我们现在能见到的一般都是struts2了,像传统的struts很少了,ActionServlet是Struts 1.x框架的核心 Servlet 类,同理在web.xml里面搜索如果有这个类那就是用了struts1框架。

ActionServlet

•描述 :ActionServlet 是 Struts 框架的核心 Servlet 类,类似于 Spring MVC 的 DispatcherServlet。它负责拦截所有的 HTTP 请求并将它们分发到合适的 Action 类进行处理。这个类通常会在 web.xml 配置文件中进行定义。
•功能 :ActionServlet 在应用启动时加载,并作为控制器的中央入口点。它负责根据配置的 URL 映射规则,将请求转发给特定的 Action 类。它还负责加载 struts-config.xml 配置文件中的配置信息,管理全局设置和路径映射。
•位置 :org.apache.struts.action.ActionServlet

filter 配置
<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
知道是struts2框架后,然后就去classes目录下看struts2的配置文件,包含了两个配置文件,那路由的定义就在那里。

java代码审计 | struts2框架路由详解插图3


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

海外的bug-hunters,不一样的403bypass
电子数据取证 | 一次电子数据取证的尝试与反思
结合ppid欺骗和远线程注入实现dll挖空
从何同学视频看开源协议的重要性
技术实践 | 通过大模型解决高危WEB应用识别问题
Burp插件编写简易教程

发布评论