>我真的太惨了

>外出实习忘记了博客密码

>断更了这么久

>今天终于忍不了了,ssh连上来黑了自己的首页,试图记录点什么

>2019/08/21 --C0d3r1iu

开坑:自动化扫描器 – 记录日 – C0d3r1iu's Blog

开坑:自动化扫描器

热度:706℃ 发布时间:2019-03-16 收录:已收录

3.29更新:

写文章网络不好,之前的内容部分丢失(主要是表格介绍模块的部分) 悔恨中...
 
架构重组完成,试运行良好

运行流程:
 
首先输入一个引导站点和自定义每轮爬取域名数目 N -> 对站点爬取 N 条站外域名 -> 对这 N 条站点进行信息泄露check -> 爬取这N个站点内部的动态链接(不出站)并传入 SQL 注入检测模块进行检测 ->回到第一步进行后续爬取

令我感到自豪的是自己实现了断点续爬的功能:

考虑到设置自定义爬取域名数目,我采用字典动态生成列表的方法来存储爬取的结果,每次爬满就会自动新建下一个列表名字作为字典的键,结果存到对应的值

并且为一开始的爬虫对象设置了一个flag列表:

列表第一项的数字代表当前要爬取的站点位于目标列表的哪一个位置
列表第二项的数字代表下一个要存储的列表序号
列表第三项的数字代表目前是从哪一个列表索取爬取目标

每一轮的爬取都根据flag位的指示来自动取目标进行爬取,直到爬满N个,自动扩建下一个列表。

下一步要做的就是 优化检测效率 + web服务转移 + 添加更多漏洞类型的检测模块

初步计划是部署在 Django Docker ,做到联网分配任务 和 接口的抽离,可以通过web单一调度某一接口

这样查询子域名或者一件提取建站公司的案例网站会很方便。

最后更新一下 TODO LIST:

TODO:

 
- [x] 编写调度模块
- [ ] 编写 XSS 识别模块
- [ ] 增加常见漏洞 Poc 模块
- [ ] 增加指纹识别功能
- [x] 将数据存储逐依赖渐改为非官新型数据库 (已经脱离Mysql模块依赖,改为本地文件存储结果)
- [ ] 参考 SQLMAP 的注入检测原理,针对检测模块做升级
- [ ] Django for Internet
- [ ] SubDomain Brute Moudle

3.25更新:

 

彻底放弃 mysql 存储,改为生成xml报告。
 

3.23更新:

 
一、划分4种 url 匹配模块,分别是:
 
1. 仅匹配域名(适用于批量自动收集全网域名)
2. 匹配全 url (适用于各大站点单页面内容爬取)
3. 匹配 href 后面的链接,如果是相对链接还支持自动加上域%

3.16

某些原因最近想刷一波 SRC 排名,手动太累了,精力有限,就想着开发一款自动化扫描器

边写边刷:

爬虫模块:
爬虫模块 + 扫描模块 + 分析模块

爬虫负责采集 URL,这里采用了二层深度优先策略(没什么经验暂时先设定成这样)

从一个 URL 爬到该页面内所有 URL 并且入队列,当爬满二层的时候就会停止对当前页面 URL 的爬取。

扫描模块:

文件泄漏 + 动态 SQL 注入简单检测 。

暂时先实现这两个比较容易的。

关于文件泄露可以分为 备份文件泄漏 和 git/svn 泄漏。

备份文件泄漏 : 常用字典加自适应生成字典,直接弄一个生成器去调用即可。
git/svn泄漏 : 扫描固定文件字典。

上述两种为了提高准确率,均需要验证文件头,具体做法是在 requests 库请求的时候验证文件流前几个字节是否与压缩文件相匹配。

因为是开发初期,没有做多并发考虑导致效率不是很高,挂了三天才扫到了100多个站,手动验证 + 提交补天混了几十块钱的零食。

分析模块:
动态注入检测则需要提取页面的动态链接 url,接着对参数进行简单的替换,判断页面返回内容是否一致。
判断内容可以用 google 提出的 hash 算法,或者直接比对。

这个参考了一些书籍,开发中效果不是很理想,因为动态链接参数的处理略显繁琐 QAQ 。

这几周利用课余时间会坚持开发,未来会考虑加入更多功能。

相信吧,相信。

打赏
本文由 C0d3r1iu 创作,除注明转载/出处外,均为本站原创,转载前请注明出处!

Comments are closed.

顶部
护眼
搜索
分享