从webshell浅析spring mvc的安全性

试想你是黑客,而咱们运用spring mvc+velocity建立体系号码大全,即使大门打开答应上载jsp,你能拿shell?

咱们知道,webshell能够运转的条件无非于1.能够解析 2.能够履行并完结一些关键词挖掘功能性的工作,比方读取文件

如今来看web mvc,mvc的精髓在于“分权”(这个词是我乱编的),我想表达的意思是:他能将数据拜访逻辑、流程操控逻辑、事务逻辑、视图显现逻辑全部剥脱离,这对开发者来说,优点在于使得体系愈加明晰、便于保护;而以安全的角度来看,运用mvc也大大提高安全性,即在view层你没有“权力”做更多工作。咱们就拿jsp webshell来举比如。

先说jsp为什么能写出webshell?

jsp与其他模板技能有一个严重的差异即是他最终是编译为servlet来运转的。简单来说,你能够理解为,jsp即是一个servlet。这个特性使得jsp拥有比其他模板技能更大的能量。只需你情愿,咱们能够彻底能够在jsp中直接写java代码、履行任何想要的东西,不用装备web.xml,jsp直接通过连接完结servlet一切的工作,这种“超频”这使得jsp底子跟php、asp无异了,java谨慎的mvc“分权”彻底被损坏,这时jsp webshell天然应运而生。

spring mvc的呈现极好的处置了这个疑问,咱们通过分权从头让烘托层的东西持续做烘托的工作,于是开发乐了,安全工程师也乐了

一个完好的交互过程是这样的

1.用户恳求

2.web容器匹配映射,如抓出*.htm的送到第三步

3.匹配的映射送到对应的controller里做处置

4.视图解析(包含获取模型,获取vm\jsp\xls这种模板文件),通常结构会一致装备viewResolver,如装备一个bean运用vm做烘托

5.输出

来看这个过程安全在哪里

1.咱们成功上载了一个jsp webshell,拜访这个地址(假定拿到这个地址,只是假定),装备里没有*.jsp,第2步找不到映射,失利

2.咱们成功上载了一个jsp webshell,拜访这个地址,装备里有*.jsp,第3步找不到controller,失利

3.咱们成功上载了一个jsp webshell,拜访这个地址,装备里有*.jsp,第3步有对应controller,第4步viewResolver里没有配jsp,失利

能完成以上3过程的可能性底子没有,由于你要能改我装备、修正java文件,那你底子不需要webshell了:)

此刻你可能会想,那我不一定要用jsp写shell啊,vm是不是也能写?

首要vm相比jsp弱小许多,能够说,他从出世即是一个朴实的烘托层的东西。

kxlzx大牛提出过能够运用#set ($exec =

"kxlzx")$exec.class.forName("java.lang.Runtime").getRuntime().exec("calc")

-        indexRead arguments from command-line "http://www.shoudashou.com"

-        indexRead arguments from command-line "http://www.4lunwen.cn"

-        indexRead arguments from command-line "http://www.zx1234.cn"

-        indexRead arguments from command-line "http://www.penbar.cn"

-        indexRead arguments from command-line "http://www.whathappy.cn"

-        indexRead arguments from command-line "http://www.lunjin.net"

-        indexRead arguments from command-line "http://www.ssstyle.cn"

-        indexRead arguments from command-line "http://www.91fish.cn"

-        indexRead arguments from command-line "http://www.fanselang.com"

这类句子来履行体系级指令,

,可是相同的,他的解析依靠controller,你没有java文件的支撑,就不会解析这个vm,就只能是以文本方式输出这句话,这一点我做过测验。

在测验中我发现,直接拜访不通过解析的vm文件有一个特性

Chrome下

从webshell浅析spring mvc的安全性

时间: 2024-12-17 05:24:39

从webshell浅析spring mvc的安全性的相关文章

浅析Spring MVC和Spring BOOT之间的简化小秘密

从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷.但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的朋友能深刻体会到这一痛苦.因为即使是开发一个Hello-World的Web应用,都需要我们在pom文件中导入各种依赖,编写web.xml.spring.xml.springmvc.xml配置文件等.特别是需要导入大量的jar包依赖时,我们需要在网上查找各种jar包资源,各个jar间可能存在着各种依赖关系,

浅析Spring MVC工作机制

