Struts2漏洞分析系列初识Struts2

0x00 概述Struts2是以MVC架构为基础的WEB框架,通过WEB Filter的方式内嵌在WEB服务器中进行使用。0x01 搭建搭建一个WEB项目通过M

很多朋友对于Struts2漏洞分析系列初识Struts2和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

0x01 搭建

构建WEB项目,通过Maven依赖引入Struts2依赖dependency groupIdorg.apache.struts/groupId artifactIdstruts2-core/artifactId version2.0.5/version /dependency /dependencies 添加Tomcat启动环境,配置部署的WAR包,以及Struts依赖引入WAR安装Struts2 IDEA插件(方便后续配置高亮等,直接在Plugins中搜索struts2即可),在resources目录下新建struts.xml(如果安装了插件,新建的时候可以直接选择XML)配置文件-Struts Config来创建)?xml version=’1.0’encoding=’UTF-8’?DOCTYPE struts PUBLIC ‘-//Apache Software Foundation//DTD Struts Configuration 2.0//EN’ ‘http://struts.apache.org /dtds/struts-2.0.dtd’ struts /strutsAdd struts2 filterfilter filter-namestruts2/filter-name filter- classorg.apache.struts2.dispatcher.FilterDispatcher/filter-class /filter 过滤器映射过滤器- 在web.xml 中namestruts2/filter-name url-pattern/*/url-pattern /filter-mapping 欢迎文件列表欢迎文件索引.jsp/welcome-file /welcome-file-list 完成以上步骤后,一个基本的struts2环境就搭建完成了。您只需根据需要进行配置即可。完整的目录结构如下:

0x02 Struts2基本使用方式

2.0 action == struts2?

如果你在学习Struts2相关漏洞之前,尝试过当脚本小子,使用工具攻击过带有ST2-xxx漏洞的网站,你会发现大多数情况下我们都是攻击.action后缀。文档。

那么带有.action后缀的文件就一定会使用Struts2吗?答案是,至少目前是的。没有其他开源框架使用.action 作为其标志之一,除非开发人员自定义Filter。

2.1 struts.xml

struts.xml是Struts2中的重要配置,所有与Struts2相关的配置都在这里进行。

默认模板如下:

?xml version=’1.0’encoding=’UTF-8′?DOCTYPE struts PUBLIC ‘-//Apache Software Foundation//DTD Struts Configuration 2.0//EN’ ‘http://struts.apache.org/dtds/struts-2.0.dtd ‘struts/struts2.1.0包括

在一个大型系统中,不可避免地会有很多配置,并且每个配置可能只与一组模块相关联。这个时候,把它们全部写在一个xml中可能不会太臃肿。这时候就必须考虑通过包含语法来解耦。Struts2也支持这种写法,通过include引入其他xml文件。

例如,我有一个user.xml:

?xml version=’1.0’encoding=’UTF-8′?DOCTYPE struts PUBLIC ‘-//Apache Software Foundation//DTD Struts Configuration 2.0//EN’ ‘http://struts.apache.org/dtds/struts-2.0.dtd ‘struts package name=’wwfy’ extends=’struts-default’ action name=’login’ class=’wwfy.user.LoginAction’ !–省略其他Action配置–/action action name=’logout’ class=’ wwfy.user.LogoutAction’!–省略Action的其他配置–/action/package/struts.随后,我只需要通过include标签引入到struts.xml中进行配置即可:

?xml version=’1.0’encoding=’UTF-8′?DOCTYPE struts PUBLIC ‘-//Apache Software Foundation//DTD Struts Configuration 2.0//EN’ ‘http://struts.apache.org/dtds/struts-2.0.dtd ‘struts include file=’user.xml’//struts2.1.1常量

Constant标签用于设置一些内置常量的值,比如我们可能最了解的devMode。

