LangziFun/Langzi_SRC_Safe_Cruise: LANGZI_SRC_安全巡航 是一款集成漏扫,验证,资产监控,自动复现并且生成结果表报的工具,实现初衷是为了帮助白帽子在SRC中节约时间成本的自动化工具。
2019-07-03 23:41:28 Author: github.com(查看原文) 阅读量:458 收藏

LANGZI_SRC_安全巡航 是一款集成漏扫,验证,资产监控,自动复现并且生成结果表报的工具,实现初衷是为了帮助白帽子在SRC中节约时间成本的自动化工具。

阅读完此文并配置环境大约需要20分钟,为了避免非零基础人群感到身体不适、头晕恶心、易怒及粗口,请不要查看以下内容。

本软件只做初步探测,无攻击性行为。请使用者遵守《中华人民共和国网络安全法》,勿用于非授权的测试,检测目标仅限于各大SRC,补天SRC,公益SRC进行测试。

最后更新时间:2019-6-26 22:24

  1. 安装 Microsoft Office
  2. 安装Firefox浏览器
  3. 安装vc++2015相关库
  4. 安装python2,并添加到系统环境变量//即cmd下输入python进入python2交互界面
  5. 安装Mysql数据库
  6. 运行目录不要存在中文
  1. 指向目录下的 数据库安装文件.sql,安装数据库
  2. 配置Config.ini配置文件
  3. 准备好采集的SRC_URL文本(此步骤可不做)

对主机配置略高,最好是SSD硬盘[启动Firefox]

使用的线程数基于CPU处理核心数

实验使用16个线程,在全部启动并发情况下资源消耗

可以看到还是比较吃资源,所以尽量不要直接开启全部扫描模块,可以先开启部分模块做资产收集,然后开始检测。

即花一天的时间跑子域名监控功能和超链接爬行功能,等到数据库资产差不多了就关闭资产监控功能,开启漏扫功能。

当退出关闭扫描器后,其下活动进程会在3分钟内自行关闭,可以通过任务管理器查看进程是否销毁。

再开启子域名监控的条件下,通过爆破,搜索引擎获取,以及网页爬行。三种方式不间断的获取domains.txt其下受监控的子域名,保存在主扫描表

sec_index主表保存大量受监控的子域名

SELECT * from sec_index where url like '%.qq.%'

在保存网址表中,保存着通过爬行获取到所有的友链数据,包括网址,标题,使用语言,服务器类型,网页内容。

等到数据量庞大起来后,可以做批量的数据采集调用,比如

select * from sec_urls where title like '%腾讯%',
select * from sec_urls where url like '%.qq.%',
select * from sec_urls where content like '%后台管理系统%',

在超链接表保存着网址的超链接和静态链接,其中静态链接可以使用sqlmap尝试伪静态注入,其他的可以尝试进行不同漏洞检测

在漏扫中填写报告也是个体力活,于是尝试实现了自动化实现,虽然被人骂懒死,但是确实挺方便的。

目录下的Config.ini是核心启动控制台,预读大约需要5分钟。

注意,Config.ini 文件编码为 ANSI,如果不一致则会报错

[Server]
# 数据库配置项
# 可以做分布式
host = 127.0.0.1
username = root
password = root
db = langzi_scan
port = 3306

[Common_Config]
threads = 16
# 线程数
# 建议4-32之间

check_env = 1
# 每次启动前是否检测运行环境是否完整
# 可选 0/关闭  1/开启
key = l95-la4-zh3-li0

[Start_Console]
start_on = 0
# 选择批量扫描的URL文本,如果数据库有数据的话,也可以选择不导入文本,直接从数据库继续扫描
# 可选 0/不提示导入URL文本,直接从数据库提取数据
# 可选 1/提示导入URL文本

check_alive = 0
# 检测导入文本的URL存活性检测,只有在设置START_ON=1情况下有效
# 可选 0/关闭  1/开启