1.如何使用Spring MVC? 在web.xml中配置一个DispatcherServlet DispatchServlet初始化的时候会去寻找一个在应用程序的WEB-INF目录下的配置文件,命名规则是:servletName-servlet.xml  其中servletName是在部署描述符(web.xml)中Dispatcherservlet的名字. 可以在所谓的配置文件中,扩展路径映射关系.定义视图解析器.定义业务逻辑处理流程规则. 此外,也可以把Spring MVC的配置文件放在应用

Spring mvc 原理浅析

2.2. 数据的绑定 前面说过了,SpringMVC是方法级的映射,那么Spring是如何处理方法签名的,又是如何将表单数据绑定到方法参数中的?下面我们就来讨论这个问题.2.2.1. 处理方法签名 首先,我们可以在方法签名中放入@CookieValue注解参数,Spring自动将Cookie值绑定到参数中:同理@RequestHeader可 以绑定报文头的属性值:同时我们还可以将Servlet API如HttpServletRequest.HttpServletResponse.HttpSess

Spring MVC,HTTP Status 400 ,jQuery

一.先看下4xx错误的说明 [转载] http status 400,http 400,400 错误 [参考] status code 400, Bad Request (§10.4.1) 4 请求失败4xx 4xx应答定义了特定服务器响应的请求失败的情况.客户端不应当在不更改请求的情况下重新尝试同一个请求.(例如,增加合适的认证信息).不过,同一个请求交给不同服务器也许就会成功. 4.1 400 Bad Request 请求中的语法错误.Reason-Phrase应当标志这个详细的语法错误,比

servlet/struts1/struts2/spring mvc 的线程安全问题

线程安全的概念: 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 线程安全问题都是由全局变量及静态变量引起的. 若每个线程中对全局变量.静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的:若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全. 在Java里,线程安全一般体现在两个方面:  1.多个thread对同一个java

《Spring MVC学习指南》一书具有很大的欺骗性

2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul Deck著于2014年,林催二人于2015年翻译,2016年第6次印刷.我在淘宝上购买时就询问是哪个版本,店小二确实搞不清.我看了淘宝店此书的编辑推荐.目录.内容推荐,仍然看不出是哪个版本. 书买来,我稍微翻了一下,确认是基于Spring MVC 2.5的.这就问题大了,现在3.1版以后,方法完全不同变化很大,

Java企业通用平台框架:Bootstrap、HTML5、jQuery、Spring MVC、Mybatis、Hibernate、高性能、高并发

1.适配所有设备(PC.平板.手机等),兼容所有浏览器(Chrome.Firefox.Opera.Safari.IE6~IE11等),适用所有项目(MIS管理信息系统.OA办公系统.ERP企业资源规划系统.CRM客户关系管理系统.网站等). 2.快速开发,敏捷的数据持久层解决方案. 2.1.事务自动处理. 2.2.O/R Mapping基于注解,零配置XML,便于维护,学习成本低. 2.3.接口和实现分离,不需写数据持久层代码,只需写接口,自动生成添加.修改.删除.排序.分页.各种条件的查询等S

Spring MVC全局异常处理与拦截器校检

在使用Spring MVC进行开发时,总是要对系统异常和用户的异常行为进行处理,以提供给用户友好的提示,也可以提高系统的安全性. 拦截系统响应错误 首先是拦截系统响应错误,这个可以在web.xml中配置,根据错误代码跳转到相应的提示页面.这里要注意一个问题,错误处理页面所用到的静态资源最好是直接写在页面中,或者同一个文件夹下,因为如果用户访问了一个系统不存在的路径,例如:**/ss/kk/ll/tt.jsp这样就会有404错误就会跳转到相应的处理页面,但是这个处理页面中的静态资源的路径就会变成*

[源码]Bootstrap、jQuery、HTML5、Spring MVC、Mybatis、Hibernate、安全权限、高性能、高并发

功能特点: 1.适配所有设备(PC.平板.手机等),兼容所有浏览器(Chrome.Firefox.Opera.Safari.IE等),适用所有项目(MIS管理信息系统.OA办公系统.ERP企业资源规划系统.CRM客户关系管理系统.网站.管理后台等). 2.快速开发,敏捷的数据持久层解决方案. 2.1.事务自动处理. 2.2.O/R Mapping基于注解,零配置XML,便于维护,学习成本低. 2.3.接口和实现分离,不需写数据持久层代码,只需写接口,自动生成添加.修改.删除.排序.分页.各种条件