1. Authentication Bypass Using HTTP Verb Tampering

1.1、攻击原理

  不安全的HTTP方法PUT/DELETE/MOVE/COPY/TRACE/PROPFIND/PROPPATCH/MKCOL/LOCK/UNLOCK允许攻击者修改web服务器文件、删除web页面、甚至上传web shell获取用户的身份信息等,它们都有可能制造出严重的安全漏洞,开发人员需要对HTTP请求类型进行控制,防止服务器资源被非授权篡改。

1.2、案例分析

  APPSCAN用无意义的HTTP动词bogus向服务端发起请求,系统正常返回,显示此系统未对http请求类型进行判断限制,存在HTTP动词篡改漏洞。

BOGUS /fams/admin/j_security_check HTTP/1.1
Accept-Language: en-US
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://xxx-core-stg1.paic.com.cn/fams/
Host: xxx-core-stg1.paic.com.cn
User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Win32)
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 477
Date: Wed, 14 Mar 2018 01:56:23 GMT

1.3、防御建议

  1. 限制http method,如仅允许GET、POST等类型

  2. 使用J2EE标准中提供的Filter方法进行请求类型过滤

  3. 检查tomcat的web.xml,weblogic的weblogic.xml配置,对请求类型进行限制,如:

<security-constraint> <web-resource-collection><url-pattern>/*</url-pattern><http-method>PUT</http-method><http-method>DELETE</http-method><http-method>HEAD</http-method><http-method>OPTIONS</http-method><http-method>TRACE</http-method></web-resource-collection><auth-constraint></auth-constraint>
</security-constraint>
<login-config><auth-method>BASIC</auth-method>
</login-config>

需要特别注意:

RESTful API  设计规范中使用HTTP动词来表示对资源的具体操作类型,常用的HTTP动词有下面五个(括号里是对应的SQL命令)。

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
  • DELETE(DELETE):从服务器删除资源。

所以此处限制请求类型时,如果是RESTful API 注意不要影响到接口具体使用。

4. Struts中使用request.getMethod方法添加请求拦截器,如:

if(method.equalsIgnoreCase("post")||method.equalsIgnoreCase("get")||method.equalsIgnoreCase("head")||method.equalsIgnoreCase("trace")||method.equalsIgnoreCase("connect")||method.equalsIgnoreCase("options")){}

5. 禁用IIS的WebDAV功能,WebDAV基于 HTTP 1.1 的一个通信协议,它为 HTTP 1.1 添加了一些除GET,POST,HEAD之外的方法,使得应用程序可以直接将文件写到 Web Server 上。

  6. apache的httpd.conf文件中进行如下限制

<Location />  <LimitExcept GET POST HEAD CONNECT OPTIONS> Order Allow,Deny Deny from all </LimitExcept> </Location> 

7. SpringMVC中对外提供的URL访问路径,限制访问的方法

@RequestMapping(value = "/rootpath",method = RequestMethod.GET)

1.4、实际修复方案

  1、服务器可以分为Tomcat和WebSphere(WAS)两种,本地为Tomcat,加下2的配置方式,下3的方式主要是针对WAS服务器的。

  2、在web.xml文件中加以上的 <security-constraint> 配置。

  3、 如果是请求的静态资源,把下属字段另存为文件.htaccess   放到静态资源的文件夹下面。

  <LimitExcept GET POST >

  Order deny,allow

  Deny from all

  </LimitExcept>

  动态资源的话,需要在java 代码里面实现。

关注微信公众号,了解更多资讯:

Appscan漏洞之Authentication Bypass Using HTTP Verb Tampering相关推荐

  1. AppScan漏洞“已解密的登陆请求”修复解决方案

    AppScan漏洞"已解密的登陆请求"修复解决方案 参考文章: (1)AppScan漏洞"已解密的登陆请求"修复解决方案 (2)https://www.cnbl ...

  2. Authentication Bypass

    用API去请求文档,API中含有用户名和key, 再登录主页的时候需要继续检验用户的登录. 1.如http://xxx/?id=xxx&key=xxxx 此连接访问之后不要存cookie即可解 ...

  3. Appscan漏洞 之 加密会话(SSL)Cookie 中缺少 Secure 属性

    近期 Appscan扫描出漏洞 加密会话(SSL)Cookie 中缺少 Secure 属性,已做修复,现进行总结如下: 1.1.攻击原理 任何以明文形式发送到服务器的 cookie.会话令牌或用户凭证 ...

  4. SSRF漏洞之常见Bypass篇

    SSRF–(Server-side Request Forge, 服务端请求伪造) 定义:由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务 SSRF漏洞思维导图如下,本 ...

  5. appscan漏洞之查询中的密码参数

    最近用appscan扫描系统发现一个漏洞,是查询中的密码参数,原因是可能会窃取查询字符串中发送的敏感数据,根据扫描建议发送敏感信息时,始终使用 SSL 和 POST(主体)参数. 在排查问题时可能是因 ...

  6. AppScan 漏洞扫描,响应状态为“200 OK”

    APPScan 扫描系统遇到如下问题,可通过修改HttpServletResponse中setStatus状态码不为200解决,此处我修改为301. 1.Oracle Application Serv ...

  7. 360 php SQL注入,CMSeasy SQL注入漏洞一发(bypass自身与360waf)

    ### 简要描述: 也不知道重复没有- -! ### 详细说明: /lib/default/archive_act.php: ``` function respond_action() { inclu ...

  8. Lab: Authentication bypass via flawed state machine:通过丢包绕过身份验证登录

    靶场内容 该实验室对登录过程中的事件顺序做出了有缺陷的假设.破解实验室,利用该漏洞绕过实验室认证,访问管理界面,删除Carlos. 您可以使用以下凭据登录自己的帐户: wiener:peter 漏洞分 ...

  9. [转]Top Five Ways SpiderLabs Got Domain Admin on Your Internal Network

    原文地址:[url]https://www.trustwave.com/Resources/SpiderLabs-Blog/Top-Five-Ways-SpiderLabs-Got-Domain-Ad ...

  10. 干货|各种WAF绕过手法学习

    0X00    Fuzz/爆破 fuzz字典 1.Seclists/Fuzzing https://github.com/danielmiessler/SecLists/tree/master/Fuz ...

最新文章

  1. alert获取输入框内容_实用开源:Web 聊天工具的富文本输入框
  2. matlab的compass怎么用,Compass用法指南
  3. 安装你自己的perl modules
  4. java ready_Java PushbackReader ready()用法及代码示例
  5. linux配置文件引用时间,linux时间设置、screen使用、命令分类、hash作用、命令引用及history命令...
  6. 涡轮机叶片matlab强度分析论文,一种基于MATLAB及Pro_E的涡轮建模方法
  7. 畅通工程(HDU-1232)
  8. 关于状态更新时间字段取值的问题
  9. 59. Spiral Matrix Spiral Matrix II
  10. oracle 查看主外键约束
  11. 堆栈宽度学习Stacked BLS的简单python代码实现
  12. 挨踢部落故事汇(9):女程序媛的开发梦
  13. python用input输入整数列表_python中,用input()输入一个整数
  14. 中国雅虎邮箱明日停止服务 邮件帐户均将删除
  15. 恒指期货高手背后的辛酸付出谁又能懂
  16. matlab拷贝不进u盘,Mac无法拷贝文件到U盘怎么办
  17. 网页左右两边加广告横幅
  18. JVM初探究【JVM入门教程】
  19. Android开发规范 (一)
  20. 如何预防H1N1 - 来自医生的忠告

热门文章

  1. Spring源码学习笔记:经典设计模式之工厂模式
  2. Ubuntu桌面图标无法打开终端的解决过程
  3. 哪些软件可以做国外问卷调查
  4. Web视频上添加文字
  5. android 5.0 n,EMUI 5.0遭泄漏 基于Android N制作!华为P9用户有福啦
  6. OPNsense - 多功能高可靠易使用的防火墙(一)
  7. markdowm快捷键学习
  8. python参数类型为uint8_Python 改变数组类型为uint8的实现
  9. 关于Pyrene-PEG2/PEG3/PEG4/PEG5-azide化学式,分子量等相关对比总结
  10. 【IC】低功耗设计理论知识