怎样过滤跨站恶意跨站脚本攻击漏洞

1020人阅读
安全测试(26)
一、跨站脚本攻击的概念
跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
举个比较常见的网络上的一个例子,某个论坛或者页面上有个广告,网址是,你点击进去,你看是购物网站,又是淘宝的,你就进去购买了,其实呢,他会redirect到另一个攻击者自己的网站,你在购买的时候,使用的是攻击者的接口进行付款,很可能就会被盗取个人信息及财产等。
二、寻找跨站漏洞
如果有代码的话比较好办,我们主要看代码里对用户输入的地方和变量有没有做长度和对”&”,”&”,”;”,”’”等字符是否做过滤。还有要注意的是对于标签的闭合,像测试QQ群跨站漏洞的时候,你在标题处输入,这样就可以弹出一个test的框。
三、XSS漏洞的后果
XSS漏洞可能造成的后果包括窃取用户会话,窃取敏感信息,重写Web页面,重定向用户到钓鱼网站等,尤为严重的是,XSS漏洞可能使得攻击者能够安装XSS代理,从而攻击者能够观察到该网站上所有用户的行为,并能操控用户访问其他的恶意网站。
四、XSS漏洞的常见解决措施
对于XSS漏洞,我们有两种常见的措施,第一种就是消除漏洞,简而言之就是在输出页面上不提供任何用户的输入信息;另外一种就是想办法来抵御这种漏洞,可以采用对所有用户的输入编码后再输出(可以用OWASP的ESAPI),也可以对所有用户输入进行“白名单”验证,另外,OWASP还提供了AntiSamy对HTML页面做优化以消除这个漏洞。
五、XSS的分类及测试方法
XSS分为三类:Stored XSS、Reflected XSS、Dom-Base XSS。
(1)Stored XSS,即存储式跨站攻击,存储式跨站攻击简单来说就是攻击者提交给网站的数据会提交并永久保存到服务器的数据库或者是文件系统等其他地方,之后不做任何编码操作就会显示在web页面上。这是最厉害的攻击方式。
例如1:在一个网站的一些留言板或者新闻等可以输入的地方,输入一下代码:
&alert(document.cookie)&
因为这个是留言板上或者评论等的内容,会被读取并且存储到服务器上,如果不作任何处理,当其他用户访问这个网页的时候,就会弹出一个关于cookie的警告信息。
例如2:在评论的时候输入&script type="text/javascript"&alert("you are a foolish person")&/script&,如果不进行处理,这个信息会被当做正常的留言存储到服务器,那个接下来每个访问这个页面的用户都会收到you are a foolish person的alert信息,会造成很大的影响。(可用于窃取密码,用户信息等)
(2)Reflected XSS,即反射跨站脚本攻击,这是最常见的攻击方式。所谓反射,就是等着服务器所给的返回。我们在进行测试时依据的就是在自己页面上的简单注入。在web客户端提交了数据后,服务端马上给这个请求生成返回结果页,如果结果中包含了未验证的客户端输入数据,那就表示会允许客户端脚本直接注入到页面里,也就出现了这样一个漏洞。简单举个例子,在搜索引擎里边,我们如果搜索了一个包含html代码的字符串,如果返回的字符串仍然没被编码,那么搜索的内容就不是整个html代码了,而是只想过这个html代码,那就是存在XSS漏洞了。
(3)Dom-Base XSS,即基于DOM的XSS攻击,它是修改页面DOM节点数据信息而形成的XSS跨站脚本攻击,该漏洞多见于客户端脚本,意思就是如果一个js访问需要参数的url,并且需要把信息作用于自己当前的页面,信息又未被编码,就会出现该漏洞。
例如:好多网站在网址后边带个参数(?XXX的),当看到这种情况时候,我们可以在参数后边加个,如果加了这个参数之后,这段script代码不被编码就输出,那就证明它具有这么一个漏洞。
例如:某网站的url中含有?,我们输入?,如果这个脚本执行了,那么我们就说这是一个XSS漏洞。
(注:含有?只是其中的一个例子,并不是所有Dom-Base XSS都是这种形式)
六、完善的输入检查是预防XSS的重要措施
由于三种XSS跨站脚本攻击类型的漏洞成因可不相同,针对输入输出的检查一部分适用于反射型XSS与存储型XSS,而另外一些检查适用于基于DOM的XSS。
A. 防范反射型XSS和存储型XSS
输入检查在大多数的时候都是对可信字符的检查或输入数据格式的检查,如用户输入的注册账号信息中只允许包括字母、数字、下划线和汉字等,对于输入的一切非白名单内的字符均认为是非法输入。数据格式如输入的IP地址、电话号码、邮件地址、日期等数据都具有一定的格式规范,只有符合数据规范的输入信息才允许通过检查。
输出检查主要是针对数据展示过程中,应该对数据信息进行HTML编码处理,将可能存在导致XSS跨站脚本攻击的恶意字符进行编码,在不影响正常数据显示的前提条件下,过滤恶意字符。常见的可能造成XSS跨站脚本攻击的字符及其HTML编码如下:
除了常用的编码外,任何字符都可以使用其ASCII码进行HTML编码,如
B. 防范基于DOM的XSS
从基于DOM的XSS的定义及其触发方式我们发现,当基于DOM的XSS跨站脚本攻击发生时,恶意数据的格式与传统的XSS跨站脚本攻击数据格式有一定的差异,甚至可以在不经过服务器端的处理和相应的情况下,直接对客户端实施攻击行为,因此上述我们应用于防范反射型XSS和存储型XSS的方法并不适用于防范基于DOM的XSS跨站脚本攻击。
针对基于DOM的XSS防范的输入检查方法,我们发现在客户端部署相应的安全检测代码的过滤效果要比在服务器端检测的效果更加明显。例如,我们可以通过如下客户端检测代码来保证用户输入的数据只包含字母、数字和空格,代码如下:
var str = document.URL;
str = str.substring(str.indexOf("username=")+9, str.length);
str = unescape(str);
var regex=/^([A-Za-z0-9+\s])*$/;
if (regex.test(str))
document.write(str);
同样,我们也可以通过在服务端实现类似上述数据检查的功能,如在服务器端检测URL参数是否为预定的参数username,并对username参数的内容进行检测,确认数据内容是否为只包含数字、字母和空格符,实现服务端的数据过滤。但是,由于客户端数据的可控性,这种服务端检测的效果要明显弱于客户端检测。
基于DOM的XSS输出检查与反射型XSS漏洞输出检查的方法相似,在将用户可控的DOM数据内容插入到文档之前,Web应用程序应对提交的数据进行HTML编码处理,将用户提交的数据中可能存在的各种危险字符和表达式进行过滤以安全的方式插入到文档中进行展现,如可以通过如下函数实现在客户端javascript中执行HTML编码处理。
function jsEncode(str)
var d = document.createElement('div');
d.appendChild(document.createTextNode(str));
return d.innerHTML;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:80259次
积分:1611
积分:1611
排名:千里之外
原创:79篇
转载:26篇
评论:13条
(9)(44)(52)&&&&XSS跨站脚本攻击剖析与防御(完整版).pdf[带书签]
XSS跨站脚本攻击剖析与防御(完整版).pdf[带书签]
《XSS跨站脚本攻击剖析与防御》,完整版本。作者:邱永华,出版社:人民邮电出版社,ISBN:7,PDF 格式,扫描版,大小 67MB。本资源带有PDF书签,方便读者朋友阅读。
内容简介:
《XSS跨站脚本攻击剖析与防御》是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了深入的剖析,这些攻击往往基于客户端,从挂马、窃取Cookies、会话劫持到钓鱼欺骗,各种攻击都不容忽视。第3章 XSS测试和利用工具,介绍了一些常见的XSS测试工具。第4章 发掘XSS漏洞,着重以黑盒和白盒的角度介绍如何发掘XSS漏洞,以便帮助读者树立安全意识。第5章 XSS Worm,讲解了Web 2.0的最大威胁——跨站脚本蠕虫,剖析了Web 2.0相关概念和其核心技术,这些知识对于理解和预防XSS Worm十分重要。第6章 Flash应用安全,就当前的Flash应用安全做出了深入阐述。第7章 深入XSS原理,讨论一些比较深入的XSS理论。第8章 防御XSS攻击,介绍了一些防范XSS攻击的方法,例如,运用XSS Filter进行输入过滤和输出编码,使用Firefox浏览器的Noscript插件抵御XSS攻击,使用HTTP-only的Cookies同样能起到保护敏感数据的作用。
《XSS跨站脚本攻击剖析与防御》适合网站管理人员、信息/网络安全或相关工作从业者、软件开发工程师,以及任何对Web安全技术感兴趣的读者。
《XSS跨站脚本攻击剖析与防御》
第1章 XSS初探 1
1.1 跨站脚本介绍 1
1.1.1 什么是XSS跨站脚本 2
1.1.2 XSS跨站脚本实例 4
1.1.3 XSS漏洞的危害 6
1.2 XSS的分类 8
1.2.1 反射型XSS 8
1.2.2 持久型XSS 10
1.3 XSS的简单发掘 12
1.3.1 搭建测试环境 12
1.3.2 发掘反射型的XSS 12
1.3.3 发掘持久型的XSS 15
1.4 XSS Cheat Sheet 18
1.5 XSS构造剖析 21
1.5.1 绕过XSS-Filter 22
1.5.2 利用字符编码 33
1.5.3 拆分跨站法 37
1.6 Shellcode的调用 39
1.6.1 动态调用远程JavaScript 40
1.6.2 使用window.location.hash 41
1.6.3 XSS Downloader 41
1.6.4 备选存储技术 43
第2章 XSS利用方式剖析 45
2.1 Cookie窃取攻击剖析 45
2.1.1 Cookie基础介绍 46
2.1.2 Cookie会话攻击原理剖析 48
2.1.3 Cookie欺骗实例剖析 49
2.2 会话劫持剖析 51
2.2.1 了解Session机制 51
2.2.2 XSS实现权限提升 52
2.2.3 获取网站Webshell 55
2.3 网络钓鱼 57
2.3.1 XSS Phishing 57
2.3.2 XSS钓鱼的方式 59
2.3.3 高级钓鱼技术 60
2.4 XSS History Hack 63
2.4.1 链接样式和getComputedStyle() 64
2.4.2 JavaScript/CSS history hack 64
2.4.3 窃取搜索查询 65
2.5 客户端信息刺探 67
2.5.1 JavaScript实现端口扫描 67
2.5.2 截获剪贴板内容 68
2.5.3 获取客户端IP地址 70
2.6 其他恶意攻击剖析 71
2.6.1 网页挂马 71
2.6.2 DOS和DDOS 72
2.6.3 XSS Virus/Worm 73
第3章 XSS测试和工具剖析 75
3.1 Firebug 75
3.2 Tamper Data 80
3.3 Live HTTP Headers 82
3.4 Fiddler 84
3.5 XSS-Proxy 86
3.6 XSS Shell 90
3.7 AttackAPI 94
3.8 Anehta 98
第4章 发掘XSS漏洞 104
4.1 黑盒工具测试 104
4.2 黑盒手动测试 107
4.3 源代码安全审计 110
4.4 JavaScript代码分析 118
4.4.1 DOM简介 118
4.4.2 第三种XSS——DOM XSS 120
4.4.3 发掘基于DOM的XSS 123
4.5 发掘Flash XSS 126
4.6 巧用语言特性 129
4.6.1 PHP 4 phpinfo() XSS 130
4.6.2 $_SERVER[PHP_SELF] 131
4.6.3 变量覆盖 132
第5章 XSS Worm剖析 135
5.1 Web 2.0应用安全 135
5.1.1 改变世界的Web 2.0 135
5.1.2 浅谈Web 2.0的安全性 137
5.2 Ajax技术指南 138
5.2.1 使用Ajax 139
5.2.2 XMLHttpRequest对象 140
5.2.3 HTTP请求 142
5.2.4 HTTP响应 142
5.3 浏览器安全 145
5.3.1 沙箱 145
5.3.2 同源安全策略 146
5.4 XSS Worm介绍 147
5.4.1 蠕虫病毒剖析 147
5.4.2 XSS Worm攻击原理剖析 148
5.4.3 XSS Worm剖析 149
5.4.4 运用DOM技术 150
5.5 新浪微博蠕虫分析 153
第6章 Flash应用安全 156
6.1 Flash简介 156
6.1.1 Flash Player 与SWF 156
6.1.2 嵌入Flash文件 158
6.1.3 ActionScript语言 158
6.2 Flash安全模型 160
6.2.1 Flash安全沙箱 161
6.2.2 Cross Domain Policy 162
6.2.3 设置管理器 164
6.3 Flash客户端攻击剖析 165
6.3.1 getURL() & XSS 165
6.3.2 Cross Site Flashing 169
6.3.3 Flash参数型注入 171
6.3.4 Flash钓鱼剖析 173
6.4 利用Flash进行XSS攻击剖析 174
6.5 利用Flash进行CSRF 178
第7章 深入XSS原理 181
7.1 深入浅出CSRF 182
7.1.1 CSRF原理剖析 182
7.1.2 CSRF实例讲解剖析 185
7.1.3 CSRF的应用剖析 187
7.2 Hacking JSON 187
7.2.1 JSON概述 187
7.2.2 跨域JSON注入剖析 190
7.2.3 JSON Hijacking 191
7.3 HTTP Response Splitting 193
7.3.1 HTTP Header 193
7.3.2 CRLF Injection原理 195
7.3.3 校内网HRS案例 197
7.4 MHTML协议的安全 199
7.5 利用Data URIs进行XSS剖析 203
7.5.1 Data URIs介绍 203
7.5.2 Data URIs XSS 204
7.5.3 vBulletin Data URIs XSS 206
7.6 UTF-7 BOM XSS 206
7.7 浏览器插件安全 211
7.7.1 Flash后门 211
7.7.2 来自PDF的XSS 213
7.7.3 QuickTime XSS 217
7.8 特殊的XSS应用场景剖析 218
7.8.1 基于Cookie的XSS 218
7.8.2 来自RSS的XSS 220
7.8.3 应用软件中的XSS 222
7.9 浏览器差异 225
7.9.1 跨浏览器的不兼容性 226
7.9.2 IE嗅探机制与XSS 226
7.9.3 浏览器差异与XSS 228
7.10 字符集编码隐患 231
第8章 防御XSS攻击 234
8.1 使用XSS Filter 234
8.1.1 输入过滤 235
8.1.2 输出编码 237
8.1.3 黑名单和白名单 239
8.2 定制过滤策略 240
8.3 Web安全编码规范 244
8.4 防御DOM-Based XSS 248
8.5 其他防御方式 250
8.5.1 Anti_XSS 250
8.5.2 HttpOnly Cookie 252
8.5.3 Noscript 253
8.5.4 WAF 254
8.6 防御CSRF攻击 255
8.6.1 使用POST替代GET 256
8.6.2 检验HTTP Referer 257
8.6.3 验证码 258
8.6.4 使用Token 259
参考文献 262
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
安全技术下载排行如何检测SQL注入技术以及跨站脚本攻击
作者:佚名
字体:[ ] 来源:互联网 时间:05-09 12:04:50
在最近两年中,安全专家应该对网络应用层的攻击更加重视。因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循 安全代码进行开发,攻击者将通过80端口进入你的系统。广泛被使用的两个主要攻击技术是SQL注入[ref1]和CSS[
在最近两年中,安全专家应该对网络应用层的攻击更加重视。因为无论你有多强壮的防火墙规则设置或者非常勤于补漏的修补机制,如果你的网络应用程序开发者没有遵循 安全代码进行开发,攻击者将通过80端口进入你的系统。广泛被使用的两个主要攻击技术是SQL注入[ref1]和CSS[ref2]攻击。SQL注入是指:通过互联网的输入区域,插入SQL meta-characters(特殊字符 代表一些数据)和指令,操纵执行后端的SQL查询的技术。这些攻击主要针对其他组织的WEB服务器。CSS攻击通过在URL里插入script标签,然后 诱导信任它们的用户点击它们,确保恶意Javascript代码在受害人的机器上运行。这些攻击利用了用户和服务器之间的信任关系,事实上服务器没有对输入、输出进行检测,从而未拒绝javascript代码。 这篇文章讨论SQL注入和CSS攻击漏洞的检测技术。网上已经有很多关于这两种基于WEB攻击的讨论,比如如何实施攻击,他们的影响,怎样更好的编制和设计程序防止这些攻击。 然而, 对如何检测这些攻击并没有足够的讨论。我们采用流行的开源的IDS Snort[ref 3],组建根据检测这些攻击的规则的正则表达式。附带,Snort默认规则设定包含检测CSS的方法,但是这些容易被避开检测。比如大多通过hex进制编码,如%3C%73%63%72%69%70% 74%3E代替避开检测。 依赖level of paranoia组织的能力,我们已经编写了多种检测相同攻击的规则。如果你希望检测各种可能的SQL注入攻击,那么你需要简单的留意任何现行的SQL meta-characters,如单引号,分号和双重破折号。同样的一个极端检测CSS攻击的方法,只要简单地提防HTML标记的角括号。但这样会检测 出很多错误。为了避免这些,这些规则需要修改使它检测更精确些, 当仍然不能避免错误。 在Snort规则中使用pcre(Perl Compatible Regular Expressions)[ref4]关键字,每个规则可以带或不带其他规则动作。这些规则也可以被公用软件如grep(文档搜索工具)使用,来审阅网络服务器日志。 但是,需要警惕的是,用户的输入只有当以GET提交请求时,WEB服务器才会记录日记,如果是以POST提交的请求在日记中是不会记录的。 2. SQL注入的正则表示式 当 你为SQL注入攻击选择正则表示式的时候,重点要记住攻击者可以通过提交表单进行SQL注入,也可以通过Cookie区域。你的输入检测逻辑应该考虑用户 组织的各类型输入(比如表单或Cookie信息)。并且如果你发现许多警告来自一个规则,请留意单引号或者是分号,也许些字符是你的Web应用程序创造的 合法的在CookieS中的输入。因此, 您需要根据你的特殊的WEB应用程序评估每个规则。 依照前面提到,一个琐细的检测SQL射入攻击的正则表达式要留意SQL特殊的meta-characters 譬如单引号(&)双重扩则号(--),为了查出这些字符和他们hex等值数, 以下正则表达式适用: 2.1 检测SQL meta-characters的正则表达式 /(\%27)|(\&)|(\-\-)|(\%23)|(#)/ix 解释: 我 们首先检查单引号等值的hex,单引号本身或者双重扩折号。这些是MS SQL Server或Oracle的字符, 表示后边的为评论, 随后的都将被忽略。 另外,如果你使用MySQL,你需要留意 &#&和它等值的hex的出现。注意我们不需要检查双重破折号等值的hex, 因为这不是HTML meta-character, 浏览器不会进行编码。 并且, 如果攻击者设法手工修改双重破折号为它的hex值%2D(使用代理像Achilles[ref 5]), SQL注入将失败。 加入上述正则表达式的新的Snort规则如下: alert tcp $EXTERNAL_NET any -& $HTTP_SERVERS $HTTP_PORTS (msg:&SQL Injection - Paranoid&; flow:to_server,uricontent:&.pl&;pcre:&/(\%27)|(\&)|(\-\-)|(%23)|(#)/i&; classtype:Web-application- sid:9099; rev:5;) 在本篇讨论中, uricontent关键字的值为&.pl &, 因为在我们的测试环境里, CGI 程序是用Perl写的。uricontent关键字的值取决于您的特殊应用, 这个值也许是&.php &, 或& .asp &, 或& .jsp &, 等。 从这点考虑, 我们不显示对应的Snort 规则, 但是我们会给出创造这些规则的正则表达式。 通过这些正则表达式你可以很简单的创造很多的Snort规则.在前面的正则表达式里, 我们检测双重破折号是因为:即便没有单引号的存在那里也可能是SQL射入点[ref 6]。 例如, SQL查询条目只包含数值,如下: select value1, value2, num_value3 from database where num_value3=some_user_supplied_number 这种情况,攻击者可以执行额外的SQL查询, 示范提交如下输入: 3; insert values into some_other_table 最后, pcre的修饰符& i& 和& x & 是用于分别匹配大小写和忽略空白处的。 上面的规则也可以另外扩展来检查分号的存在。然而,分号很可以是正常HTTP应答的一部分。为了减少这种错误,也是为了任何正常的单引号和双重扩折号的出 现,上面的规则应该被修改成先检测=号的存。用户输入会响应一个GET或POST请求,一般输入提交如下: username=some_user_supplied_value&password=some_user_supplied_value 因此, SQL 注入尝试将导致用户的输入出现在a = 号或它等效的hex值之后。 2.2 修正检测SQL meta-characters的正则表达式 /((\%3D)|(=))[^\n]*((\%27)|(\&)|(\-\-)|(\%3B)|(:))/i 解释: 这个规则首先留意 = 号或它的hex值(%3D),然后考虑零个或多个除换行符以外的任意字符,最后检测单引号,双重破折号或分号。 典 型的SQL注入会尝试围绕单引号的用途操作原来的查询,以便得到有用的价值。讨论这个攻击一般使用1&or&1&=&1字符串. 但是, 这个串的侦查很容易被逃避,譬如用1&or2&1 --. 然而唯一恒定的部分是最初的字符的值,跟随一单引号,再加&or&。随后的布尔逻辑可能在一定范围上变化,可以是普通样式也可能是非常复杂的。这些攻击可 以相当精确被侦测,通过以下的正则表达式。2.3章节讲解。 2.3 典型的 SQL 注入攻击的正则表达式 /\w*((\%27)|(\&))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix 解释: \w* - 零个或多个字符或者下划线。 (\%27)|\& - 单引号或它的hex等值。 (\%6 F)|o|(\%4 F))((\%72)|r|-(\%52) -&or&的大小写以及它的hex等值。 &union&SQL 查询在SQL注入各种数据库中攻击中同样是很常见的。如果前面的正则表达式仅仅检测单引号或则其他的SQL meta characters ,会造成很多的错误存在。你应该进一步修改查询,检测单引号和关键字&union&。这同样可以进一步扩展其他的SQL关键字,像&select&, &insert&, &update&, &delete&, 等等。 2.4 检测SQL注入,UNION查询关键字的正则表达式 /((\%27)|(\&))union/ix (\%27)|(\&) - 单引号和它的hex等值 union - union关键字 可以同样为其他SQL查询定制表达式,如 &select, insert, update, delete, drop, 等等. 如 果,到这个阶段,攻击者已经发现web应用程序存在SQL注入漏洞,他将尝试利用它。如果他认识到后端服务器式MS SQL server,他一般会尝试运行一些危险的储存和扩展储存过程。这些过程一般以&sp&或&xp&字母开头。典型的,他可能尝试运行 &xp_cmdshell&扩展储存过程(通过SQL Server执行Windows 命令)。SQL服务器的SA权限有执行这些命令的权限。同样他们可以通过xp_regread, xp_regwrite等储存过程修改注册表。 2.5 检测MS SQL Server SQL注入攻击的正则表达式 /exec(\s|\+)+(s|x)p\w+/ix 解释: exec - 请求执行储存或扩展储存过程的关键字 (\s|\+)+ - 一个或多个的空白或它们的http等值编码 (s|x) p- &sp&或&xp&字母用来辨认储存或扩展储存过程 \w+ - 一个或多个字符或下划线来匹配过程的名称 3. 跨站脚本(CSS)的正则表达式 当 发动CSS攻击或检测一个网站漏洞的时候, 攻击者可能首先使简单的HTML标签如(粗体),(斜体)或(下划线),或者他可能尝试简单的 script标签如alert(&OK&). 因为大多数出版物和网络传播的检测网站是否有css漏洞都拿这个作为例子。这些尝试都可以很简单的被检测出来。 然而,高明点的攻击者可能用它的hex值替换整个字符串。这样标签会以%3C%73%63%72%69%70%74%3E出 现。 另一方面,攻击者可能使用web代理服务器像Achilles会自动转换一些特殊字符如换成%3E.这样攻击发生时,URL 中通常以hex等值代替角括号。 下列正则表达式将检测任何文本中包含的html的。它将捉住试图使用、、或。这正则表达式应该忽略大小写。我们需要同时检测角括号和它的hex等值(% 3C| 3.1 一般 CSS 攻击的正则表达式 /((\%3C)|)/ix 解释: ((\%3C)|) -检查&或它的hex等值 Snort 规则: alert tcp $EXTERNAL_NET any -& $HTTP_SERVERS $HTTP_PORTS (msg:&NII Cross-site scripting attempt&; flow:to_server, pcre:&/((\%3C)|)/i&; classtype:Web-application- sid:9000; rev:5;) 跨站脚本同样可以使用技术。现行默认的snort规则可以被轻易避开。 3.2章节提供了防止这种技术的方法。 3.2 & /((\%3C)|)/I 解释: (\%3 C)|) -&或它的hex等值 3.3 CSS 攻击的极端的正则表达式 /((\%3C)|)/I 解释: 这个规则简单寻找。由于你的web服务器和web应用程序的构架,这个规则可能产生一些错误。但它能保证捉住任何CCS或者类似CSS的攻击。 一个不错避开过滤的CSS方法请参考Bugtraq投稿的 /archive/1/272...rchive/1/272037. 但是请注意最后一种极端的规则将能检测这所有的攻击。 总结: 在 这篇文章中,我们提出了不同种类的正则表达式规则来检测SQL注入和跨站脚本攻击。有些规则简单而极端,一个潜在的攻击都将提高警惕。但这些极端的规则可 能导致一些主动的错误。考虑到这点,我们修改了这些简单的规则,利用了另外的样式,他们可以检查的更准确些。在这些网络应用成的攻击检测中,我们推荐将这 些作为调试你IDS或日志分析方法的起点。再经过几次修改后,在你对正常网交易部分的非恶意应答进行评估以后,你应该可以准备的检测那些攻击了。 参考 1. SQL Injection /papers/SQLInjectionWhitePaper.pdf 2. Cross Site Scripting FAQ /articles/xss- faq.shtml 3. The Snort IDS http://www.snort.org 4. Perl-compatible regular expressions (pcre) http://www.pcre.org 5. Web application proxy, Achilles
3. Advanced SQL Injection /papers/advanced_sql_injection.pdf 7. Secure Programming HOWTO, David Wheeler
8. Threats and Countermeasures, MSDN, Microsoft
大家感兴趣的内容
12345678910
最近更新的内容

我要回帖

更多关于 跨站脚本攻击 的文章

 

随机推荐