浅析XSS漏洞检测、利用及防范
孙 丹,胡 勇
【摘 要】[摘 要]XSS漏洞是当前Web应用程序中普遍存在的漏洞,很多Web应用程序因存在此漏洞而受到攻击。每个Web应用程序XSS漏洞出现的场景、攻击方式和危害程度都可能不同,对网站没有直接的影响,因此很多网站管理员对此攻击不太重视。文中描述XSS漏洞形成原理并讲述漏洞检测方法,通过对XSS攻击的利用方式,如偷取Cookie伪造身份登录,来获取浏览器明文密码分析,并提出相应的防范措施。 【期刊名称】信息安全与通信保密 【年(卷),期】2013(000)003 【总页数】3
【关键词】[关键词]XSS漏洞;检测方法;防范措施
0 引言
随着网络应用的日益广泛,其安全问题也越来越凸显。Web安全开始受到人们关注,XSS漏洞是在Web应用中最为普遍的漏洞,在很多Web应用程序中都可能存在,包括因特网上最为注重安全的电子银行的应用程序。利用XSS可以盗取用户账号、盗取和篡改企业数据资料、网站挂马等,危害非常严重。
1 XSS漏洞形成原理
现在的网站包含大量的动态内容以提高用户体验。如果程序员在编写应用程序时未对用户输入的数据进行过滤或转换[1],使得用户提交的数据在Web服务端未经过严格验证,直接将用户数据(可能是构造好的代码)返回客户端浏览器中解析,就会使客户端执行攻击,这就形成了XSS漏洞。
2 XSS漏洞的检测
XSS漏洞的检测分两种方式:黑盒测试和白盒测试[2]。黑盒测试是在对网站源码不清楚下,通过在网站页面中输入数据,根据程序返回的信息进行检测;白盒测试是在具有网站源代码情况下,对网站的源码进行审计,挖掘漏洞。 2.1 黑盒测试XSS漏洞
以常见的数据查询页面进行分析来检测XSS漏洞:先在查询框中输入一些特殊的字符(包括< > / \,比如:<小说>,然后在返回页面源码中搜索是否存在原样的信息<小说>,如果存在<小说>字样,则说明查询框处未对输入的数据进行任何编码过滤,可能存在
XSS
漏洞。进一步通过
进行验证,看返回页面是否有弹出‘123'警告提示框,如果出现弹出框,则该处存在明显的XSS漏洞。对Web应用进行XSS漏洞检测,不能仅仅局限于上述简单的输入特殊字符测试。有些Web应用程序会在客户端对常见的XSS字符进行javascript过滤,这种过滤仍不能完全阻止XSS漏洞的形成。通过对请求的数据拦截并修改,输入XSS代码检测[3],这种检测方式通常被测试人员忽略。图1为XSS恶意输入绕过javascript的检测流程[3]。 2.2 白盒测试XSS漏洞
以织梦内容管理系统源码进行审计为例,检测代码中是否存在XSS。其代码处:$dsq->ExecuteNoneQuery(“update'#@__guestbook'set'msg'='$msg','posttime'='“.time().”'where id='$id'”),对代码中变量$msg数据来源分析,发现代码未对变量$msg的值进行过滤,直接将该值传入数据库中更新,这样就产生了XSS漏洞。可以在url后构造检测代码进行检测,如:http:
//www.xxx.com/plus/guestbook.php?Action=admin&Id=100&msg=
[4], 弹 出 '123'的警告提示框说明检测到XSS。3 XSS攻击利用方式
XSS漏洞主要被攻击者利用来读取网站用户的cookies或者获取用户登录账户密码,以伪装成用户登录网站,获得此用户的权限。跨站脚本攻击的一般流程如下[5]:①攻击者以某种方式发送XSS的http链接给目标用户;②目标用户登录存在XSS漏洞的网站,在登录期间同时打开了攻击者发送的XSS链接;③漏洞网站执行了此XSS攻击脚本;④目标用户页面跳转到攻击者的网站,攻击者取得了目标用户的信息;⑤攻击者使用目标用户的信息伪造身份登录网站,完成攻击。
3.1 偷取cookies欺骗登录
cookie是用户浏览某网站时,网站服务器存储在用户机器上的一个小文本文件,存储用户登录信息,可以利用XSS偷取用户cookie,实现伪造用户身份登录网站。假设有一个论坛,该论坛的投票帖的添加目录处存在XSS漏洞,首先攻击者注册成为该论坛的账户,并在发帖处添加某个主题并发表,然后某个用户登录并查看了该帖子,在查看该帖子的同时,向攻击者的服务器发送该用户登录该论坛的cookie,最后攻击者获取用户cookie后可以将自己登录论坛的cookie伪造成该用户的cookie登录论坛[6],如果是管理员浏览了该帖的话,攻击者就拥有管理员权限。例:在动网论坛的发表投票帖处存在存储型漏洞,添加项目栏中未对输入的内容进行过滤,导致XSS攻击,验证过程如下: 1) 先在动网上注册个账户:songtong/123456,网址为:http://192.168.21.188:8080。
浅析XSS漏洞检测、利用及防范



