• 欢迎访问金刀客博客!
  • 2019,春节快乐!

过滤非法url的利器URLScan Tools的使用

原创天空 admin 7492次浏览 已收录 0个评论

URLScan Tool是一款IIS的安全辅助工具,它可以帮助管理员来加强服务器的安全,它先于iis对用户的请求进行处理,从而使得各项请求符合管理员的规则设置,极大的预防和封堵住各项漏洞的利用和入侵。
这里先引用一篇文章,它大概介绍了这款软件。

仔细观察IIS的漏洞,我们几乎可以得出这样一个结论,所有利用这些漏洞实现对网站攻击的手段均是构造特殊的URL来访问网站,一般有以下几种类型的URL可以利用漏洞:
1)特别长的URL,比如红色代码攻击网站的URL就是这样:
GET/default.idaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u
9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a200;
2)特殊字符或者字符串的URL,比如在URL后面加::$DATA可以看到网页(ASP)源代码;
3)URL中含有可执行文件名,最常见的就是有cmd.exe;
既然这些攻击利用特殊的URL来实现,所以,微软提供了这款专门过滤非法URL的安全工具,可以达到御敌于国门之外的效果,这款工具有以下特点和功能:
1) 基本功能:过滤非法URL请求;
2) 设定规则,辨别那些URL请求是合法的;这样,就可以针对本网站来制定专门的URL请求规则;同时,当有新的漏洞出现时,可以更改这个规则,达到防御新漏洞的效果;
3) 程序提供一套URL请求规则,这个规则包含已经发现的漏洞利用特征,帮助管理员设置规则;
(一)软件的下载与安装
URLScan 可以在微软的网站上下载,地址如下:
http://download.microsoft.com/download/iis50 … XP/EN-US/UrlScan.exe
和一般软件一样安装,但是,此软件不能选择安装路径,安装完成以后,我们可以在System32/InetSvr/URLScan目录下找到以下文件:
urlscan.dll:动态连接库文件;
urlscan.inf:安装信息文件;
urlscan.txt:软件说明文件;
urlscan.ini:软件配置文件,这个文件很重要,因为对URLScan的所有配置,均有这个文件来完成。
(二)软件的配置
软件的配置由urlscan.ini文件来完成,在配置此文件以前,我们需要了解一些基本知识。
1) urlscan配置文件的构造形式
urlscan配置文件必须遵从以下规则:
(1)此文件名必须为urlscan.ini;
(2)配置文件必须和urlscan.dll在同一目录;
(3)配置文件必须是标准ini文件结构,也就是由节,串和值组成;
(4)配置文件修改以后,必须重新启动IIS,使配置生效;
(5)配置文件由以下各节组成:
[Option]节,主要设置节;
[AllowVerbs]节,配置认定为合法URL规则设定,此设定与Option节有关;
[DenyVerbs] 节,配置认定为非法URL规则设定,此设定与Option节有关;
[DenyHeaders]节,配置认定为非法的header在设立设置;
[AllowExtensions]节,配置认定为合法的文件扩展名在这里设置,此设定与Option节有关;
[DenyExtensions]节,配置认定为非法的文件扩展名在这里设置,此设定与Option节有关;
2)具体配置
(1)我们首先来看Option节的配置,因为Option节的设置直接影响到以后的配置,因此,这一节的设置特别重要。此节主要进行以下属性的设置:
UseAllowVerbs:使用允许模式检查URL请求,如果设置为1,所有没有在[AllowVerbs]节设置的请求都被拒绝;如果设置为0,所有没有在[DenyVerbs]设置的URL请求都认为合法;默认为1;
UseAllowExtensions:使用允许模式检测文件扩展名;如果设置为 1,所有没在[AllowExtensions]节设置的文件扩展名均认为是非法请求;如果设置为0,所有没在[DenyExtensions]节设置的扩展名均被认为是合法请求;默认为0;
EnableLogging:是否允许使用Log文件,如果为1,将在urlscan.dll的相同目录设置名为urlscan.log的文件记录所有过滤;
AllowLateScanning:允许其他URL过滤在URLScan过滤之前进行,系统默认为不允许0;
AlternateServerName:使用服务名代替;如果此节存在而且[RemoveServerHeader]节设置为0,IIS将在这里设置的服务器名代替默认的“Server”;
NormalizeUrlBeforeScan:在检测URL之前规格化URL;如果为1,URLScan将在IIS编码URL之前URL进行检测;需要提醒的是,只有管理员对URL解析非常熟悉的情况下才可以将其设置为0;默认为1;
VerifyNormalization:如果设置为1,UrlScan将校验URL规则,默认为1;此节设定与NormalizeUrlBeforeScan有关;
AllowHighBitCharacters:如果设置为1,将允许URL中存在所有字节,如果为0,含有非ASCII字符的URL将拒绝;默认为1;
AllowDotInPath:如果设置为1,将拒绝所有含有多个“.”的URL请求,由于URL检测在IIS解析URL之前,所以,对这一检测的准确性不能保证,默认为0;
RemoveServerHeader:如果设置为1,将把所有应答的服务头清除,默认为0;
(2)[AllowVerbs]节配置
如果UseAllowVerbs设置为1,此节设置的所有请求将被允许,一般设置以下请求:
GET、HEAD、POST
(3)[DenyVerbs]节配置
如果UseAllowVerbs设置为0,此节设置的所有请求将拒绝,一般设置以下请求:
PROPFIND、PROPPATCH、MKCOL、Delete、PUT、COPY、MOVE、LOCK、UNLOCK
(4)[AllowExtensions]节设置
在这一节设置的所有扩展名文件将被允许请求,一般设置以下请求:
.asp、.htm、.html、.txt、.jpg、.jpeg、.gif,如果需要提供文件下载服务,需要增加.rar、.zip,
(5)[DenyExtensions]节设置
在这一节设置的所有扩展名文件请求将被拒绝,根据已经发现的漏洞,我们可以在这一节增加内容,一般为以下设置:
.asa、可执行文件、批处理文件、日志文件、罕见扩展如:shtml、.printer等。

