51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5053|回复: 0
打印 上一主题 下一主题

[原创] 黑客之刃-扫描器

[复制链接]
  • TA的每日心情
    擦汗
    昨天 08:46
  • 签到天数: 981 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-7-23 10:30:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    前言

    我在做51testing讲堂,以及和参加讲堂的同学们在微信群里互动的时候,这个互动就是你问我答,以及自由讨论,过程中有个同学提出最好能在安全工具当中集成扫描功能,这个建议勾起了我的兴趣,酝酿了一段时间,又赶上过年的特殊情况,本地过没回老家,下面大家将会看到的扫描器,就这么出炉了。

    扫描器的设计思想是:灵活,易扩展,易修改,灵活的意思就是可单独执行专项漏洞的扫描,也可以批量执行集成的所有漏洞探测模块;易扩展的意思就是,新的漏洞检测模块可清晰简单的集成进扫描器;易修改,对各个漏洞扫描模块可根据特殊情况修改探测逻辑。

    再来段开场白,然后我们进入正文哈。

    不管是安全,或者是渗透测试,我们的假想敌都是不法的黑客分子,就个人能力的角度来看,对漏洞的理解及漏洞利用场景的熟悉程度,决定了我们匹配哪一级别的骇客。

    当然,现在的骇客好像越来越团队化了,可能是因为现在高价值系统的防护成本越来越高,独狼下口越来越难了,所以他们聚成缕子了,人越来越多,肉越来越少了,所以有肉他们就要吃了,所以发展出APT攻击了,APT就是高级可持续性渗透,啥意思,就是你不是花了几十万的软硬件防护成功嘛,就是不信你没漏洞,一天找不到,就两天,两天不行,三天,三天不行,四天,五天,六天..., 等到你海枯石烂,防护墙过期那一天....

    上面是开玩笑,大家可以搜索下APT,渗透层面的黑客,首先是个战术大师,就像刺客,也许说忍者更贴切。

    刺客的匕首,扫描器,文章脉络很简单,先讲怎么用,在讲怎么扩展.





    扫描器界面:



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



      • 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,audit,brute,disclosure],则会执行当前插件下所有漏洞检测模块,如果输入插件名称.模块名称,例如: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编写用于按指定插件运行检测模块,该扫描器的检测模块,我会持续更新,谢谢大家关注。


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-7-9 07:31 , Processed in 0.072357 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表