[Scan_Modules]

ExtrUrs = 1
# 提取URL的超链接
# 可选 0/关闭  1/开启

ExtrUrr = 1
# 提取URL的超链接,不过有些臃肿,暂时移除
# 可选 0/关闭  1/开启

ExtrSql = 1
# 扫描SQL注入漏洞
# 可选 0/关闭  1/开启

ExtrXss = 1
# 扫描XSS漏洞
# 可选 0/关闭  1/开启


ExtrUrl = 1
# 扫描URL跳转漏洞
# 可选 0/关闭  1/开启

ExtrBac = 1
# 扫描备份文件源码泄露漏洞
# 可选 0/关闭  1/开启


ExtrRce = 1
# 扫描命令执行漏洞,不过效率太低,目前版本移除该功能
# 可选 0/关闭  1/开启

ExtrLfi = 1
# 扫描任意文件读取漏洞
# 可选 0/关闭  1/开启

ExtrSsf = 1
# 扫描SSRF漏洞,效率和误报不算理想,目前版本移除该功能
# 可选 0/关闭  1/开启

ExtrAut = 1
# 扫描未授权访问漏洞
# 可选 0/关闭  1/开启

ExtrInf = 1
# 扫描信息泄露,包括url开发的敏感端口,敏感路径,后台登陆,搜索引擎寻找漏洞
# 生成HTML信息报表,和漏扫的结果不一致,显得臃肿,目前版本移除该功能
# 可选 0/关闭  1/开启


ExtrGis = 1
# git svn 源码泄露扫描
# 可选 0/关闭  1/开启


ExtrCor = 1
# 扫描CORS劫持漏洞,一些大厂比较多,但是危害性比较小,所以一般都不扫描,设置为0
# 可选 0/关闭  1/开启


ExtrSub_Brute = 1
# 子域名监控功能 之 子域名爆破
# 可选 0/关闭  1/开启

ExtrSub_Baidu = 1
# 子域名监控功能 之 搜索引擎获取子域名
# 可选 0/关闭  1/开启

ExtrSub_Web = 1
# 子域名监控功能 之 通过网址爬行获取子域名
# 可选 0/关闭  1/开启

Keep_Scan = 0
# 获取网址中所有的友链,并且把获取到的友链保存到扫描表,基本上可以实现见谁日谁,实现无限挂机扫描
# 扫描机制来源于Yolanda_Scan,但是这一点也是被人诟病的一点,不建议开启
# 必须在 ExtrSub_Web = 1 的情况下才有效
# 可选 0/关闭  1/开启

[Scan_Levels]

Scan_Level = 1
# 扫描等级
# 可选 1/低级 2/中级 3/高级
# 默认开1就够了,当然也可选择2或者3

Xss_Level = 1
# XSS扫描等级
# 可选 1/低级 2/中级 3/高级 4/特级
# 默认开1就够了

Back_Level = 1
# 备份文件扫描等级
# 可选 1/低级 2/中级 3/高级
# 不同等级对应的扫描字典规则都不一样,越高代表字典数量越多
# 默认开1就够了

明确每张表的功能和包含数据,方便做调试与资产监控,以及自定义的重复性扫描验证。

功能详见注释

create database if not exists Langzi_Scan;
use Langzi_Scan;

create table if not exists Sec_Index(
    id int primary key auto_increment,
    url varchar(80),
    extrurs int(1) default 0 comment '爬行获取静态链接和动态参数,状态:0/1',
    extrurr int(1) default 0 comment '爬行获取命令执行需要的url,状态:0/1',
    unauth int(1) default 0 comment '(获取未授权需要的url,状态:0/1)',
    subdomain int(1) default 0 comment '获取子域名,既需要爬行页面相关内容,状态:0/1)',
    gitsvn int(1) default 0 comment '扫描gitsvn源码泄露,状态:0/1)',
    backup int(1) default 0 comment '扫描源码泄露,状态:0/1)',
    info int(1) default 0 comment '(扫描敏感信息路径泄露与开放端口服务,状态:0/1)',
    cors int(1) default 0 comment '(扫描sors劫持,状态:0/1)',
    other_vlun int(1) default 0 comment '获取其他类型漏洞,状态:0/1)',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP


)charset =utf8mb4;
alter table Sec_Index add unique(url);



