为什么要用XSS
网上很多文章都是直接讲XSS分什么类型,怎样利用XSS,怎样发现XSS。好像没有讲为什么要用XSS(可能我阅读面不太广),那么不管了,自己总结下。
有人会问:把保存型XSS放在一边不谈,为什要用反射型XSS和DOM-BASE XSS,这么麻烦,不如要攻击A站点,直接在攻击者控制的B站点保存一段恶意js,并向用户传送一个直接指向这段脚本的链接?
原因一:伪装。攻击者传送的是以A站点开头的URL,而不是B站点开头的URL更能令用户上当
比如:A:的站点为:http://www.yunsec.com/
B的站点为:http://www.yunsec.net/
那么你构造URL:http://www.yunsec.net/hello.asp?message=http://www.yunsec.net/evil.js /*http://www.yunsec.net/evil.js为其他域的脚本*/
比直接构造URL:http://www.yunsec.net/evil.js传送给用户,更能让用户点击。
更者,message后面的网址还可以经过编码,更会迷惑用户。这种更多用于钓鱼。
原因二:第二点也是最重要的一点,由于同源策略的限制,导致如果不用XSS,浏览器不会执行脚本或者不会返回攻击者想要的数据。
利用XSS之所以成功是因为攻击者的恶意JS是由http://www.yunsec.net/hello.asp提交的。
浏览器误以为是www.yunsec.net此域提交的。
于是浏览器会执行http://www.yunsec.net/evil.js这段恶意脚本。
又来YY下下列场景:
A站点相当于蓝军的制造厂(无攻击性),B站点相当于绿军的根据地(有攻击性)
某时,绿军派遣特工(恶意js)去制造厂窃取机密,但是蓝军的制造厂大门(同源策略)是紧闭的,特工无法穿越(因为不是请求),
但是特工经过高超的装扮技术(XSS),假扮成了制造厂里的一员,于是大门向特工打开(bypass同源策略),然后特工达成目的。
http://www.yunsec.net/a/security/web/jbst/2012/0227/10170.html