这是一个与刘老师一起编写的互联网安全类别扫描器。 基本原理是+Mysql构建的扫描器可以自动永久抓取和收集网站链接,并自动扫描和检测漏洞。 目的是挂机时自动发现敏感信息,或者发现网站漏洞或隐藏可利用的漏洞。
我早在2017年11月就有这个想法,但一直没有实施。 后来直到除夕夜才几天,整个软件项目的设计才正式开始。 当时我想实现的功能比较简单,就是能够无限收集www.www.等网站使用的CMS。 xx。 使用com,然后我把www。 xx。 com|此类数据存储在数据库中。 如果下次有新的漏洞爆发,我可以第一时间找出哪些网站存在这个漏洞。 那么这个软件工程的核心功能必须满足以下要求。
可以无限地抓取和收集互联网上幸存的URL链接。 可以扫描并验证收集到的链接。 Mysql数据库和服务器的负载均衡处理。
当然,仅仅检测CMS类型然后保存到数据库肯定是不够的。 这么简单的功能并没有太大的优势,所以我选择添加如下的漏洞扫描和验证。
添加备份文件扫描功能。 添加SVN/GIT/源代码泄漏扫描功能,包括信息扫描。 添加编辑器漏洞扫描功能。 添加SQL注入漏洞自动检测功能。 利用框架添加网站验证功能(别有用心)。 添加xss扫描检测功能(暂时)。 尚未实现)添加扫描网站IP、扫描危险端口的功能。 添加外部链接解析漏洞检测的功能(尚未实现)暂时想不到其他的了。 如果您有好的建议请联系我~结果展示
如图所示,都是扫描备份文件、敏感信息泄露、注入、cms类型识别、st2框架、端口开放等、挂机漏洞利用。 基本上,只要漏洞报告写得详细一点,写得勤一点,一切都会好起来的。 如果能通过审核,就可以轻松获得洞位、获得排名等。
用户交互方式
如果需要使用Mysql数据库,就无法避免数据库配置问题。 第一个是数据库,存储软件收集的漏洞信息。 我可以自己写一个关于数据库结构的语句,然后让用户自己执行SQL文件来创建数据库。
其次是数据库的连接问题。 关于数据库的地址、账号、密码等,因为每个人的环境可能不同,所以这一步一定要有一个交互的过程。 然后填写数据库配置信息就是直接运行软件,让用户进入数据库。 帐号密码还是新建一个配置文件? 我选择了后者,新建了一个.ini,里面不仅填写了数据库配置信息,还填写了这个软件的核心使用功能。 例如,如果您只想无限制地收集网站和扫描备份文件,那么您可以做好配置工作。
为了避免大家爬取的数据重复,我的想法是先让用户收集一些URL作为初始URL,然后根据这些URL开始无限爬取。 如果是第一次运行,应该会提示导入初始URL。 如果第二次运行怎么办? 我是否应该继续导入初始URL并继续抓取? 那将是非常不艺术的。 我的做法是在上面提到的.ini文件中有一个配置项。 如果是第一次运行,则会写入第一次运行并保存,然后在后续每次运行之前检查是否是第一次运行。 你想导入还是不想导入? (这里可以扩展一下,如果要无限抓取,有些内存垃圾不会及时回收,那么时间长了整个扫描就会变慢,所以需要添加自动重启功能。)
收集数据后,必须查看、保存和利用,因为数据都在数据库中。 我想过另外写一个软件专门用来导出数据,这样可以给不懂Mysql的用户使用。 但转念一想,又觉得有点多余,好像有点侮辱在座各位的智商。 所以总结一下思路,首先写两个文件=>.ini(数据库配置文件和扫描仪配置文件)&.sql(数据库安装语句)=>然后用户先收集一些网站,保存在当前目录下。 在txt文件中 => 配置相关文件和环境后,启动扫描仪。
工程建筑
需要实现的功能很多,所以为了方便以后维护,应该将每个功能封装在一个函数中。 该函数接受一个参数URL,并对传入的参数进行验证。验证过程中也有很多需要注意的地方,比如无限网站采集功能中,采集到的网站会被访问一次,看是否还活着,所以以避免将无法访问的网站添加到数据库中并浪费时间和资源。 检查生存的方法应该是使用头访问方法来确定返回的状态码。
在确定CMS类别时,不仅要扫描CMS指纹,还应该在页面上搜索关键字并访问.txt来确定CMS类别。 对于SQL扫描,我首先直接爬取页面网站漏洞检测软件,寻找可疑注入点,然后添加单引号、括号、反斜杠等,以匹配数据库错误语句。 尽管这个过程是正确的,但从工程角度来看却不太合适。 后来在098版本中,在数据库中新建一张表,专门存放爬取的注入链接。 如果觉得扫描器内置的监控注入方式不全面,也可以将这些爬取的链接导出,然后使用-m批量检测注入点。 还有很多需要注意的事项,这里就不一一列举了。
提高容错能力和优化
扫描过程中肯定会出现误报。 可以加强的地方是在验证漏洞的功能上。 例如,使用ST2框架的URL,我的想法是添加常见的关键字后缀,然后确定页面返回的关键字。 和状态码,这里肯定会有误报。 需要改进的是寻找更多误报页面的关键词,然后进行过滤。 还有编辑器漏洞。 我只加载了这两个编辑器的漏洞扫描和验证,所以不是很全面(我个人精力有限)。
一般来说,没有人愿意用自己珍贵的计算机来运行这种全网扫描,他们只是将其留在服务器上。 我的服务器是腾讯云主机。 运行095版本的时候,我基本上都是开三个线程,CPU保持在40%左右,还可以。 但运行098版本时,相同配置、相同线程,CPU持续90%左右。 服务器负载太重,无法运行其他服务应用,所以我在程序中实现了线程同步,并优化一些地方。 CPU使用率下降到20-40之间,但后果是整个扫描速度变慢,所以我尝试开5个线程,CPU基本稳定在80%。 添加自动重启后,自定义重启时间基本可以控制在40-70之间,但仍需要进一步优化。
代码功能补充
例如,扫描备份文件时,方法是导入备份文件的字典。 但有些网站的备份文件命名方式是以域名来命名的。 比如www. 。 对于fun/.rar这样的备份文件,需要将域名进行剪切拼接成字典。 当然,后缀不限于rar,还可以是zip、bak、sql、tar.gz、txt等...三种方法来检测CMS类别。 我们来一一核对一下。 如果第一个方法成功识别出CMS类别,我们就不会继续执行下面的两个方法。 这会节省资源和时间,但会浪费数据。 您只需要知道本网站使用的CMS即可。 类别就够了,不需要知道有多少种检测方式。
当然,还有SQL注入。 检测注入的顺序为B(盲注入)E(数据库错误注入)U(联合注入)S(多语句注入)T(基于时间的注入)。 一般来说,当存在数据库错误注入、联合注入等注入方式时,都支持盲注入。 这是什么意思? 盲注可以发现并检测注入。 是目前最全面、容错率较高的检测方法。 然而,该扫描仪使用的检测和注入识别方法是E(数据库错误)。 以后有机会的话会更新的。 编辑器漏洞方面,由于其他编辑器利用漏洞的条件有限网站漏洞检测软件,而且网上报道的编辑器漏洞基本都是几年前的,所以我没有添加。 另外,主程序和自动重启脚本分离,方便服务器用户和个人版用户。
扫描仪原型机0.93版功能介绍
2017年12月发布了0.93版本,当时比较着急,希望能在年前写出扫描仪,所以犯了一些错误。 这个版本非常粗糙,连数据库中的表名都是url_1、url_2,可以说是非常非常难看。 核心功能包括cms识别、备份文件扫描、无限URL采集。 可怕的是,收集URL数据库中没有重复数据删除过程。 只是无限收集功能中的去重。 这将导致您在扫描数千个网站后爬回并继续收集这数千个重复项。 网站。
的优点和缺点
优点:速度快。 抛开上面提到的批评不谈,备份文件扫描非常非常快。 这是因为扫描仪的功能比较少,我在笔记本上测试了一下,开了20个线程……基本上十分钟之内。 您可以扫描其中大约5个备份文件,并且占用资源、CPU和内存非常少。
缺点:没有数据库可以删除重复项。 cms验证方式只有cms指纹识别功能,每个指纹都会被扫描。 数据库名字太难看,代码也混乱。 我什至看不懂当时写的东西。
附加信息
虽然这个版本可以正确运行,但是还有很多地方需要进一步修改和优化。 比如数据库去重、CMS识别多样化、附加功能等等,这是一个非常麻烦的问题。 我也因此被困了一段时间。 后来佩瑶加入了我,帮我重构了整个代码项目。 她还提出了功能整合功能。 基于她重写的代码和框架,0.95版本诞生了。
下载链接
链接: 密码:cnfj
敏感智能扫描仪0.95版功能介绍
有一天,我无意中和沛瑶聊到了这个话题。 见她感兴趣,我就详细解释了这款扫描仪的核心功能和工程设计思想。 然而,我面前写的架构代码太丑了,我不想维护它。 然后整个项目就交给她了。 基于核心思想,编写了新版本并添加了新功能。 它为我后来继续更新的0.98版本提供了更完整的架构基础。 为了感谢刘老师的杰出贡献,0.95版本的名称也称为危险情报采集扫描仪。
的优点和缺点
优点:数据库数据经过反复处理,CMS验证方式增加了3种,包括识别页面关键词、.txt文件关键词识别,并增加使用ST2框架对网站的扫描、数据库优化、原有代码重写,使其更稳定且更易于维护。 。
缺点:虽然整体框架优化,但是没有内存垃圾回收,而且线程控制不好,导致一直挂着速度越来越慢。 由于专业问题,一些漏洞扫描功能没有添加,就落到了我重新发明轮子的身上。 后续更新版本是在0.95版本的基础上增加了其他漏洞扫描功能。
附加信息
虽然这个0.95版本在内存方面没有优化,但是通过添加自动重启功能可以解决问题。 与我后来写的0.98版本相比,0.95速度更快(因为需要扫描的项目功能较少),更稳定(虽然0.98版本增加了很多功能,但给服务器带来了沉重的负担。虽然我0.98版本优化内存,增加了自动重启功能,最多只能开启5个线程(CPU:80+%),至少必须开启3个线程(CPU:40+%))。 需要注意的是,要启用多线程,至少要开启3个线程。
下载链接
链接: 密码:pxdo
敏感智能扫描仪0.98版功能介绍
0.98版本于2018年3月14日完成。目前还没有编写0.99版本的想法。 但 0.99 版本的想法已经大致成型。 应该加上xss、文件包含、外部链接分析,并且重写SQL注入检测部分,使用盲注入检测来检测注入方式等等,从一开始就有点类似于H制作。 扫描后针对白帽专门打孔,增加更灵敏的信息检测。
的优点和缺点
优点:该版本的备份文件扫描功能增加了多样化的剪切URL,然后拼接备份文件后缀。 之前的版本提取了主域名并添加了后缀的整个URL作为备份文件路径。 现在不光是这些了,还有像2017之类的所有域名加路径,反正扫描的更全面、彻底了。 增加了编辑器漏洞扫描功能,数据库中增加了SQL扫描日志。 您可以导出这些日志并使用 -m 来检测它们。 增加了扫描网站IP地址对应端口的功能,并优化数据库插入语句,一定程度上减轻了服务器的负载。
缺点:为了减轻服务器的负载,整个扫描仪的核心功能都被延迟了。 虽然CPU负载降低了,但效率也降低了30%左右。 还有编辑器漏洞方面的问题。 由于没有发现更多的编辑器漏洞样本,因此在少数基础上编写的编辑器漏洞扫描并不是很准确和全面。
附加信息
总的来说,0.98是迄今为止最强大、最彻底的扫描版本,0.95是最高效的扫描版本,并且具有数据库去重、无限收集、备份文件、CMS分类等核心功能。两者的对比也很明显。 0.95 是最有效的。 如果你用自己的笔记本来运行,可以开20个线程,速度就会飞升。 至于服务器,就看你的配置了。 我的服务器可以开6个线程。 0.98 我只敢在服务器上开3个线程。 如果开得太高,我什至无法想到运行其他应用服务。
下载链接
你已经把所有的中文网站都浏览完了,请冷静一下……
配置文件使用说明
解压文件时,请注意以下文件。 这些文件涉及数据库配置、软件个性化扫描、线程设置、初始扫描导入网站等。
文件 文件说明
主程序.exe
开始主程序
.ini
程序配置文件(设置数据库账号密码、线程数、是否只执行某一个扫描功能)
mysql.sql
创建数据库文件
.txt
备份文件字典
CMS.txt
CMS检测指纹
使用方法:首先安装mysql数据库并执行mysql.sql文件。 然后刷新以下,你会发现多了一个数据库.ini。 上半部分是数据库配置相关设置,下半部分是软件扫描功能设置。
需要注意的是.ini配置文件。 上面的数据库配置很容易理解。 数据库地址可以设置为127.0.0.1或其他。
为了更多样化的使用,您可以选择性地使用某些功能,具体取决于参数是0还是1。这里0表示关闭,1表示打开。 如果只想检测cms,则设置=1,另外对应的是线程数,用于检测是否是第一次扫描。 默认为1。如果设置为1,每次打开都会提示导入一些网站作为初始网站。 程序检测到初始网站加载后,会自动将此参数更改为0。关于导入初始网站,您可以收集一些URL并将其以文本形式保存在主程序文件夹中。 当提示导入时,输入文本名称。 第二次运行时无需配置。 扫描器会自动从数据库中获取数据,然后进行无限爬行和扫描。 如果您对此有任何疑问,可以加我QQ联系我。
0.98优化版更新说明:核心部分
子域名与主域名分离,数据库多了两个表来存储子域名。
添加了两个新项目
数据库中新增一列,专门存储漏洞URL的标题,直观、醒目。
新的未经授权的漏洞扫描功能包括:
优化部分编辑器漏洞验证,扫描成功率接近100%,svn、git源码泄露修复,扫描成功率100%,备份文件路径扫描更彻底,www/data/目录为在备份文件之前定义,这种方式虽然大大提高了扫描的成功率,但是需要花费三倍的时间,所以还是有一些权衡的。 最后取消了www/data这两个目录级别。 Sql注入稍微优化一下,提高了一定的精度。
下载链接:
目前仍在测试中。 预计5月20日在QQ群开放下载1天,5月20日后删除文件。
结论
在这款扫描仪诞生的前一年,也就是2017年2月,我还写过一篇失败的扫描仪(Scan)。 据说最新版本0.98可以隐约看到ios扫描的影子。 不可否认,ios扫描失败了,但是当前扫描器识别出的大部分框架蓝图,比如备份文件、源码泄露功能,都是直接继承自那里的。 ios scan还集成了数据库、ftp等爆破功能……还是感觉有点沉闷。
0.98版本不会是结束,它将在未来的日子里不断更新添加新功能,遵循此扫描仪>>>>无限永久自动爬行的核心思想。 无限自动检测是这款扫描仪的灵魂,就像一只不知疲倦的蜘蛛,将网越织越宽。 敬请期待。
*请认真填写需求信息,我们会在24小时内与您取得联系。