create table if not exists Sec_Links_0(
    id int primary key auto_increment,
    url varchar(100),
    links longtext comment '静态链接,类型是一个列表',
    sqls int(1) default 0 comment '获取sql注入',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP

)charset =utf8mb4;
alter table Sec_Links_0 add unique(url);


create table if not exists Sec_Links_1(
    id int primary key auto_increment,
    url varchar(100) comment '记住,这里是按照深度分类,数量较小',
    links longtext comment '(一个列表,其中保存动态超链接)',
    sqls int(1) default 0 comment '(扫描SQL注入,状态:0/1)',
    xss int(1) default 0 comment '(扫描xss,状态:0/1)',
    urls int(1) default 0 comment '(扫描url跳转,状态:0/1)',
    lfi int(1) default 0 comment '(扫描文件包含,文件读取,状态:0/1)',
    rce int(1) default 0 comment '(扫描命令执行,状态:0/1)',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP

)charset =utf8mb4;
alter table Sec_Links_1 add unique(url);


create table if not exists Sec_Links_2(
    id int primary key auto_increment,
    url varchar(100)comment '记住,这里是按照路径相似度分类,数量较大',
    links longtext comment '(一个列表,其中保存动态超链接)',
    sqls int(1) default 0 comment '(扫描SQL注入,状态:0/1)',
    xss int(1) default 0 comment '(扫描xss,状态:0/1)',
    urls int(1) default 0 comment '(扫描url跳转,状态:0/1)',
    lfi int(1) default 0 comment '(扫描文件包含,文件读取,状态:0/1)',
    rce int(1) default 0 comment '(扫描命令执行,状态:0/1)',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP

)charset =utf8mb4;
alter table Sec_Links_2 add unique(url);




create table if not exists Sec_R_links(
    id int primary key auto_increment,
    url varchar(100),
    links longtext comment '(一个字典,其中保存按照命令执行漏洞类型的url链接,比如action,do,jsp,php等)',
    rce int(1) default 0 comment '(扫描命令执行,状态:0/1)',
    ssf int(1) default 0 comment '(扫描ssrf,状态:0/1)',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP

)charset =utf8mb4;
alter table Sec_R_links add unique(url);

create table if not exists Sec_success(
    id int primary key auto_increment,
    url varchar(100),
    vlun_type longtext comment '保存成功状态',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP
)charset =utf8mb4;


create table if not exists Sec_Ip_Vluns(
    id int primary key auto_increment,
    url varchar(100),
    ip varchar(16),
    unau_get int(1) default 0 comment '获取未授权访问',
    wpas_get int(1) default 0 comment '获取弱口令',
    port_get int(1) default 0 comment '获取开放端口的信息',
    other_vlun int(1) default 0 comment '获取其他类型漏洞',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP

)charset =utf8mb4;
alter table Sec_Ip_Vluns add unique(ip);


create table if not exists Sec_Urls(
    id int primary key auto_increment,
    url varchar(80) COMMENT '所有爬行的网页中的链接保存一下,这个功能由子域名爆破的web模块实现',
    title varchar (80) comment '网页标题',
    power varchar (80) comment '网址使用脚本语言',
    server varchar (80) comment '网址服务器类型',
    content longtext comment '网页内容,到时候可以做URL采集判断',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP

)charset =utf8mb4;
alter table Sec_Urls add unique(url);

create table if not exists Sec_Fail_Links(
    id int primary key auto_increment,
    url varchar(80) COMMENT '所有爬行的网页中的链接访问失败的保存一下',
    get_links int(1) default 0 comment '如果需要再次使用,可以做判断',
    create_time timestamp DEFAULT CURRENT_TIMESTAMP

)charset =utf8mb4;
alter table Sec_Fail_Links add unique(url);

