基于PHP的在线跨站脚本检测工具

2015-10-26 22:32王佩牛晨丁立彤
现代电子技术 2015年20期
关键词:安全检测

王佩+牛晨+丁立彤

摘 要: 跨站脚本是一类基于网站应用程序的安全漏洞攻击,将研究和解决快速化的自动化检测。为了有效地防止跨站脚本被滥用,决定创建一种基于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 PHP

WANG Pei, NIU Chen, DING Litong

(Xian University of Posts & Telecommunications, Xian 710121, China)

Abstract: The XSS (cross site scripting) is a kind of attack against the security hole based on network application program. Its fast auto?test is studied in this paper. In order to prevent the abuse of XSS effectively, a Web?based XSS testing method 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 detection and scanning ones, which cooperate each other to construct cross?site parameters and grab the feedback data. PHP is a Web program language, which can resolve the front?end DOM contents quickly, and its rate is second only to Python in scripting language. 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开发框架ThinkPHP[11],将扫描的Web页面信息爬取出来,并根据参数寻找到关键字,重新构造POST 和 GET 参数提交给XSSer引擎进行扫描,完成后输出结果到文件中,前台读取文件,进行信息汇总。 系统目录图如图1所示。

图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)。

图2 物理架构

3 在线跨站脚本检测工具

(1) 登陆模块。此登陆模块基于ThinKPHP、后台架构和charisma的前台架构,用户信息存于MySQL数据库中。系统默许管理员:admin 系统密码:admin。

图3 登陆界面

(2) 检测模块。系统的检测模块,引入simple_html_dom.php,http.php2个PHP的类文件,帮助分析页面的结构和连接数。DOM树[12?13]的结构如图4所示。

图4 DOM树

(3) 扫描模块。扫描结果将输出到一个特定的TXT文件中,输出结果存在关键字“Final Reasult”将这样的部分截取出来,截取部分就是扫描的最终结果,将结果的风险等级读取并传给PHP 输出结果,绘制风险等级图。后台扫描过程如图5所示。

图5 后台扫描

(4) 输出模块。输出过程主要是根据XSSer的扫描结果下的结论,根据Web系统风险等级分类标准输出。输出的主要流程为:

第1步:抓取TXT结果文件中的风险 Reasult 的相关参数;

第2步:将第1步中的内容提交给风险绘制模块;

第3步:将第2步中的内容提交给站点输出模块;

第4步:按顺序执行以上模块,运行完成,模块结束。

(5) 报表模块。TCPDF的导入过程,下载TCPDF,然后参考文件说明里的内容一步步进行部署,安装和迁移。

(6) 日志模块。Web Scan系统选取PHP的报表输出组件WordPress。在项目根目录下生成的log.txt文件中插入相关的日志内容。

4 系统自身安全

Web Scan作为一款漏洞监测、注入类的软件。自身的安全性非常重要,为了防止系统被攻击,内置了一些安全过滤规则。在ThinkPHP的配置中加载进去一个新建的安全配置文件,该规则将在运行时写入runtime.php文件中。

5 结 语

现在,越来越多的站点重视并修复了跨站漏洞。但是依然有大量的中小型网站存在这样的安全问题,对于这一项漏洞的研究工作仍将继续。目前国内的研究现状,也基本已经涉及到跨站脚本的各个层次,唯独自动化的检测工具较少。即便是有也主要针对SQL注入等漏洞,不专注于构造型的跨站脚本检测,本文补充了这类的不足。本文完成主要的6大模块:登陆模块、检测模块、扫描模块、输出模块、报表模块、日志模块。核心代码模块是检测和扫描部分,他们相互配合构造跨站参数并抓取反馈信息,其他模块配合核心代码起到辅助作用。

参考文献

[1] 廖丹子.“多元性”非传统安全威胁:网络安全挑战与治理[J].国际安全研究,2014(3):25?39.

[2] 邓袁,何国辉,吴庆.跨站脚本攻击及防范技术研究[J].电脑知识与技术,2012(6):1234?1236.

[3] 吴迪,连一峰,陈恺,等.一种基于攻击图的安全威胁识别和分析方法[J].计算机报,2012(9):1938?1950.

[4] 李钊,彭勇,谢丰,等.信息物理系统安全威胁与措施[J].清华大学学报:自然科版,2012(10):1482?1487.

[5] 陈建青,张玉清.Web跨站脚本漏洞检测工具的设计与实现[J].计算机工程,2010(6):152?154.

[6] 王云,郭外萍,陈承欢.Web项目中的SQL注入问题研究与防范方法[J].计算机工程与设计,2010(5):976?978.

[7] 练坤梅,许静,田伟,等.SQL注入漏洞多等级检测方法研究[J].计算机科学与探索,2011(5):474?480.

[8] 马凯,蔡皖东,姚烨.Web 2.0环境下SQL注入漏洞注入点提取方法[J].计算机技术发展,2013(3):121?124.

[9] 邱永华.XSS跨站脚本攻击剖析与防御[M].北京:人民邮电出版社,2013.

[10] 吴翰清.白帽子讲Web安全[M].北京:电子工业出版社,2012.

[11] 许宏云,李煜.基于ThinkPHP的权限控制模块的设计与实现[J].微计算机信息,2012(9):234?235.

[12] 郭建兵,崔志明,陈明,等.基于DOM树与领域本体的Web抽取方法[J].计算机工程,2012(5):56?58.

[13] 罗明宇,凌捷.基于DOM树序列值比对的SQL注入漏洞检测[J].计算机工程与设计,2015(2):350?354.

猜你喜欢
安全检测
危险场所开展电气防爆安全检测
网络恶意流量检测技术研究