?xml version=’1.0’encoding=’UTF-8′?DOCTYPE struts PUBLIC ‘-//Apache Software Foundation//DTD Struts Configuration 2.0//EN’ ‘http://struts.apache.org/dtds/struts-2.0.dtd ‘struts !–设置开发模式–constant name=’struts.devMode’ value=’true’/!–设置编码格式为GB2312–constant name=’struts.i18n.encoding’ value=’GB2312 ‘/!–省略其他配置信息–/struts2.1.2包

package标签管理某个模块下的所有动作,可以类比Java中的package。

财产

Struts2漏洞分析系列初识Struts2

有必要吗

描述

姓名

是的

包名,作为其他包应用这个包的标记

延伸

设置此包继承其他包

名称空间

设置包命名空间

抽象的

设置为抽象包

extends:当前包的继承包。默认情况下需要继承struts-default包。

namespace:命名空间,默认为”,也可以理解为/。这时候你的默认路由就在根目录下。如果设置为/user,则当前包下的所有action都会在user目录下匹配。到达。

2.1.3 动作

action标签用来设置一个action类,这里会根据名字自动定义路由,就是我们经常看到的xxx.action。

Struts2漏洞分析系列初识Struts2

物业名称

有必要吗

功能说明

姓名

是的

请求的操作名称

班级

Action处理类对应具体路径

方法

在Action中指定方法名

转换器

指定Action使用的类型转换器

name:当前操作的名称。后续的路由也是根据名字来设置的。比如这里的name是login,那么后续的路由就是login.action。

class:当前动作对应的类。该类相当于MVC中的M和C,即Model层和Controller层,因为具体的业务处理代码都体现在该类中,并且该类在后续使用中也作为Bean类使用在调度中。

method:将被调用的Action类的方法名称。如果不指定,则默认调用Action的execute方法。

Struts2漏洞分析系列初识Struts2

2.1.4 结果

结果标签用于控制返回的视图。

物业名称

有必要吗

功能说明

姓名

相应的操作返回逻辑视图的名称。默认成功。

类型

返回结果类型,默认为dispatcher

name:设置返回值。当action类执行方法并返回对应的值时,这里会根据name属性进行匹配。如果匹配,则返回对应的视图。

result name=’success’hello.jsp/resultresult name=’error’index.jsp/result2.1.5 拦截器

Struts2中有一个拦截器的概念,它与WEB容器中的Filter类似,但又有些不同。拦截器用于在每个请求到达真正的Action之前进行一系列的预处理,并在请求结束后进行一系列的预处理。破坏行动。

Struts2内置了一系列拦截器,会根据你的Action设置相应的拦截处理操作,但是开发者仍然可以通过interceptors标签来自定义拦截器。

拦截器拦截器名称=’拦截器名称’class=’拦截器类’/拦截器堆栈名称=’拦截器堆栈名称’拦截器-ref名称=’拦截器名称’/interceptor-stack/interceptors2.1.6示例

?xml 版本=’1.0′ 编码=’UTF-8′ ?DOCTYPE struts PUBLIC ‘-//Apache Software Foundation//DTD Struts Configuration 2.1//EN’ ‘http://struts.apache.org/dtds/struts-2.1.dtd ‘ struts 包名称=’default’ extends=’struts-default’ action name=’product’ class=’com.javatpoint.Product’ result name=’success’welcome.jsp/result /action /package /struts 上面是一个最基本的例子,设置了一个名为product的action。如果以后想访问的话,其实是通过product.action来访问的。

用户评论

Struts2漏洞分析系列初识Struts2
冷青裳

终于来学习 struts 了!这篇文章写得真好,把新手也能看懂的框架介绍清楚了。期待后续文章深入讲解 struts2 的漏洞!

    有12位网友表示赞同!

Struts2漏洞分析系列初识Struts2
笑傲苍穹

之前没怎么接触Struts2,没想到会存在这么多风险啊! 这篇文章的分析很透彻,以后一定要注意使用 Struts2 时的安全问题!

    有17位网友表示赞同!

Struts2漏洞分析系列初识Struts2
羁绊你

"初识 Struts2" 还真合适,我刚开始学也没想到它会被黑,感觉有点吓人。后面的文章一定好好学习!希望你能讲解一些具体的防护措施,这样可以让我们更好地保护系统安全。

    有10位网友表示赞同!

