未完待续...
一、基础知识
1、Struts介绍
Struts是一个特别常用的开源web框架,用于扩展JAVA Servlet API并使用了模型(M),视图(V),控制(C)体系结构。使用这个框架,我们可以用各种标准技术(如 JSP、JavaBeans、XML等)创建可维护、可扩展并且灵活的 Web 应用程序。
之后,Struts的Java EE Web框架的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts 2”,原Struts的1.x版本产品称为“Struts 1”。Struts项目并行提供与维护两个主要版本的框架产品——Struts 1与Struts 2。所以struts项目的两个产品就是 struts1和struts 2。
![](https://img.haomeiwen.com/i6277797/2e37baf70b83b966.png)
Struts2 是一个MVC框架,控制器是通过Struts2 分派servlet过滤器以及拦截器进行实现,模型是通过Actions进行实现,而视图则是结果类型和结果的结合。值栈和OGNL提供共同的路线、链接以及与其他组件之间的集成。
2、OGNL表达式
- OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一种功能强大的表达式语言(Expression Language,简称为 EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。 Struts框架使用开源项目OGNL作为默认的表达式语言。
- OGNL 有一个上下文(Context)概念,支持对象方法调用,如:×××.doSomeSpecial()。
- 支持类静态的方法调用和值访问,支持赋值操作和表达式串联。
- OGNL 三要素:表达式(Expression)、根对象(Root Object)、上下文环境(Context)。
二、Struts2漏洞扫描利用工具
1、Struts2-Scan
https://github.com/HatBoy/Struts2-Scan
三、实例分析
参考:
1、https://www.jianshu.com/p/72c8492064c9
2、https://www.jianshu.com/p/72c8492064c9
网友评论