前言

漏洞扫描器在web安全领域一直是个热门话题,也有不少扫描器站了出来,有的成为安全从业者的必备神器,而有些则昙花一现。不管是web模式,B/S模式的扫描器都接触不少。最近趁着有点时间,试着动手写一个扫描器吧。毕竟自己写的才能跟自己的需求符合上。

简介

目前常见的插件扫描器大概有三家,分别是pocsuite、bugscan、tangscan。后两家由于种种原因最终关闭了。
我一直以来都再用知道创宇的pocsuite,也算顺手。
所谓插件式扫描器,无非是大量POC/EXP来堆叠起来。相比较与传统的漏洞扫描器,插件式扫描器更方便维护,当出现新漏洞时只要添加一个新的POC即可。而不用更改扫描器的核心文件。相对来说较为方便。

思路

既然是web版本,肯定是要有页面和后台扫描服务。简单的画了几个流程图,然后开始coding。

技术选型

主要分为前端web和后台扫描服务两个部分

  • Python
  • Flask
  • MySQL

流程设计

前端部分流程图主要分为poc扫描,任务调度,插件管理等部分。具体如图所示

前端部分

后端部分主要是扫描服务,对前端用户的任务进行调度,并给出扫描结果。
主要分为以下几个部分。

后台部分

具体实现

前端部分

前端UI主要是Flask、MySQL,写了以下前端,个人比较习惯简约风格的,感觉还不错~

前端没什么好说的,熟悉Flask和python的话比较简单。来几张图吧

web前端
web前端
web前端
web前端
web前端
web前端

后台扫描服务

后台扫描服务主要分为端口扫描、poc扫描、目录、敏感信息等扫描。当然也可以自定义扫描,扩展一下就可以了。
端口扫描可以使用nmap、zmap等python库,不过为了速度考虑,我这里直接用的朋友s3xy之前写个一个端口扫描小模块,改了一下容错率的问题。
poc扫描部分这里是用到了知道创宇的pocsuite,因为这个算是比较成熟了。之前写了一个poc/exp扫描器,也在GitHub开源了,不过不推荐在生产环境使用。稳定性有待观察。

web前端

结语

本文给一些想写个自己的小DIY扫描器的同学提供一些思路。
其实不管是web形式的扫描器还是console的poc扫描器,主要都是靠poc/exp来支撑。
没有poc的扫描器都是耍流氓~
没有老板的支持的安全是进行不下去的~