lsekfe 发表于 2021-7-23 10:30:41

黑客之刃-扫描器


前言
我在做51testing讲堂,以及和参加讲堂的同学们在微信群里互动的时候,这个互动就是你问我答,以及自由讨论,过程中有个同学提出最好能在安全工具当中集成扫描功能,这个建议勾起了我的兴趣,酝酿了一段时间,又赶上过年的特殊情况,本地过没回老家,下面大家将会看到的扫描器,就这么出炉了。
扫描器的设计思想是:灵活,易扩展,易修改,灵活的意思就是可单独执行专项漏洞的扫描,也可以批量执行集成的所有漏洞探测模块;易扩展的意思就是,新的漏洞检测模块可清晰简单的集成进扫描器;易修改,对各个漏洞扫描模块可根据特殊情况修改探测逻辑。
再来段开场白,然后我们进入正文哈。
不管是安全,或者是渗透测试,我们的假想敌都是不法的黑客分子,就个人能力的角度来看,对漏洞的理解及漏洞利用场景的熟悉程度,决定了我们匹配哪一级别的骇客。
当然,现在的骇客好像越来越团队化了,可能是因为现在高价值系统的防护成本越来越高,独狼下口越来越难了,所以他们聚成缕子了,人越来越多,肉越来越少了,所以有肉他们就要吃了,所以发展出APT攻击了,APT就是高级可持续性渗透,啥意思,就是你不是花了几十万的软硬件防护成功嘛,就是不信你没漏洞,一天找不到,就两天,两天不行,三天,三天不行,四天,五天,六天..., 等到你海枯石烂,防护墙过期那一天....
上面是开玩笑,大家可以搜索下APT,渗透层面的黑客,首先是个战术大师,就像刺客,也许说忍者更贴切。
刺客的匕首,扫描器,文章脉络很简单,先讲怎么用,在讲怎么扩展.


[*]扫描器的使用扫描器下载地址:https://gitee.com/samllpig/SafeTool-51testing工具的详细安装教程:http://quan.51testing.com/pcQuan/lecture/117先打开我们的扫描器看下界面:



扫描器界面:


好了,上面就是我们的扫描器,全部使用命令操作,简单易记,大家跟着敲就可以了。



[*]help命令使用
help: 列出集成的插件命令和描述。



我们开始扫描之前要做些基本的设置,输入helpset命令,查看我们需要设置那些参数,带*号的是必选项.

1.2info 命令
info :显示详细的漏洞检测模块
info命令的使用格式是: info [插件名称],插件名称就是上图中输入help命令得到的。
输入info attacks:



输入infoaudit命令:

输入infobrute命令:

输入 infodisclosure

1.3set命令:




[*]在进行扫描之前需要进行基本的设置工作,通过help set命令查看可以设置的选项,在通过set命令设置,在helpset显示的选项中带*号的是必选项,其他的根据需要进行设置。

       set命令格式: set [选项] [参数]
       举例: set url http://192.168.16.132/wordpress/?s=11

1.4check 命令:




[*]输入checkargv显示set中设置的参数值




其中agent参数,即版本信息默认会随机获取。
1.5exec命令
执行检测命令,命令格式:exec插件名称[.模块名称]
如果只输入插件名称,则会执行当前插件下所有漏洞检测模块,如果输入插件名称.模块名称,例如:attacks.xss,则仅会执行当前插件下指定的模块名称。
输入 exec audit : 执行检测中间件插件下的所有模块



输入 execattacks.xss :使用注入插件中的检测xss漏洞模块:

输入 infoattacks.blindsqli :检测sql盲注漏洞
1.6report 命令:
生成测试报告命令




[*]命令参数: 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编写用于按指定插件运行检测模块,该扫描器的检测模块,我会持续更新,谢谢大家关注。

页: [1]
查看完整版本: 黑客之刃-扫描器