吕宝路 梁景普 欧翰琪 陈涛
摘要:互联网的开放性和自由性使得黑客更容易获取到敏感信息,造成网络安全问题的发生。企业通常利用Web扫描器实现安全评估检测,但是这些传统扫描器检测重点为常见安全漏洞类型,如SQL注入、XSS攻击、文件上传等,对于敏感信息的检测程度不足。为此,该文将以传统Web安全扫描器为基础,以加强检测企业敏感信息为目的,采用主机存活判断、端口扫描、指纹识别和漏洞扫描技术实现面向敏感信息检测的Web综合漏洞扫描器,用于扫描易于暴露的敏感信息及网站中可能存在的安全漏洞。同时实现了最新漏洞消息推送功能,最终生成安全报告供开发人员修复使用,有效保障Web应用的安全性。
关键词:敏感信息泄露;漏洞扫描;python扫描器;漏洞推送;安全工具
中图分类号:TP399 文献标识码:A
文章编号:1009-3044(2020)23-0030-03
Abstract: The openness and freedom of the Internet make it easier for hackers to obtain sensitive information and cause network security problems. Enterprises usually use web scanners to implement security assessment detection, but these traditional scanners focus on common types of security vulnerabilities, such as SQL injection, XSS attack, file upload, etc., which are not enough for sensitive information detection. Therefore, based on the traditional web security scanner, aiming at strengthening the detection of enterprise sensitive information, this paper uses host survival judgment, port scanning, fingerprint identification and vulnerability scanning technology to realize the web comprehensive vulnerability scanner for sensitive information detection, which is used to scan sensitive information that is easy to be exposed and the possible security vulnerabilities in the website. At the same time, it realizes the latest vulnerability message push function, and finally generates a security report for developers to repair and use, which effectively guarantees the security of web applications.
Key words: sensitive information disclosure; vulnerability scanning; python scanner; vulnerability push; security tools
1 引言
随着互联网的发展,越来越多的行业融入互联网,以互联网平台为媒介与用户交流,导致企业资产易于从外部访问[1]。在企业迅速发展的过程中,业务面临着越来越多,越来越复杂的局面,用户的权益和信息价值相应也越来越高,企业面临的安全挑战就越来越大,敏感信息泄露的问题需要得到重视。敏感信息(或敏感数据)是指不当使用或未经授权被人接触或修改后,会产生不利于国家和组织的负面影响和利益损失,或不利于个人依法享有的个人隐私的所有信息,常见的敏感信息有,姓名、身份证号码、住址、电话等[2]。由于互联网的易访问性,黑客可以较为容易得获取敏感信息。与此同时,由于企业员工安全防护意识不足[3](只注重实现功能而忽略了开发组件中的一些易于泄露的接口等),开发代码频繁迭代,忽略了信息的脱敏处理导致信息泄露的安全风险层出不穷[4]。安全事件发生后,造成了用户对企业的不信任,给企业的形象和价值构成巨大的影响,企业还会面临严重的财务、法律或问责风险。
安全事件频发的根本原因,大多数是因为一些账号密码等敏感信息易于泄露的问题。所以企业加强信息安全保护建设已刻不容缓,加强敏感信息的检测至关重要。通常企业会利用安全扫描器自动地检查Web应用程序的安全弱点和风险,而现有的安全扫描器主要检测目标为Web应用程序中常见的安全漏洞类型,忽视了互联网发展带来的新型业务安全漏洞威胁。同时当有重大安全漏洞出现时,企业获取信息预警较慢,对已知漏洞的了解低于黑客,这个时间差提升了企业易受攻击的风险,传统扫描器不具备此预警功能。
为此,本文提出了面向企业敏感信息检测的Web综合型漏洞扫描器的实现,包含对传统漏洞SQL注入,XSS攻击这两类高频出现漏洞[5]的检测功能,还有面向企业敏感信息检测功能,通过插件利用已知脚本检测网站漏洞,并具备CVE(漏洞披露)信息推送功能,提升Web掃描器检测水平。
2 系统设计
本系统设计了一个Linux平台下的,基于异步编程、多线程使用Python語言实现的高效率、可拓展性较好的自动化扫描器[6]。
系统工作流程为,对用户输入的命令参数和url解析,判断url是否正确。如果正确扫描器则通过爬虫模块构造http请求,基本信息扫描模块从返回的响应信息中识别网站指纹信息[7],与已知漏洞指纹匹配,调用对应的检测脚本分析。同时,爬虫模块对目标网址进行深度爬虫,提取网页源码中的链接,对每个链接进行漏洞扫描,将结果存放到数据库。输出模块从数据库读取信息,以良好的页面展示效果呈现给用户[8]。
2.1 输入解析模块
用户输入目标的方式有可以有多种形式(单一网址,网址文件,ip地址),系统通过对用户输入的不同参数进行解析从而调用相应函数,获取目标url。
2.2 信息扫描模块
信息扫描模块主要是为了识别网站指纹信息,做到与已知漏洞匹配从而更好地进行漏洞检测,识别高危服务。信息扫描模块分为基本信息扫描和敏感信息扫描。基本信息扫描为识别网站指纹信息,如网站使用的中间件、开发语言、操作系统类型,是否存在cdn和waf。敏感信息扫描识别开放端口及其对应的系统服务、目录文件。还包括经爬虫功能后获得的网站源码,检测其中的js文件、html注释中是否存在如电话号码、邮箱等信息。
2.3 漏洞检测模块
漏洞检测模块分为SQL注入和XSS攻击检测,以及已知高危漏洞检测模块。扫描器会对获取的url进行注入点识别,构造包含注入判断请求的http数据包,解析返回响应包信息识别是否存在漏洞。高危漏洞检测则通过Web指纹信息与已知的漏洞库匹配检测,识别漏洞是否存在,将最终结果添加到数据库中。
2.4 漏洞信息更新模块
扫描器通过时间设置的规定,定时爬取集成了CVE信息的网站,识别CVE编号,依据编号请求NVD(国家漏洞数据库(美国国家标准与技术研究院))获取漏洞详细信息,输出结果报告。
3 具体实现
3.1 爬虫模块
系统根据用户输入的参数调用对应的处理函数,解析获取目标url。在爬虫开始之前,需要判断目标主机是否存活。如果目标输入的是url则通过域名解析判断,如果是ip则根据操作系统类型判断,Windows调用ping检测Linux调用nmap来判断主机存活情况[9]。目标url存活的情况下,通过网站根页面分析html源码,提取标签中的url,将域名与目标不同的url(说明不是同站链接)过滤后,保存到列表中。对于不含域名的链接则添加目标网站域名(常见于站内跳转链接如:artists.php?artist=1,通过添加域名拼接成完整的访问地址),将能够正常访问的url添加到列表中,然后去重整理列表。重复访问url列表,通过广度优先爬虫尽可能多地获取url。
3.2 敏感信息检测
遍历访问爬虫获取的url列表,解析提取网页源码,通过正则匹配获取js文件、html注释内容中包含的敏感资产信息(密码、电话号码、邮箱等)。同时使用socket发包探测常见端口,从返回头信息中获取网站指纹与指纹库匹配获得端口服务指纹。结合敏感文件字典构造http请求,通过返回状态码判断是否存在敏感文件泄露情况。
3.3 漏洞检测
3.3.1 SQL注入检测
SQL注入功能基于爬虫模块获取网站链接,然后通过对http解析请求识别链接中的各个参数,对参数添加测试判断语句构造url,根据请求返回网页内容是否和原始网页请求内容一致进行判断。如果不一致则存在SQL注入漏洞,再通过预先定义的数据库特征字典正则匹配判断数据库类型。
3.3.2 XSS攻击检测
从爬虫模块获取url,解析参数并添加测试关键词形成新的url,构造http请求,然后识别返回网页源码中是否存在关键词。如果存在说明网页执行了相应语句,证明XSS漏洞存在。
3.3.3 已知高危漏洞检测
将Web指纹信息与漏洞资料库中指纹进行匹配,如一致则调用检测脚本输出检测结果。
3.4 最新漏洞预警
先设置关注漏洞列表,如果没有则默认为空,即获取所有最新CVE漏洞,否则为获取指定漏洞信息。通过爬虫功能请求指定网站获取每日最新CVE漏洞的url地址,将结果存放到url列表。遍历url列表,爬虫功能获取url的CVE描述信息,将与关注漏洞列表一致的url存储为一个新的列表。爬虫从新列表中获取url请求NVE,从返回结果中提取漏洞描述信息。其中,获取的CVE描述为英文,通过python翻译模块转换为中文,最终输出包含漏洞编号、漏洞描述、NVE链接详情的html格式报告。
4 实验分析
4.1 测试对比
本漏洞扫描器对专门用来检测扫描器能力的试验站点http://testphp.vulnweb.com/进行了测试,通过和xray、AWVS扫描器对比,发现本扫描器对于敏感信息的检测具备优势。
并且截至目前,成功获取到了2020年的最新CVE漏洞描述。
4.2 结果分析
通过以上测试对比,本系统已经具备了安全漏洞检测能力。相比于其他扫描器,针对敏感信息检测的能力更胜一筹,能够在一定程度上解决因敏感信息泄露引起的安全问题。
5 结语
本文针对越来越多的敏感信息泄露事件引起的安全问题,实现了面向敏感信息检测的Web综合漏洞扫描器,通过实验分析达到了预期目标,可以成功检测到敏感文件并提供信息报告,对检测Web安全有重大的使用价值。不过本扫描器还需不断改进,如对于使用了异步更新机制的目标网站获取链接能力,POST请求参数的解析等还需加强[10],进步空间还很大。希望通过本扫描器的实现为Web安全漏洞扫描器的设计提供一些简单帮助,保障网络安全。
参考文献:
[1] 赵孟,谭玉波.网络安全评估技术综述[J].计算机科学与应用,2015,5(1):18-24.
[2] 罗力.社交网络中用户个人信息安全保护研究[J].图书馆学研究,2012(14):36-40,76.
[3] 陈春宏,徐百萍,艾霞霞,等.安全意识的定义、重要性及改善措施研究[J].安防技术,2019,7(1): 7-14.
[4] 郝子希.基于渗透技术的Web应用漏洞扫描器设计与实现[D].上海:东华大学,2018.
[5] 郭锡泉,陈香锡.强化网络安全和安全情报意识,共筑网络安全防线——基于OWASP和CNCERT相关项目的分析[J].网络空间安全,2020,11(2):66-74.
[6] 牛咏梅.面向Web应用的漏洞扫描器的设计与实现[J].南阳理工学院学报,2018,10(6):66-69.
[7] 郎智哲,封筱宇,董齐芬.浅谈Web渗透测试的信息收集[J].计算机时代,2017(8):13-16.
[8] 卢志科,康晓凤,眭桢屹,等.Web应用漏洞扫描检测系统[J].软件导刊,2019(8):186-190,195.
[9] 易文平.Web扫描网络数据特征浅析[J].宜春学院学报,2014,36(12):51-52.
[10] 张烨青.Web应用安全漏洞扫描器爬虫技术的改进与实现[D].北京:北京邮电大学,2014.
【通联编辑:代影】