正常访问状态! 设为首页 | 加入收藏夹 | 浏览历史  
  http://www.guosp.com
 碧海澜涛居
  海纳百川,有容乃大。壁立千刃,无欲则刚!
 
 
关键词:
  网站首页 | 关于本站 | 技术资料 | 美文日志 | 读书收藏 | 影视收藏 | 软件收藏 | 摄影相册| 留言板 
  技术资料 >> 网络安全 关闭(快捷键alt+C)
搜索标签: 脚本 跨站点
跨站点脚本编制
[阅读次数:1068次]  [发布时间:2012年10月10日]

跨站点脚本编制

(2012-09-12 10:51:34)

“跨站点脚本编制”攻击是一种隐私违例,可让攻击者获取合法用户的凭证,并在与特定 Web 站点交互时假冒这位用户。

这个攻击立足于下列事实:Web 站点中所包含的脚本直接将用户在 HTML 页面中的输入(通常是参数值)返回,而不预先加以清理。如果脚本在响应页面中返回由 JavaScript 代码组成的输入,浏览器便可以执行输入中的代码。因此,有可能形成指向站点的若干链接,且其中一个参数是由恶意的 JavaScript 代码组成。该代码将在站点上下文中(由用户浏览器)执行,这授权它通过用户浏览器访问用户所拥有的站点 Cookie 以及站点的其他窗口。
攻击依照下列方式继续进行:攻击者诱惑合法用户单击攻击者生成的链接。 用户单击该链接时,便会生成对于 Web 站点的请求,其中的参数值含有恶意的 JavaScript 代码。 如果 Web 站点将这个参数值嵌入在响应的 HTML 页面中(这正是站点问题的本质所在),恶意代码便会在用户浏览器中运行。

脚本可能执行的操作如下:
[1] 将用户的 cookie(针对合法站点)发送给攻击者。
[2] 将可通过 DOM(URL、表单字段等)访问的信息发送给攻击者。
结果是在易受攻击的站点上,受害用户的安全和隐私受到侵害。

部分注意事项如下:
[1] 虽然受攻击的 Web 站点涉入其中,但它没有直接受害。它被用作攻击者发送的恶意脚本的“跳板”,用来以合法身份返回受害者的浏览器。不过,由于受害者的隐私是在特定站点的上下文中受到侵害,并且由于站点有直接责任,因此,这将视为站点的安全缺陷。
[2] 如果受害的用户所访问的站点由攻击者来维护,攻击者便可以使用 Web 站点链接来提供恶意的链接。如果攻击者知道用户的电子邮件地址,且用户的电子邮件客户端使用浏览器来呈现 HTML 消息,恶意的链接也可以由电子邮件来提供。
[3] 用户输入在表单字段值(即 URL 参数)中最常见,但也有已知的攻击将恶意的代码嵌入路径、查询,或 HTTP Referrer 头中,甚至是嵌入 Cookie 中。
[4] AppScan 会发送许多类型的“跨站点脚本编制”攻击,其中包括只作用于特定浏览器或浏览器版本的攻击。AppScan 的“在浏览器中显示”功能使用 Internet Explorer 来显示漏洞。对于不易侵害 Internet Explorer 而易侵害其他浏览器的变体来说,“在浏览器中显示”功能无法运作,且不会出现弹出窗口。

将输入发送给很容易受到跨站点脚本编制攻击的 Web 应用程序,有两种可能的方案:
A. 在响应页面中,返回发送给 CGI 脚本的参数值,嵌入在 HTML 中。
例如:[请求]
GET /cgi-bin/script.pl?name=JSmith HTTP/1.0

[响应]
HTTP/1.1 200 OK
Server: SomeServer
Date: Sun, 01 Jan 2002 00:31:19 GMT
Content-Type: text/html
Accept-Ranges: bytes
Content-Length: 27


Hello JSmith

B. 在 HTML 参数值上下文中,返回发送给 CGI 脚本的参数值。
例如:[请求]
GET /cgi-bin/script.pl?name=JSmith HTTP/1.0

[响应] HTTP/1.1 200 OK Server: SomeServer Date: Sun, 01 Jan 2002 00:31:19 GMT Content-Type: text/html Accept-Ranges: bytes Content-Length: 254


Please fill in your zip code:








示例 1 - 方案 A 下列请求由用户发送:

[攻击请求] GET /cgi-bin/script.pl?name=>"'>

