本次针对 Appscan漏洞 Authentication Bypass Using HTTP Verb Tampering(HTTP动词篡改导致的认证旁路)进行总结,如下:

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>

  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> 

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 代码里面实现。

  参考下官网的limitexcept指令,IHS 就是基于apache,语法一样的。

http://httpd.apache.org/docs/2.4/mod/core.html#limitexcept

Appscan漏洞之Authentication Bypass Using HTTP Verb Tampering的更多相关文章

  1. D-Link DIR-600 - Authentication Bypass

    #Exploit Title: D-Link DIR-600 - Authentication Bypass (Absolute Path Traversal Attack) # CVE - http ...

  2. Appscan漏洞之已解密的登录请求

    本次针对 Appscan漏洞 已解密的登录请求 进行总结,如下: 1.1.攻击原理 未加密的敏感信息(如登录凭证,用户名.密码.电子邮件地址.社会安全号等)发送到服务器时,任何以明文传给服务器的信息都 ...

  3. Appscan漏洞之会话标识未更新

    本次针对 Appscan漏洞 会话标识未更新 进行总结,如下: 1. 会话标识未更新 1.1.攻击原理 在认证用户或者以其他方式建立新用户会话时,如果不使任何现有会话标识失效,攻击者就有机会窃取已认证 ...

  4. Appscan漏洞之跨站点请求伪造(CSRF)

    公司前段时间使用了Fortify扫描项目代码,在修复完这些Fortify漏洞后,最近又启用了Appscan对项目代码进行漏洞扫描,同样也是安排了本人对这些漏洞进行修复.现在,针对修复过的Appscan ...

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

    最近在修复系统漏洞时,使用新版AppScan扫描IIS站点(WebForm)出现一个严重漏洞“已解密的登陆请求”. 扫描工具修复的建议为在登陆界面不使用含“password”类型的控件或加密录入参数. ...

  6. 如何修复AppScan漏洞

    [AppScan]修复漏洞一:启用不安全的HTTP方法 (中) 漏洞背景:      “启用了不安全的 HTTP 方法”属于“中”危漏洞.漏洞描述是:根据APPSCAN的报告,APPSCAN通过OPT ...

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

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

  8. wechall MySQL Authentication Bypass II

    首先看看源码 username password分开来验证.但是没做过滤 通常的利用方法是使用union构造已知MD5值的查询. 如果username存在则执行查询,并且为admin.我们用unnio ...

  9. 得到内网域管理员的5种常见方法<转>

    1.Netbios and LLMNR Name Poisoning 这个方法在WIN工作组下渗透很有用,WIN的请求查询顺序是下面三个步骤:本地hosts文件(%windir%\System32\d ...

随机推荐

  1. 原生js实现浏览器全屏和退出全屏

    全屏模式 //W3C if (docElm.requestFullscreen) { docElm.requestFullscreen(); } //FireFox else if (docElm.m ...

  2. oracle/mysql java jdbc类型映射

    MySQL数据类型 JAVA数据类型 JDBC TYPE 普通变量类型 主键类型 BIGINT Long BIGINT 支持 支持 TINYINT Byte TINYINT 支持 不支持 SMALLI ...

  3. SymPy解方程的实现

    https://www.cnblogs.com/zgyc/p/6277562.html SymPy完全是用Python写的,并不需要外部的库 原理: 单纯用语言内置的运算与变量解决的是,由值求结果.如 ...

  4. Maven构建报错问题解决

    [ERROR] Failed to execute goal on project zepeto-admin: Could not resolve dependencies -SNAPSHOT: Fa ...

  5. IDEA 如何搭建maven 安装、下载、配置(图文)

    1.下载 maven 压缩包 输入网址 www.apache.org 会看到以下界面 住下划看到以下界面 然后看到这个界面 选择下载这个版本 下载后 解压 maven 压缩包 (文件路径不建议用有中文 ...

  6. php读写xml基于DOMDocument方法

    1.读xml内容: xml文件plays.xml文档结构: <?xml version="1.0" encoding="UTF-8"?> <P ...

  7. RedisTemplate 获取redis中以某些字符串为前缀的KEY列表

    // *号 必须要加,否则无法模糊查询 String prefix = "ofc-pincode-"+ pincode + "-*"; // 获取所有的key ...

  8. 谷歌浏览器调试swoole长连接方法

    谷歌浏览器调试swoole长连接方法network标签里面的ws 看frames  

  9. python zip函数(11)

    一.zip函数描述和使用 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,返回的结果可以直接强转为list列表,这样做的好处是节约了不少的 ...

  10. Java-Initialization

    package interfaces.music; abstract class Base{ Base(){ print(); } public abstract void print(); } cl ...