您好, 访客   登录/注册

基于Python的Web漏洞扫描器

来源:用户上传      作者:徐贵江 黄媛媛 陈子豪 殷旭东 钱振江

  摘  要:当下Web安全问题频发,很多Web网站代码设计时安全问题考虑不足,而市面上的漏洞扫描器存在扫描速度慢、软件臃肿、可扩展性不强等问题,我们基于Python设计了一个Web漏洞扫描器,在参考其他同类产品设计的基础上,采用注入分析、字典扫描等方法提高了扫描器性能,并增加了开放性的插件接口等一些实用且独特的功能。本文介绍了其工作原理,具体实现及实验测试。
  关键词:Web漏洞检测;扫描器设计;Python;插件
  中图分类号:TP309     文献标识码:A
  Abstract:The web security problems are frequent at present,and many website code designs do not have sufficient consideration for security problems.By contrast,the vulnerability scanners on the market have issues such as slow scanning speed,bloated designs,and poor scalability.Therefore,we designed a web vulnerability scanner based on Python,considering the designs of other similar products.This research used injection analysis,dictionary scanning,and other methods to improve scanner performance and added some practical and unique features like open plug-in interface.The working principle,specific implementation,and experimental testing are described.
  Keywords:web vulnerability detection;scanner design;python;plug-in
  1   引言(Introduction)
  如何保障Web產品的安全是当下移动互联网一个重要的研究课题,现如今虽然市面上有了几款[1-3]较为成熟的漏洞扫描检查工具,但是大部分工具都不具备动态加载模块的功能,对部分漏洞的检查与修复不够准确,从而延误安全人员及时处理与修复漏洞。提升移动互联网信息系统安全性,迫切需要构建面向各种Web安全漏洞的收集和扫描系统[4]。
  为了使得用户获得更好的扫描体验,需要加强对Web安全漏洞本身的研究,更加有效地分析及扫描Web应用安全漏洞,我们先分析了当下Web网页中主要存在的安全问题[5,6],近而提出了一种基于Python的漏洞扫描器,该扫描器目前具备对SQL注入、XSS攻击、文件上传、弱口令、后门五类高危高频率出现的漏洞的扫描功能。
  2   思路与工作原理(Idea and working principle)
  针对SQL注入漏洞,本扫描器会在SQL注入模块采用注入点分析和SQL注入实现判定的方法扫描漏洞;针对XSS攻击漏洞,本扫描器的XSS攻击模块会利用爬虫板块来分析Web站点,寻找切入点,然后对切入点进行测试,判断是否存在XSS攻击漏洞;针对文件上传漏洞,本扫描器会在文件上传模块对文件的具体内容、拓展名、大小,以及上传路径四个方面使用不同的方法进行检测;针对弱口令漏洞,本扫描器会在弱口令模块通过弱口令字典对所在表单信息进行爆破,然后分析返回的页面,从而达到扫描漏洞的目的;针对后门漏洞,本扫描器会在后门模块根据网页的脚本语言类型来选择相应的字典进行扫描,然后对于返回的应答状态来判断是否存在后门漏洞;针对用户后期漏洞维护和更新的需求,本扫描器在拓展模块提供一套模块标准,使用户可以自主编写或者移植别的模块。
  本扫描器的基本工作原理如图1所示分为四层:第一层输入层:提示用户输入一个需要检测的URL;第二层扫描控制层:调用多线程、深度选择和字典爆破模块,根据URL地址发送请求,获取服务器相应页面,尝试模拟对这些URL的访问以获取尽可能多的URL;第三层模块控制层:采用一定策略获得并且重新组织需要的链接地址,将其添加到扫描进程列表中。将按照深度提炼的子URL返回到相对应的功能模块进行更深一步的分析;第四层输出层:深度解析之后在扫描结果列表中输出相对的扫描结果,以及相应的修复建议。
  3   具体设计与实现(Specific design and implementation)
  本扫描器是由SQL注入漏洞扫描模块、XSS攻击扫描模块、文件上传检测模块、弱口令爆破检测模块、后门扫描检测模块和功能拓展模块六个模块组成的。
  3.1   SQL注入扫描模块
  在SQL注入[7]扫描模块中,我们设计了四个工作流程对目前的SQL注入安全问题进行检测:获取网站链接(完成对网站URL及其相关信息的管理)→SQL注入点分析[8](构造注入判断语句,将URL带上判断语句进行访问,存在注入点,则保存,否则丢弃)→SQL注入实现判定(带上可能的恶意代码,进行访问,访问成功则表示该注入点可以利用)→提供修复建议。
  3.2   XSS攻击扫描模块
  XSS漏洞[9]检测模板由URL信息板块、爬虫板块、测试板块和数据库四大部分组成。URL信息板块来完成对网站URL及其相关信息的管理,其有用信息存放到数据库中。爬虫板块来分析Web站点,寻找切入点,并记录相关信息。测试板块提取出数据库中的信息,对其进行切入点的测试工作,完成之后将含有漏洞的URL,以及相关记录信息输出作为提供修复建议的一部分,并处理所有输出类型的XSS漏洞。   3.3   文件上传检测模块
  在文件上传漏洞[10]扫描模块中,我们主要针对上传文件的具体内容、文件的拓展名、文件的大小,以及文件上传的路径四个方面进行检测。
  (1)文件内容检测方法分为两步,一是获取行为数据,调取那些敏感的行为数据(如eval、system、exec),二是检测隐藏的执行数据,比如发现某个函数执行了,代码中却找不到这个函数名,则认为这是个异常行为,可能存在文件上传漏洞。
  (2)文件拓展名检测,是使用pathinfo函数和substr函数实现的,为防止黑客在文件名中插入“‘\0’”符号绕过检测,因此,在使用扩展名对文件类型进行检查时需要先将文件名中的“‘\0’”进行替换,接着使用getimagesize函数对上传文件的MIME类型进行检查。
  (3)文件大小检测,是通过使用filesize函数判断实现的,如果超过了预设值则存在文件上传漏洞。
  (4)文件上传路径检测,上传一个Webshell脚本,对保存临时文件名的参数进行修改,如果成功了,那么就存在文件上传漏洞。
  3.4   弱口令爆破检测模块
  在弱口令爆破模块中,主要是通过弱口令字典对所在表单信息进行爆破,从而获取信息。我们首先通过URL扫描目录,检测网站的form表单,再检查表单里面的关键字。比如指定关键字类似“user”“pass”的视为登录页面,根据表单的提交方法,跑字典爆破,再根据返回的包的大小来判断是否正确登录,进而进一步判断是否存在弱口令漏洞。
  3.5   后门检测扫描模块
  在后门扫描模块中,首先是让用户输入一个有效地URL,系统后台在URL顶级域名后加/index.xx(xx表示脚本语言,如PHP、asp等)并访问,根据返回服务器脚本语言判断脚本类型来选择相应的字典进行扫描,通过扫描返回的服务器的应答状态来判断是否有可能存在后门。
  上述五个模块在检测到漏洞后,本扫描器会针对漏洞所在位置、漏洞数量和漏洞特点,给出相对应的修复建议。
  3.6   功能拓展模块
  在功能拓展模块中,我们给本扫描器规范了一套模块标准,这里以SQL注入扫描模块的框架为例具体如图2所示。
  这些使本扫描器可以提供拓展支持,用户可以轻松移植其他Python脚本工具来满足自身的漏洞扫描需求,同时用户也可以根据需求,自定义脚本。本扫描器具有较大的移植性。
  4   测试和验证(Testing and verification)
  4.1   测试过程
  将本扫描器和其他同类别的产品做对比测试。首先是功能上,将本扫描器与其他四款同类产品(WebInspect、Whisker/libwhisker、Acunetix Web Vulnerability Scanner、椰树Web漏洞扫描器)相比;其次是性能上,测试内容是DVWA三种不同漏洞等级下的SQL漏洞,漏洞识别率方面依旧对比了上面提到的四种同类产品,漏洞扫描效率方面对比了业内老牌的Acunetix Web Vulnerability Scanner。
  4.2   测试结果
  在功能方面,如表1所示,本扫描器的漏洞可扫描种类和功能特性与WebInspect、Whisker/libwhisker、Acunetix Web Vunerability Scanner(下简称为AWVS)和椰树Web漏洞扫描器四款产品相比,具备很大的优势。
  4.3   结果分析
  经过我们的测试,我们开发的WebScan漏洞扫描系统已经具备了针对网页在组件、权限、数据、代码和通信系统等方面运行过程中产生的可能存在的安全漏洞问题的检测分析与修复功能,并显示出我们的系统具有较好的网页漏洞检测效果和不错的修复能力。且相对于目前市场上同类竞争产品来讲,我们开发的WebScan漏洞扫描系统的灵活性与便携性都更胜一筹。
  5   结论(Conclusion)
  目前本作品提供了一些面向特定漏洞的扫描修復模块,因此能够较好地覆盖主要的漏洞问题。同时本作品的各个模块提供有扩展接口,方便使用者对代码进行完善和二次开发,并且该作品是以Python作为开发语言,由于Python的普适性和轻量性的两大特点,使得该程序几乎可以在任何平台快速运行。
  此外,我们的漏洞扫描器,针对Web网页进行了深入的
  研究,能够提出相应的切实有效地修补建议,可以切实提高网站的自身安全级,并具有重要的实用价值,促进Web的应用安全,拥有较为可观的市场发展前景。
  本作品目前还存在一些改进的空间,比如稳定性还可以进一步加强,可设计为浏览器插件以方便进一步使用等。
  参考文献(References)
  [1] Micro Focus.动态应用安全测试 (DAST):Fortify WebInspectWebInspect[EB/OL].https://www.microfocus.com/zh-cn/products/Webinspect-dynamic-analysis-dast/overview,2020-01.
  [2] Acunetix.Web Application Security Scanner[EB/OL].https://www.acunetix.com,2020-01.
  [3] 陈禹.Web漏洞扫描器一览[J].计算机与网络,2016,42(20):56-57.   [4] 尹彦涛.Web漏洞扫描系统设计与实现[D].中国海洋大学,2014.
  [5] 张烨青.Web应用安全漏洞扫描器爬虫技术的改进与实现[D].北京邮电大学,2014.
  [6] Manohar,E.,Shalini Punithavathani,D..Hybrid Data Aggregation Technique to Categorize the Web Users to Discover Knowledge About the Web Users[J].Wireless Personal Communications,2017(4):1-6.
  [7] Wenfei Fan,Jeffrey Xu Yu,Jianzhong Li.Query translation from XPath to SQL in the presence of recursive DTDs[J].The VLDB Journal,2009,18(4):2-4.
  [8] Jevri Tri Ardiansah,Aji Prasetya Wibawa,Triyanna Widyaningtyas.SQL Logic Error Detection by Using Start End Mid Algorithm[J].Knowledge Engineering and Data Science,2017,1(1):1-11.
  [9] Steinhauser,Antonin,Tuma.DjangoChecker:Applying extended taint tracking and server side parsing for detection of context-sensitive XSS flaws[J].Software:Practice and Experience,2019-Wiley Online Library,2019(1):1-6.
  [10] 周开东,魏理豪,王甜,等.远程文件包含漏洞分级检测工具研究[J].计算机应用与软件,2014(2):21-23.
  作者简介:
  徐贵江(1999-),男,本科生.研究领域:网络安全,WEB系统开发.
  黄媛媛(1999-),女,本科生.研究领域:信息安全,软件开发.
  陈子豪(1997-),男,本科生.研究领域:信息安全,软件开发.
  殷旭東(1970-),男,硕士,工程师,实验师.研究领域:网络安全,移动计算.本文通讯作者.
  钱振江(1982-),男,博士,副教授.研究领域:信息安全,信息物理融合系统和定理证明.
转载注明来源:https://www.xzbu.com/1/view-15172550.htm