神级测试人员才会的测试技术:黑客之刃扫描器

发布于 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接口测试时,必须熟练掌握的两种请求

“”一起来充电吧!

相关资源