注:勿删文件夹或者修改文件名

在 Modules 文件夹下的不同文本文件功能:

domains.txt

保存需要监控的子域名资产,格式如下:

jd.com
baidu.com
qq.com
iqiyi.com
....

rar.txt

保存的扫描备份文件字典

Sub_Big_Dict.txt

爆破二级域名字典

Sub_Sma_Dict.txt

爆破三级域名字典

default.docx

自动化生成报表模板

geckodriver.exe

FireFox驱动

result

存储扫描结果报表文件夹,勿删

_py2.py

检测Python2环境

black_list

存储网址爬行黑名单,其下的网址不会保存到数据库中

  1. 当扫描目标数量低于线程数*2时,不会开启扫描,所以尽量多导入网址
  2. SQL注入使用SQLMAP提供sql注入检测功能,但是也存在误报,误报率在20%
  3. XSS检测误报率在10%左右
  4. COSR劫持危害性比较小,基本上都不开启扫描功能
  5. 关于文件读取基本上都存在误报,不要开启
  6. 总的来说,能玩的地方只有子域名监控,git/svn源码泄露扫描,备份文件泄露扫描,xss,sql,url跳转。

一共实现了三种方案:

  1. 使用requests简单模拟爬虫方式,获取网页下所有的目录和链接,许多通过js生成的数据是获取不到。但是节省资源。
  2. 使用selenium操作浏览器,实现自动网页滑动,点击,随后通过mitmproxy中间件获取到所有的URL请求,优点是几乎能抓所有链接和ajax请求,但是消耗资源太大,故本版本移除该功能。
  3. 使用pyppeteer对网页自动化操作,然后获取所有的数据请求,和第二点一样,消耗资源太大,故本版本移除该功能。

考虑到以后,提供配置功能,可以选择超链接爬行方式。

  1. 在运行环境检测中,使用selenium驱动打开网页,但是网页可能有时候不能打开。这一点可以通过修改host文件破解
  2. URL跳转漏洞,跳转到的目标网站有时候可能会宕机,无法正确检测到结果。
  3. 其他2020年可用性未知。
  1. 无法提供对GOV&EDU扫描功能
  2. 低配主机可能无法正常运行,解决方案也很简单,降低线程数,关闭不必要不需要的扫描功能即可。
  3. 在CPU使用率到达100%,可能会导致部分扫描功能子模块无法启动,弹窗警告。

虽然不能让你在SRC称王称霸,但是在补天一个礼拜换一换桶泡面还是可以的。

试验注册一个新的账号,挂了5天,补天刷到1200名,虽然都是体力活,但是kb还是很香的。当然电费和物理机的负载也是很香的。

任何用扫描器,自动化漏洞挖掘工具找到的漏洞,质量都不会太高,对技术提升也没有太大的作用。但是如果能根据现有的漏洞基础上,加大漏洞的威胁性,对已知漏洞进行组合进一步拓展漏洞的危害,才是SRC中漏扫的意义。

目前版本为0.97版本,还有许多主机,数据库,服务类的漏洞都没有补充完善,漏扫的规则也不是特别满意。完整的后台管理可数据可视化虽然提上日程,但是还在设计阶段。对应漏扫报表的地方,还需要进一步的美化完善。

最后希望大家不要执着于排名与漏洞的数量,应该花费更多的时间去提升漏洞的质量水平,提高自己的技术水准。

本软件只做初步探测,无攻击性行为。请使用者遵守《中华人民共和国网络安全法》,勿用于非授权的测试,检测目标仅限于各大SRC,补天SRC,公益SRC进行测试。


文章来源: https://github.com/LangziFun/Langzi_SRC_Safe_Cruise
如有侵权请联系:admin#unsafe.sh