这篇文章里的urlscan下载地址已经失效,并且他介绍的可能是较前的版本,与现在的版本有点出入,这里我粗略的介绍一下最新的版本UrlScan version 3.1。
1,工具介绍和下载地址
urlscan介绍:http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1697
下载地址:http://download.microsoft.com/download/c/7/a/c7a411ed-1c0f-48c1-90e5-6d3a1ca054c1/urlscan_v31_x86.msi
2,要求
必须使用IIS5.1或者更高级版本
必须以“管理员”身份安装
如果你以前安装过其它版本的urlscan,必须先卸载,然后再安装此版本。
3,urlscan.ini介绍
毫无疑问,这个工具的最主要部分就是urlscan.ini的设置,这里简要的翻译了一下,仅供参考!!哈哈

UseAllowVerbs=1
允许的方法=1,如果是1,将使用[AllowVerbs]反之将使用 [DenyVerbs]。默认是1
UseAllowExtensions=0
允许使用的扩展名=0,如果是1,将使用[AllowExtensions] , 反之[DenyExtensions] 将起作用.默认为0
NormalizeUrlBeforeScan=1
扫描前标准化URL=1,如果是1,在处理前先标准化URL,默认为1,注意:如果设置为0 将使得扩展名和URL检查不可靠,
所以除非是测试,不然建议不要设置为其他值
VerifyNormalization=1
核实标准化=1,如果是1,将2次标准化URL并且如果发生变化将拒绝请求。默认值为1
AllowHighBitCharacters=0
允许使用高位编码=0,如果是1,URL中将允许使用高位编码(如UTF8或者MBCS)。默认为0
AllowDotInPath=0
允许在路径中使用点=0.如果是1,路径中允许使用“.”,而不作为扩展名部分。默认为0,注意:如果设置为1将使扩展名检查不可靠,
所以除非是测试,不然建议不要设置为其他值
RemoveServerHeader=0
移除服务头=0.如果是1,将溢出请求中的服务头,默认为0
EnableLogging=1
启用日志=1.如果是1,将启动urlscan日志,重启后生效。
PerProcessLogging=0
为每一个进程生成日志文件,重启urlscan后生效
AllowLateScanning=0
如果是1,urlscan将以较低的优先权过滤器运行。默认为0.需要注意的是仅仅在已经安装的过滤器修改地址而你希望urlscan应用规则去重
写地址是使用。重启生效
PerDayLogging=1
如果是1,urlscan将每天生成一个新的日志,比如 ‘UrlScan.010101.log’。如果是o,urlscan将生成日志到urlscan.log。默认为1,重启生效。
UseFastPathReject=0
如果是1,urlscan将不会使用RejectResponseUrl(拒绝响应地址)。需要IIS6.0以上版本,这也将阻止iis把拒绝的请求写入W3SVC日志。
这里不管是否设置urlscan都将把拒绝的请求写入日志。默认为0.
LogLongUrls=0
这个属性对urlscan3.0即以后的版本无效,他们已经把完整的路径写入日志中了。
UnescapeQueryString=1
如果是1,urlscan将对原始字串和过滤后的字串这2种方式都进行处理。
如果是0,urlscan将仅仅检查客户端发送的原始字串。默认为1.注意:如果设置为0,那么基于请求字串的检查将不可靠。
RejectResponseUrl=
当UseFastPathReject=0时,这项设置生效。注意:象这种设置”RejectResponseUrl=/~*”将使urlscan使用日志模式。他仅仅记录下结果而并不拒绝请求。
LoggingDirectory=Logs
设置日志的存放路径,比如c:\some\path,默认存放在与UrlScan.dll相同文件夹下
AlternateServerName=
如果RemoveServerHeader=0,原来的服务头被清除,这里可以重新设置服务头内容。
[RequestLimits]
MaxAllowedContentLength=30000000
MaxUrl=260
MaxQueryString=2048
限制最大内容长度,url最大长度,最大请求字串
[AllowVerbs]
GET
HEAD
POST
允许的http方法,当UseAllowVerbs=1时,设置生效
[DenyVerbs]
PROPFIND
PROPPATCH
MKCOL
Delete
PUT
COPY
MOVE
LOCK
UNLOCK
OPTIONS
SEARCH
拒绝的http方法,当UseAllowVerbs=0时生效。
[DenyHeaders]
Translate:
If:
Lock-Token:
Transfer-Encoding:
拒绝的文件头
[AllowExtensions]
.asp
.htm
.html
.txt
.jpg
.jpeg
.gif
.png
.rar
.asa
允许的扩展名,当UseAllowExtensions=1时生效,如果默认是没有.asp的,如果是动态asp网站一定要加上。这样的话,即使安装了php运行环境,php网页也无法打开
[DenyExtensions]
; Deny executables that could run on the server
.exe
.bat
.cmd
.com
.src
; Deny infrequently used scripts
.htw ; Maps to webhits.dll, part of Index Server
.ida ; Maps to idq.dll, part of Index Server
.idq ; Maps to idq.dll, part of Index Server
.htr ; Maps to ism.dll, a legacy administrative tool
.idc ; Maps to httpodbc.dll, a legacy database access tool
.shtm ; Maps to ssinc.dll, for Server Side Includes
.shtml ; Maps to ssinc.dll, for Server Side Includes
.stm ; Maps to ssinc.dll, for Server Side Includes
.printer ; Maps to msw3prt.dll, for Internet Printing Services
; Deny various static files
.ini ; Configuration files
.log ; Log files
.pol ; Policy files
.dat ; Configuration files
.config ; Configuration files
当UseAllowExtensions=0时生效,拒绝的扩展名,
[AlwaysAllowedUrls]
总是允许的url,比如/SampleURL.htm
[DenyUrlSequences]
.. ; Don’t allow directory traversals
./ ; Don’t allow trailing dot on a directory name
\ ; Don’t allow backslashes in URL
: ; Don’t allow alternate stream access
% ; Don’t allow escaping after normalization
& ; Don’t allow multiple CGI processes to run on a single request
任何url包含了这些字串都将被拒绝。
[AlwaysAllowedQueryStrings]
总是允许的字串
[DenyQueryStringSequences]
< ; Commonly used by script injection attacks > ; Commonly used by script injection attacks
任何请求字串中出现这些字符都将被拒绝。他们常被用于脚本攻击

如果想让中文文件名的下载链接生效请设置AllowHighBitCharacters=1


金刀客博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明过滤非法url的利器URLScan Tools的使用
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到