DBScanner使用技巧清单:网段输入、线程数-t参数与完整扫描输出实战详解

【免费下载链接】DBScanner 自动扫描内网常见sql、no-sql数据库脚本(mysql、mssql、oracle、postgresql、redis、mongodb、memcached、elasticsearch),包含未授权访问及常规弱口令检测 【免费下载链接】DBScanner 项目地址: https://gitcode.com/gh_mirrors/db/DBScanner

DBScanner 是一款自动扫描内网常见 SQL、NoSQL 数据库的开源安全检测工具,支持 MySQL、MSSQL、Oracle、PostgreSQL、Redis、MongoDB、Memcached、Elasticsearch 八类数据库,可一键检测未授权访问与常规弱口令。本文带你从网段输入、线程数 -t 参数调优,到完整扫描输出的逐行解读,掌握这套内网数据库扫描实战流程。

一、DBScanner是什么:8类内网数据库一键扫描

DBScanner 的核心思路非常直接:先探测端口,再按端口匹配对应数据库的检测逻辑。

脚本内置了各数据库的默认端口映射,见 lib/config.py:

数据库默认端口检测能力
MySQL3306弱口令
MSSQL1433弱口令(sa 账户)
Oracle1521弱口令(sys / 默认账户)
PostgreSQL5432弱口令(postgres 账户)
Redis6379未授权访问 + 弱口令
MongoDB27017未授权访问
Memcached11211未授权访问
Elasticsearch9200未授权访问

🔍 两种检测能力对应内网最典型的数据库安全隐患:

  • 弱口令检测:内置了 123456、root、admin、{user}123 等常见口令字典(同样定义在 lib/config.py),并针对 MySQL 的 root、MSSQL 的 sa、Oracle 的 sys 等默认账户逐一尝试;
  • 未授权访问检测:对 Redis 发送 INFO 命令、对 Memcached 发送 stats 命令、对 Elasticsearch 请求 /_cat 接口,判断是否未设认证即可读取。

具体检测逻辑集中在 lib/exploit.py 的 check 类中,每种数据库一个独立方法。

二、快速上手:安装依赖与运行扫描

DBScanner 基于 Python 2.7 编写(代码中使用了 itervalues 等 Py2 语法),运行前请确认环境。

第 1 步:获取源码

git clone https://gitcode.com/gh_mirrors/db/DBScanner
cd DBScanner

第 2 步:安装依赖

主要依赖包括 IPy(网段解析)、gevent(协程加速)、以及各数据库客户端库:

pip install IPy gevent requests
pip install mysql-python cx_Oracle pymongo psycopg2

💡 其中 cx_Oracle 需要额外的 Oracle 客户端支持,详见后文第六节。

第 3 步:执行扫描

python dbscan.py 192.168.1.0/24

命令格式在 dbscan.py 的 argparse 定义中可以直接看到:target 为位置参数,-t 为可选的线程数参数(默认 50)。

三、DBScanner网段输入方法:CIDR格式怎么写

DBScanner 通过 IPy 库解析目标参数,支持 CIDR 网段 和 单个 IP 两种写法:

输入示例含义适用场景
192.168.1.0/24扫描整个 C 段(254 个 IP)整个内网网段摸底
10.0.0.0/16扫描整个 B 段(65534 个 IP)大范围机房巡检
192.168.1.100只扫描单个主机定向排查指定服务器

⚙️ 几个实用技巧:

  1. 先小后大:先用单 IP 验证工具是否可用,确认无误后再放大到 /24 网段;
  2. 网段不要贪大:/16 以上网段 IP 数量巨大,弱口令字典又要逐个尝试,建议配合更高的线程数并预留充足时间;
  3. 结果定位:输出中会直接打印 IP:端口,拿到结果后可直接对应到具体主机做进一步排查。

四、DBScanner线程数-t参数实战调优

-t 参数控制并发线程数,默认 50:

# 默认 50 线程,适合常规 C 段扫描
python dbscan.py 192.168.1.0/24

# 线程翻倍,加速较大网段扫描
python dbscan.py 10.0.0.0/16 -t 200

从 dbscan.py 的实现可以看到,它采用「线程池 + gevent 协程」双层并发:线程池负责并发的 IP 数(即 -t 的值),每个 IP 内部又用协程同时探测 8 个端口,因此单 IP 的探测速度已经很快。

📌 调优建议:

场景建议线程数说明
单 IP / 小网段(/28)默认 50无需调整
/24 网段50~100平衡速度与目标主机压力
/16 大网段100~200适当调高以缩短耗时
目标为生产核心业务网段30~50降低请求压力,避免触发告警

线程并非越大越好:过高的并发会显著增加目标数据库的压力,也更容易被安全设备记录,请按实际需要设置。

五、DBScanner扫描输出结果逐行解读

扫描过程中,工具会实时打印发现的漏洞点,全部结束后输出总耗时。以下是一次真实扫描的完整输出:

DBScanner内网数据库扫描输出:SQL Server与MySQL弱口令检测结果

逐行解读这条输出:

[+] 10.211.55.6:1433  SQLserver存在弱口令: sa  123456
[+] 10.211.55.8:3306  Mysql存在弱口令: root
[+] 扫描完成耗时 9.9 秒.
  • 10.211.55.6:1433:命中主机与端口,1433 即 MSSQL 默认端口;
  • SQLserver存在弱口令: sa 123456:sa 账户使用常见弱口令 123456,攻击者可凭此直接登录;
  • 10.211.55.8:3306 Mysql存在弱口令: root:MySQL 的 root 账户命中空口令/弱口令;
  • 扫描完成耗时 9.9 秒:整个网段的最终统计,方便评估后续大网段扫描的时间成本。

📊 不同数据库的输出格式类似,例如:

[+] 192.168.1.50:6379  Redis存在未授权访问
[+] 192.168.1.51:9200  Elasticsearch存在未授权访问
[+] 192.168.1.52:1521  Oracle存在弱口令: sys password123

看到这类结果就意味着对应服务无需认证即可访问或凭弱口令登录,应尽快整改。

六、Oracle扫描的前置依赖说明

Oracle 检测依赖 cx_Oracle 库,而该库需要安装 Oracle Instant Client 客户端支持才能正常工作(参考项目内 about oracle.txt 的说明)。如果未安装客户端,Oracle 相关检测项会静默跳过,不影响其他 7 类数据库的扫描。

整改建议清单(扫描出弱口令后的标准处置):

  1. 立即修改弱口令,使用高强度且唯一的密码;
  2. 关闭不必要的默认账户(如 MSSQL 的 sa、MySQL 的远程 root 登录);
  3. 为 Redis、Memcached、Elasticsearch、MongoDB 启用认证或绑定非公网地址;
  4. 通过防火墙限制数据库端口仅允许应用服务器访问。

七、合规提醒 ⚠️

DBScanner 会主动发起大量连接尝试,请仅在你拥有合法授权的内网环境中使用(如公司安全巡检、渗透测试授权范围),并对扫描造成的流量做好预案。未经授权对他人网络进行扫描属于违法行为。


小结:DBScanner 用一条命令即可覆盖 8 类数据库的未授权与弱口令检测——记住三个关键点:CIDR 网段输入、-t 控制并发、按 IP:端口 定位输出,即可完成一次完整的内网数据库安全摸底。

【免费下载链接】DBScanner 自动扫描内网常见sql、no-sql数据库脚本(mysql、mssql、oracle、postgresql、redis、mongodb、memcached、elasticsearch),包含未授权访问及常规弱口令检测 【免费下载链接】DBScanner 项目地址: https://gitcode.com/gh_mirrors/db/DBScanner

更多推荐