基于PHP的在线跨站脚本检测工具
王佩,牛晨,丁立彤
(西安邮电大学,陕西西安710121)
摘要:跨站脚本是一类基于网站应用程序的安全漏洞攻击,将研究和解决快速化的自动化检测。为了有效地防止跨站脚本被滥用,决定创建一种基于Web 的跨站脚本检测方式,以发现Web站点中潜在的跨站风险。完成主要的6大模块有:登陆模块、检测模块、扫描模块、输出模块、报表模块、日志模块。核心代码模块是检测和扫描部分,他们相互配合构造跨站参数并抓取反馈信息,其他模块配合核心代码起到辅助作用。选择PHP进行构造是一大亮点,PHP是一种Web程序语言,能够快速地解析前端DOM内容,在脚本语言中速度仅次于Python。用Web方式构造和检测本就属于Web 攻击的跨站脚本,将更加快捷、高效。
关键词 :跨站脚本;Web;PHP;安全检测;扫描
中图分类号:TP911?34 文献标识码:A 文章编号:1004?373X(2015)20?0041?03
Online XSS testing tool based on PHPWANG Pei,NIU Chen,DING Litong
(Xi’an University of Posts Telecommunications,Xi’an 710121,China)
Abstract:The XSS(cross site scripting) is a kind of attack against the security hole based on network application pro?gram. Its fast auto?test is studied in this paper. In order to prevent the abuse of XSS effectively,a Web?based XSS testingmethod is designed to detect the potential cross?site risks in Web sites. Six main modules(login module,detection module,scanning module,output module,report module and log module)were fulfilled,in which the kernel code modules are detectionand scanning ones,which cooperate each other to construct cross?site parameters and grab the feedback data. PHP is a Web pro?gram language,which can resolve the front?end DOM contents quickly,and its rate is second only to Python in scripting lan?guage. To use Web method to structure and detect XSS belonging to the Web attack is more convenient and efficient.
Keywords:cross site scripting;Web;PHP;security detection;scan
在跨站脚本越来越隐蔽的今天,应对该漏洞威胁就成了一项艰巨的任务[1?3]。在早期对跨站脚本的研究只停留在简单的暴力式攻击[4],而对绕过等新兴的攻击方式缺乏了解。但近几年国外对于跨站脚本的研究越来越深入,有了这些研究基础,Web 安全大大的提高了[5]。目前国内的研究现状,也基本已经涉及到跨站脚本的各个层次,唯独自动化的检测工具较少,即便是有也主要针对SQL注入等漏洞[6?8]。不专注与构造型的跨站脚本检测,本文将补充这类的不足。依据基本的Javascript 脚本和跨站构造方法,可以构造出多种多样的跨站语句,这样的语句被称为Payload。通过HTTP请求,不断地检测Payload提交到Web Server,就可以检测站点是否存在跨站脚本,达到检测的目的。
1 跨站脚本攻击及防范方法
1.1 跨站脚本攻击
跨站脚本漏洞的攻击方式主要来源于Web站点运行过程中,有攻击者将自己带有恶意的脚本代码,提交给该Web 服务器,并在浏览器加载时将恶意代码一起执行。在互联网大规模流行的初期,大量的网站曾遭受到跨站脚本漏洞的攻击[9]。本文从实践角度实践产生原理角度,对研究如何发掘与利用,如何防范等都做出了大量细致描述。本文将演示从系统的分析过程、搭建过程、运行过程、结果分析的过程逐一剖析。
1.2 构造攻击及Bypass
跨站脚本的漏洞攻击方法很多,其中不乏一些特殊的漏洞利用方式,当下所有绕过方式主要都是由人工完成。通过人工的漏洞查找虽然细致,但是效率低下,还要取决于攻击者自身的编程水平。这样一来注入工具就开始流行,而通过程序检测跨站脚本,无法做到及时发现和灵活的构造。如果要求准确,而不要求时间,就可以手动注入。如果要求效率而忽略精确程度,就可以采用自动化检测。本文就是采用自动化的检测方法进行的一系列评估。耗时短,扫描量大,但是构造方法相对于手动注入缺乏灵活性。
1.3 跨站脚本攻击防范方法
1.3.1 敏感过滤
对付跨站脚本最基本方法就是要将用户交互的所有地方进行过滤,在Web 后台语言中几乎所有的都包括前端标签过滤函数。
1.3.2 HTTP头指定类型
请求的报文必需包括请求行、请求头部、空白行和请求内容4个部分组成。在header of request包含了名/值对的组成的单个组合数据,每1对都是由名称和值构成,然后由英文冒号近行分割。在HTTP协议中可以使用报文的头部指定内容的类型,使得输出的内容避免被作为HTML解析[10]。
2 系统架构
2.1 逻辑架构
Web Scan 漏洞扫描系统是根据XSSer为扫描引擎的扫描工具。结合国内最成熟的PHP 开发框架Think?PHP[11],将扫描的Web 页面信息爬取出来,并根据参数寻找到关键字,重新构造POST 和GET 参数提交给XSSer 引擎进行扫描,完成后输出结果到文件中,前台读取文件,进行信息汇总。系统目录图如图1所示。
2.2 物理架构
图2物理架构描述了一个标准的Web Scan系统扫描时经过的物理结构,图中所有的元件都是物理设备,包括2台Web服务器、路由器、客户端、主机。扫描器部署结构。
2.3 系统运行环境
(1)平台环境:项目环境采用Ubuntu开发,兼容各Linux发行版本。
(2)语言环境:Python,PHP,Javascript。
(3)引擎环境:XSSer是用Python 开发的渗透测试跨站漏洞的工具,只针对跨站脚本进行检测。
(4)服务器环境:XAMPP(MySQL+ Apache+PHP+PERL)。
3 在线跨站脚本检测工具
(1)登陆模块。此登陆模块基于ThinKPHP、后台架构和charisma的前台架构,用户信息存于MySQL数据库中。系统默许管理员:admin 系统密码:admin。
(2)检测模块。系统的检测模块,引入simple_ht?ml_dom.php,http.php2 个PHP 的类文件,帮助分析页面的结构和连接数。DOM树[12?13]的结构如图4所示。
(3) 扫描模块。扫描结果将输出到一个特定