【AppScan深入浅出】修复漏洞:启用不安全的HTTP方法 (中)
来源:互联网 发布:java执行ping命令 编辑:程序博客网 时间:2024/04/29 13:17
【AppScan深入浅出】修复漏洞:启用不安全的HTTP方法 (中)
最近一直刷新AppScan的下限,对于Appscan报出的中危漏洞“启用不安全的HTTP方法”。分析了其扫描机制,以及处理方法和绕开方法。如果不耐烦看分析过程,请直接跳到文章最后看处理方法。
0. 漏洞背景
“启用了不安全的 HTTP 方法”属于“中”危漏洞。漏洞描述是:根据 APPSCAN的报告 , APPSCAN 通过 OPTIONS 请求,当响应中发现 DELETE 、 SEARCH 、COPY 等方法为允许方法时,则认为是漏洞。 详见下图:
Web 服务器(以 IIS 为例)在没有任何设置是,使用 OPTIONS 命令,可以返回所有能够响应的 HTTP 方法,如 OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK 。
发送OPTIONS请求:(使用telnet或者secureCRT等软件):
1. 实验环境
Web 服务器环境: IIS6 。站点结构如下,使用了主机头 myapp.com 指向了我的测试应用 app 。
配置只有读取权限,还有执行权限设置为“纯脚本”。
2. 实验
实验1:裸实验
未启用WebDav,OPTIONS命令的返回中,只显示只有OPTION、TRACE、GET、HEAD和POST。
APPSCAN 扫描结果也没有扫描出“启用了不安全的 HTTP 方法”这个漏洞。
实验2:开启WebDAV
启用WebDAV后,OPTIONS命令的返回中,显示多了很多新的HTTP方法,包括APPSCAN会认为是不安全的COPY、SEARCH、LOCK和UNLOCK等。
APPSCAN的扫描结果如下,扫描到了“启用了不安全的HTTP方法”这个漏洞。
结论1:如果关闭WebDAV支持,APPSCAN则无法扫描出“启用了不安全的 HTTP 方法”漏洞。
实验3:URLScan正向实验
安装URLScan(URLScan是微软提供给IIS6的路径重定向工具,在 这里 下载),在URLScan.ini中配置,只允许GET、HEAD和POST这三个常用命令(UseAllowVerbs=1)。
运行OPTIONS命令,则服务器返回响应失败,无法列出所有的HTTP方法
APPSCAN扫描结果显示,禁用OPTIONS命令后无法扫描出“启用了不安全的 HTTP 方法”这个漏洞。
实验4:URLScan正向实验2
安装URLScan,在URLScan.ini中配置,只允许GET、HEAD、POST和OPTIONS命令。
由于URLScan的模式,要么设置允许命令,要么设置禁止命令,不能同时设置。因此允许这4个命令,表示不能禁用其他命令,因此OPTIONS会显示其他的可用命令。
由于APPSCAN默认是以OPTIONS命令来看漏洞的,因此自然本次扫描会有漏洞。
实验5:URLScan反向实验
在URLSCAN中,采用禁止模式(UseAllowVerbs=0),只禁止OPTIONS命令。
结果OPTIONS被禁用。
当然此时其他不安全的HTTP方法,其实是没有禁用的,如LOCK、UNLOCK等,只是是否可用要看服务器是否设置了对应的程序。
实验5:URLScan反向实验2
在URLSCAN中,采用禁止模式(UseAllowVerbs=0),禁止不安全HTTP方法- DELETE- SEARCH- COPY- MOVE- PROPFIND- PROPPATCH- MKCOL- LOCK- UNLOCK- PUT等。
但是使用OPTIONS命令后,仍然显示这些不安全的方法,即使这些方法实际已经被禁用了。
见下图,使用LOCK命令已经显示无法访问了,但APPSCAN实际也会说有漏洞,由于OPTIONS方法告诉它有这些HTTP方法。
结论2:消除“启用了不安全的 HTTP 方法”漏洞,关键在于是否能够阻止OPTIONS命令。
3. URLScan参数讨论
使用URLSCAN确实可以禁用掉无用的HTTP方法,但根据参数配置,有可能会产生副作用。因此需要了解每一个参数,以减少对现有系统的影响。
参数(默认值)
描述
建议值
UseAllowVerbs=1
; If 1, use [AllowVerbs] section, else use the [DenyVerbs] section.
0,使用禁用模式,禁用OPTIONS
UseAllowExtensions=0
; If 1, use [AllowExtensions] section, else use the [DenyExtensions] section.
0,使用禁用模式,并将禁用列表清空
NormalizeUrlBeforeScan=1
; If 1, canonicalize URL before processing.
0,不扫描
VerifyNormalization=1
; If 1, canonicalize URL twice and reject request if a change occurs.
0,不扫描
AllowHighBitCharacters=0
; If 1, allow high bit (ie. UTF8 or MBCS) characters in URL.
0,不启用
AllowDotInPath=0
; If 1, allow dots that are not file extensions.
0,不启用
RemoveServerHeader=0
; If 1, remove the 'Server' header from response.
0,不启用
EnableLogging=1
; If 1, log UrlScan activity.
0,不启用
PerProcessLogging=1
; If 1, the UrlScan.log filename will contain a PID (ie. UrlScan.123.log).
0,不启用
AllowLateScanning=0
; If 1, then UrlScan will load as a low priority filter.
0,不启用
PerDayLogging=1
; If 1, UrlScan will produce a new log each day with activity in the form 'UrlScan.010101.log'.
0,不启用
UseFastPathReject=0
; If 1, then UrlScan will not use the RejectResponseUrl or allow IIS to log the request.
0,不启用
LogLongUrls=0
; If 1, then up to 128K per request can be logged. If 0, then only 1k is allowed.
0,不启用
MaxAllowedContentLength
=30000000
请求内容最大长度,默认为3G
不修改
MaxUrl=260
URL长度,默认260字符
不修改
MaxQueryString=2048
QueryString的最大长度,默认2048字符
不修改
RejectResponseUrl=
不修改
LoggingDirectory
不修改
AlternateServerName=
不修改
结论3 :URLSCAN 除了前2 个参数,其他参数对应的基本不用到,要尽量减少URLSCAN 产生的影响。
4.处理方法
总结:解决“启用了不安全的 HTTP 方法”,可采用3 种方法:
方法
描述
1
禁用WebDAV 功能
根本解决。不引入新的不稳定因素URLSCAN
2
使用URLSCAN 禁用OPTIONS
实际没有真正禁用,但缩小了影响范围。URLSCAN 可能有副作用。
3
使用URLSCAN 禁用OPTIONS和其他HTTP 方法
或者只允许GET/POST/HEAD方法(自动禁用其他方法)
等效于取消WebDAV ,但URLSCAN可能副作用。
- 【AppScan深入浅出】修复漏洞:启用不安全的HTTP方法 (中)
- 【AppScan深入浅出】修复漏洞:启用不安全的HTTP方法 (中)
- 启用不安全的HTTP方法解决办法IBM APPSCAN
- 【AppScan深入浅出】修复漏洞:会话标识未更新(中危)
- 启用了不安全的 HTTP 方法
- 启用了不安全的HTTP方法
- 启用不安全的HTTP方法解决方案
- 启用了不安全的HTTP方法
- 启用了不安全的HTTP方法
- [AppScan深入浅出]修复漏洞:会话标识未更新
- apache 服务器禁止http方法 解决appscan 使用 HTTP 动词篡改的认证旁路漏洞
- ActiveX控件中不安全方法漏洞的检测技术
- 常见web漏洞——启动了不安全的HTTP方法解决办法
- 关闭不安全的HTTP方法
- 关闭不安全的HTTP方法
- IOS中UIWebView的UXSS漏洞及修复方法
- 项目中遇到的水平越权漏洞及修复方法
- 服务器SSL不安全漏洞修复方案
- 设计模式三部曲--4
- Python标准库:内置函数dict(mapping, **kwarg)
- 在访问者模式中使用反射
- 每个程序员都应读的30本书
- call stack详解
- 【AppScan深入浅出】修复漏洞:启用不安全的HTTP方法 (中)
- easyui datagrid自定义操作
- 自定义textfile样例
- C语言求π的值(2种方法)
- 最简单例子图解JVM内存分配和回收
- pinctrl
- 数据库SQL优化大总结之 百万级数据库优化方案
- 深度学习 Deep Learning UFLDL 最新Tutorial 学习笔记 3:Vectorization
- TextView 自动换行导致文字排版参差不齐的原因