最近一个月在给星球的同学录制脚本开发实训的课程,以自动化漏洞发现为目标,一行一行代码在线编写,让大家在学习渗透的基础上,同时锻炼脚本开发的能力,作为一个脚本小子,不会写脚本是多么的遗憾。
昨天晚上课程正式完结,一共上了接近二十节课,还为参与直播的同学赠送了一套自动化漏洞提交的系统,助力大家刷公益,课程列表如下:
整个课程写了二十多个脚本,涉及 python 多个库,比如 requests、json、os、subprocess、socket、pymysql 等,如图:
整个过程分为几个阶段,包括目标采集阶段、信息收集阶段、漏洞探测阶段。
这个阶段决定了你刷公益的目标范围,范围越大,你能发现漏洞的概率越大,所以这个阶段至关重要,本次课程主要涉及内容包括:
1、抓取补天注册厂商列表
2、基于注册厂商信息获取其他备案域名
3、获取高权重网站的方式
4、收集大量网站,进行批量权重查询
以上过程均通过自己写脚本的方式实现,主要涉及 requests、re 库的使用,比较难的部分就是分析数据提取方式以及正则表达式的编写。
这个阶段以主域名列表为起始点,通过 DNS 枚举和第三方平台两种方式获取子域名:
1、第三方平台以 rapiddns 为例
2、dns 枚举通过调用第三方工具 ksubdomain 来实现
通过脚本来讲这两个过程实现,最后将结果进行格式化,便于后续流程调用
有了子域名之后,需要进行 IP 提取,然后整合 IP 资源进行端口扫描,端口扫描采用第三方工具 masscan 来实现,由于 IP 量大的情况下, masscan 丢包会比较严重,而且对系统的性能要求更大,所以采用分批次探测的方法。
有了 IP 和 端口数据之后,因为主要的漏洞来源于网站,所以需要进行网站的信息收集,然后对开放的端口进行了 banner 获取以及相对应的指纹识别,目标是提取那些 HTTP 服务的端口列表,从而组合网站地址。
由于网站存在大量重复的情况,比如多个域名指向相同系统的情况,所以使用自定义去重算法,做第一步的筛查,从而降低用于测试的网站数量,提高效率。
有了网站数据之后,做一步指纹识别,识别那些出现过 NDAY 漏洞的通用系统,用于 POC 探测,提高测试效率,有针对性的测试总比盲打来的好。
接下来需要收集网站的接口信息,用户后续常规漏洞的探测,这里主要用到的第三方爬虫工具是 crawlergo,基于浏览器内核的爬虫,速度虽然慢一些,但是能够采集到更多的接口,比如 POST 提交参数的接口,这种也是出现漏洞比较多的接口。
信息收集的最后,将所有数据插入到我们设计好的数据库中,即方便查看,又便于漏洞探测系统的调用。
这个部分,主要涉及 subprocess、requests、re、socket 等库的使用,比较重要的是网站指纹库的编写,决定了漏洞发现的成果。
漏洞的探测主要依赖 xray 完成,所有脚本都适配 xray 编写,主要包括以下部分:
1、基于网站指纹识别的结果,调用 xray 实现由针对性的 POC 检测
2、对于未识别出指纹的系统,调用 xray 做通用 POC 检测,比如通用组件、服务器之类的
3、基于收集到的接口进行漏洞探测,GET 接口与 POST 接口自动化测试的方法不同,前者可以制定文件,后者需要借助 xray 的被动扫描能力。
这里没有用到啥新的库,核心在于 POC 的分类和收集,这块需要自己拓展。
以上所有内容均通过编写脚本的方式实现,如果你对这块感兴趣,目前可以前往信安之路的知识星球查看,除了这次课程,信安之路知识星球还更新过多个原创课程,比如:
渗透测试技术实训,共计 17 课,包含渗透测试技术中的方方面面,还有学员对应的作业供学习参考
公益 SRC 实战课程,这个比较老,一共 5 课,快速讲解如何玩公益
内网渗透科普,共计 5 课,分别讲解边界突破、内网横移等相关基础
nday 漏洞实战,共计 5 课,总结了我这两年玩过的 nday 漏洞,这些文档资料已更新至 wiki
即日起至五一假期结束,加入《信安之路知识星球》者,免费赠送《渗透测试那些事儿知识星球》,一起玩转信安之路。