话说到盖哥我继前段时间各个行业同时进行各个版本平台的安全测试,为此大忙特忙了一段时间,之后就开始重返之前的工作内容了。
经过之前的工作,也开始有点了解Web安全相关的知识了,虽然买的书还没怎么看,但那时在工作中了解了一些xss,csrf,sql注入等等相关的知识以及怎么去防御。
上周又被甩了一个锅过来,其中一个就是标题描述的缺陷,字面意思翻译过来就是【通过篡改http请求类型来绕过Web授权及认证】,分析了下appscan的攻击案例的时候我是一脸萌比的:本来是get类型的请求,把get换成一个不存在的请求类型竟然能正常请求并且返回正常的网页内容。
利用postman模拟正常请求,用fiddler拦截请求并修改请求类型为SHIT,竟然真的能正常返回(解释下背景,平台带apache和tomcat)。
另外设置`tomcat的web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>Allowed methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted methods</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
也没有任何效果。
后来想在apache中拦截掉不存在或者不想接收的请求,才找到解决方案:修改apache/conf/httpd.conf,增加网络空间Location的配置项
<Location />
<LimitExcept GET POST OPTIONS CONNECT PROPFIND />
Order allow deny
Deny from all
</LimitExcept>
</Location>
再次测试发现SHIT请求或者其他不在LimitExcept中的类型都会被拦截并且返回403错误(服务器理解客户的请求,但拒绝处理它,通常由于服务器上文件或目录的权限设置导致的WEB访问错误),问题到此解决完成,记录一下。