freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

java代码审计 | struts2框架路由详解
LYL 2024-12-10 17:42:33 112771
所属地 广东省

引言

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

struts2框架路由分析

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

image.png

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

image.png

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。

image.png

这里补充一下这一段配置的意思,这段代码使用的是 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的配置文件,包含了两个配置文件,那路由的定义就在那里。

可试读前30%内容
¥ 19.9 全文查看
9.9元开通FVIP会员
畅读付费文章
最低0.3元/天
# Struts2 # Java代码审计
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 LYL 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
LYL LV.4
这家伙太懒了,还未填写个人描述!
  • 22 文章数
  • 12 关注者
Java代码审计中的SSRF漏洞深度解析
2025-03-14
企业云安全中的Kubernetes攻击手法及防御策略
2025-03-06
XSS 漏洞深度解析:攻防对抗与高阶利用
2025-03-05
文章目录