Struts2漏洞分析系列初识Struts2
凉话刺骨

这篇文章只是入门级的内容吧? 想深入理解这些漏洞和防御机制,还需要更详细的讲解啊!期待后续文章能提供更具体的操作步骤和案例分析。

    有17位网友表示赞同!

Struts2漏洞分析系列初识Struts2
墨染天下

(个人觉得) 文章过于简略了,没有提到哪些常见的 Struts2 组件及其漏洞点。 建议结合实例进行讲解,更容易理解。

    有12位网友表示赞同!

Struts2漏洞分析系列初识Struts2
青墨断笺み

Struts2 真的有那么危险吗?我一直用它开发项目也没遇到什么问题啊!感觉这篇文章有点小耸人听闻。 我得仔细研究一下它的安全机制,看看是不是真的存在风险。

    有20位网友表示赞同!

Struts2漏洞分析系列初识Struts2
万象皆为过客

学习新技术很累人啊,这篇文章让我对 Struts2 有了初步的了解,不过漏洞分析和防护措施还需要深入学习才能掌握。希望作者能持续更新优质的内容!

    有19位网友表示赞同!

Struts2漏洞分析系列初识Struts2
矜暮

这篇介绍不错,入门很容易!但是我觉得讲解那些复杂的漏洞代码可能会让人感觉比较吃力, 比如可以增加一些图示或者动画来帮助理解吗?

    有19位网友表示赞同!

Struts2漏洞分析系列初识Struts2
封心锁爱

对小白用户来说,这篇文章写的太专业了。希望作者能像平时一样用通俗易懂的语言解释这些技术细节,这样更容易被普通人理解!

    有20位网友表示赞同!

Struts2漏洞分析系列初识Struts2
琴断朱弦

文章结构清晰,内容介绍全面了 Struts2 的基本概念和潜在安全风险。期待后续的文章深入探讨Struts 漏洞的特定案例分析和防御措施。

    有16位网友表示赞同!

Struts2漏洞分析系列初识Struts2
∞◆暯小萱◆

我很想了解哪些常见的 Struts2 应用场景以及相应的安全风险。希望作者能提供一些实际案例,这样可以更直观的感受到的漏洞带来的危害!

    有12位网友表示赞同!

Struts2漏洞分析系列初识Struts2
伪心

感谢作者分享这一系列文章!对于新手来说,入门学习 struts 真是个不错的途径,期待后续的深入讲解!

    有8位网友表示赞同!

Struts2漏洞分析系列初识Struts2
滴在键盘上的泪

Struts2 的漏洞非常常见和危险, 这篇文章提醒了我要加强安全性检查。 希望介绍一些开源工具或者框架,能够更加高效地评估 Struts2 应用的安全风险!

    有9位网友表示赞同!

Struts2漏洞分析系列初识Struts2
夏至离别

我一直觉得 Struts2 很好用,速度很快,但是现在看来安全问题确实值得重视! 希望后续文章能详细讲解如何检测和修复 Struts2 中的漏洞。

    有11位网友表示赞同!

Struts2漏洞分析系列初识Struts2
♂你那刺眼的温柔

这篇文章让我对 Struts2 的安全性有了深刻的体会!希望能够学习到一些具体的防护技巧,保护我自己开发的项目不受攻击。

    有8位网友表示赞同!

Struts2漏洞分析系列初识Struts2
伤离别

非常赞赏作者将 Struts2 漏洞分析做得如此清晰易懂! 期待后续文章更深入地探讨不同类型漏洞的修复方案和最佳实践。

    有18位网友表示赞同!

Struts2漏洞分析系列初识Struts2
又落空

这篇文章很有教育意义!很多开发者可能没有意识到 Struts2 的安全隐患, 希望更多人能够了解这些问题,提高开发安全的意识 。

    有13位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/126607.html

(0)
小su的头像小su
上一篇 2024年9月1日 下午9:48
下一篇 2024年9月1日 下午9:56

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注