[攻击响应方案 A] HTTP/1.1 200 OK Server: SomeServer Date: Sun, 01 Jan 2002 00:31:19 GMT Content-Type: text/html Accept-Ranges: bytes Content-Length: 83


Hello >"'>

在这种情况下,浏览器会执行 JavaScript 代码(>"'> 部分在这里不相关)。

示例 2 - 方案 B 使用与示例 1 相同的脚本和输入来引起攻击:

[攻击响应方案 B] HTTP/1.1 200 OK Server: SomeServer Date: Sun, 01 Jan 2002 00:31:19 GMT Content-Type: text/html Accept-Ranges: bytes Content-Length: 310


Please fill in your zip code:








>"'> 前缀用来跳出参数值的上下文。 先关闭参数字字段 ( "'> ),再关闭 标记 ( > ),会导致浏览器执行 JavaScript,但不会视为已当作 JavaScript 代码来解析或执行的参数值。

以下列出各种测试变体:

[1] >'>
[2] >">
[3]
[4] >"'>跨站点脚本编制
[5] >"'>跨站点脚本编制
[6] " style="background:url(javascript:alert('Watchfire XSS Test Successful'))" OA="
[7] -->
[8] '+alert('Watchfire XSS Test Successful')+'
[9] "+alert('Watchfire XSS Test Successful')+"
[10] >'>
[11] >">
[12] >+ACI-+AD4-+ADw-SCRIPT+AD4-alert(1234)+ADw-/SCRIPT+AD4-
[13] ���������������Watchfire XSS Test Successful����������

变体详细信息:

测试变体 [1] 和 [2]:这些都是最基本的跨站点脚本编制变体。 两个变体之间的差异是在 JavaScript 代码中对引号或单引号的使用。 部分 Web 应用程序程序员只清理用户输入中的单引号或引号,未同时清理两者。运行这两个变体都会检测到该漏洞。

测试变体 [3]:此测试变体是专为嵌入在

测试变体 [4]:部分 Web 应用程序程序员会清理用户输入中的





本页地址: [复制地址]
该页内容非本站原创 收藏自:http://blog.sina.com.cn/s/blog_894ed519010125vl.html
返回顶部 关闭(快捷键alt+C)
评论统计(0条)| 我要评论
暂无评论内容!
我要评论 
我要评论: 带*部分需要填写
 姓名称呼: * 请填写您的姓名或呢称
联系方式: QQ,MSN,Email都可以,方便交流 (仅管理员可见)
 评论内容: * 不超过100字符,50汉字
验证码:
    
  推荐链接
  最近更新  
·Host 'XXX' is not allowed...
·Win2008或IIS7的文件上传大...
·IIS7.0上传文件限制的解决方...
·测试信息2015-03-11
·asp.net中处理图片
·ASP.NET之Web打印-终极解决...
·Asp.net下C#调用Word模版实...
·asp.net下将页面内容导入到...
·asp.net导出为pdf文件
·asp.net生成pdf文件
·FCKeditor 文本编辑器的使用...
·ASP.NET 将数据生成PDF
·asp.net2.0导出pdf文件完美...
·AspJpeg的安装与测试
·JS验证浏览器版本对IE11的支...
  热门浏览  
·IE8和IE9出现“此网页上的问...
·无线路由器密码破解,教你断...
·js替换所有回车换行符
·QQ/MSN在线交流代码
·如何取消键盘上的一些快捷键...
·IE弹出“中国工商银行防钓鱼...
·win7声音小的解决方法
·webdav漏洞的利用
·强制两端对齐的函数或者CSS...
·win7下成功安装sql server ...
·显示器分辨率调的过高导致电...
·天诺时空技术技术论坛
·js验证手机号码格式
·JS展开和收缩效果(二)
·本地计算机上的 MSSQLSERVE...
  碧海澜涛居
网站首页关于本站站长简介开发案例技术资料美文日志摄影相册读书收藏影视收藏留言板
版权所有:碧海澜涛 QQ:410436434 Email:shaopo_guo@163.com 苏ICP备15000526号
免责声明:本站为个人网站,站内所有文字、图片等各类资料均为个人兴趣爱好所收集,不用作任何商业用途,亦不保证资料的真实性,若有因浏览本站内容而导致的各类纠纷,本站也不承担任何责任。本站部分内容来自互联网,如有涉及到您的权益或隐私请联系站长解决。