神级测试人员才会的测试技术:黑客之刃扫描器
发布于 2021-05-09 23:42 ,所属分类:软件测试工程师学习资料
出品|51Testing软件测试网
前言
我在做51Testing讲堂以及和参加讲堂的同学们在群里互动的时候,有个同学提出最好能在安全工具当中集成扫描功能,这个建议勾起了我的兴趣,下面大家将会看到的扫描器,就这么出炉了。
扫描器的设计思想是:灵活、易扩展、易修改。
灵活的意思就是可单独执行专项漏洞的扫描,也可以批量执行集成的所有漏洞探测模块;易扩展的意思就是,新的漏洞检测模块可清晰简单的集成进扫描器;易修改,对各个漏洞扫描模块可根据特殊情况修改探测逻辑。
不管是安全,或者是渗透测试,我们的假想敌都是不法的黑客分子,就个人能力的角度来看,对漏洞的理解及漏洞利用场景的熟悉程度,决定了我们匹配哪一级别的骇客。
当然,现在的骇客好像越来越团队化了,可能是因为现在高价值系统的防护成本越来越高,独狼下口越来越难,所以他们聚成缕子,人越来越多,发展出了APT攻击。
APT就是高级可持续性渗透,啥意思?
就是哪怕你花了几十万的软硬件防护且成功了,也不可能没有漏洞,就算我一天找不到,两天总可以,两天不行就三天、四天、五天......
等到你海枯石烂,防护墙过期那一天。
上面是开玩笑,大家可以搜索下APT,渗透层面的黑客,首先是个战术大师,就像刺客,也许说忍者更贴切。
本文抓要为大家讲解刺客的匕首——扫描器,文章脉络很简单,先讲怎么用,在讲怎么扩展。
扫描器的使用
扫描器下载地址:https://gitee.com/samllpig/SafeTool-51testing
工具的详细安装教程:http://quan.51testing.com/pcQuan/lecture/117
先打开我们的扫描器看下界面:
扫描器界面:
好了,上面就是我们的扫描器,全部使用命令操作,简单易记,大家跟着敲就可以了。
help命令使用
help:列出集成的插件命令和描述。
我们开始扫描之前要做些基本的设置,输入helpset命令,查看我们需要设置那些参数,带*号的是必选项。
info命令
info:显示详细的漏洞检测模块
info命令的使用格式是:info[插件名称],插件名称就是上图中输入help命令得到的。
输入info attacks:
输入infoaudit命令:
输入infobrute命令:
输入infodisclosure:
set命令
在进行扫描之前需要进行基本的设置工作,通过help set命令查看可以设置的选项,在通过set命令设置,在helpset显示的选项中带*号的是必选项,其他的根据需要进行设置。
set命令格式:set [选项][参数]。
举例:seturlhttp://192.168.16.132/wordpress/?s=11
check命令
输入checkargv显示set中设置的参数值。
其中agent参数,即版本信息默认会随机获取。
exec命令
执行检测命令,命令格式:exec插件名称[.模块名称]。
如果只输入插件名称[attacks、audit、brute、disclosure],则会执行当前插件下所有漏洞检测模块,如果输入插件名称、模块名称,例如:attacks.xss,则仅会执行当前插件下指定的模块名称。
输入exec audit:执行检测中间件插件下的所有模块。
输入execattacks.xss:使用注入插件中的检测xss漏洞模块。
输入infoattacks.blindsqli:检测sql盲注漏洞。
report命令
生成测试报告命令。
命令参数:report[报告名称]。
注:只有执行过起码一次完整的插件检测才能生成报告,而不是专项漏洞检测,即exec插件名称,而不是exec插件名称、模块名称。
输入命令:report webscan。
按照提示显示的目录,打开测试报告,报告格式是html的:
好了,以上就是使用扫描器的所有命令和完整的执行流程。
插件的编写
大家按章节一的下载地址下载工具后,用vscode或者你顺手的工具打开,插件扫描器就在scan目录下。
我们的插件编写,先从scan\lib\utils\settings.py全局配置文件开始。
第一步:先看基础路径配置,整个项目的目录结构就在这里。
第二步,配置字典路径,漏洞检测模块需要用到的字典,统一放在这个路径下。
第三步:配置插件路径,新增的插件统一按下面的格式配置。
第四步:配置插件描述信息,和第三步的插件路径是对应的。
第五步:配置漏洞模块描述信息,和第四步的插件描述是对应的。
第六步:配置漏洞模块路径信息,和第四步的插件描述是对应的。
第七步:编写插件的加载模块方法。统一命名规则,插件名成_plugins()[全部模块执行方法];spec_插件名称_plugins(key:str)。
第八步:编写检测漏洞模块,以attacks插件下的bshi(破壳漏洞检测)检测模块为例,导入必须的核心库:
创建漏洞检测类,继承Request类,类名需与文件名一致。
编写的漏洞检测方法,统一命名为check:
最后编写run方法,命名不建议修改,如果实在需要修改的话,还需要在第九步中修改对应的模块导入逻辑:
第九步:在localapi.py文件下编写本地API调用。
为什么有本地API调用,因为我打算再写个远程API调用方法,结合安全工具的web服务使用(这一步不是必须的,只有在扩展新的插件才用到,如果在原有插件的基础上新增漏洞检测模块,则可以跳过这一步)。
本地API函数的格式和基本路径,参考下图:
总结下扩展逻辑就是,命名插件便于统一管理模块,模块编写按固定格式,本地API编写用于按指定插件运行检测模块,该扫描器的检测模块,我会持续更新,谢谢大家。
End
点击阅读☞接口自动化核心知识点浓缩,为面试加分!
点击阅读☞惊呆,原来QA需要具备这么多能力
点击阅读☞你不知道的接口测试之初步认识Postman
点击阅读☞你不知道的接口测试之再谈Postman
点击阅读☞Postman接口测试时,必须熟练掌握的两种请求
相关资源