DBScanner使用技巧清单:网段输入、线程数-t参数与完整扫描输出实战详解
DBScanner使用技巧清单:网段输入、线程数-t参数与完整扫描输出实战详解
DBScanner 是一款自动扫描内网常见 SQL、NoSQL 数据库的开源安全检测工具,支持 MySQL、MSSQL、Oracle、PostgreSQL、Redis、MongoDB、Memcached、Elasticsearch 八类数据库,可一键检测未授权访问与常规弱口令。本文带你从网段输入、线程数 -t 参数调优,到完整扫描输出的逐行解读,掌握这套内网数据库扫描实战流程。
一、DBScanner是什么:8类内网数据库一键扫描
DBScanner 的核心思路非常直接:先探测端口,再按端口匹配对应数据库的检测逻辑。
脚本内置了各数据库的默认端口映射,见 lib/config.py:
| 数据库 | 默认端口 | 检测能力 |
|---|---|---|
| MySQL | 3306 | 弱口令 |
| MSSQL | 1433 | 弱口令(sa 账户) |
| Oracle | 1521 | 弱口令(sys / 默认账户) |
| PostgreSQL | 5432 | 弱口令(postgres 账户) |
| Redis | 6379 | 未授权访问 + 弱口令 |
| MongoDB | 27017 | 未授权访问 |
| Memcached | 11211 | 未授权访问 |
| Elasticsearch | 9200 | 未授权访问 |
🔍 两种检测能力对应内网最典型的数据库安全隐患:
- 弱口令检测:内置了
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 | 只扫描单个主机 | 定向排查指定服务器 |
⚙️ 几个实用技巧:
- 先小后大:先用单 IP 验证工具是否可用,确认无误后再放大到
/24网段; - 网段不要贪大:
/16以上网段 IP 数量巨大,弱口令字典又要逐个尝试,建议配合更高的线程数并预留充足时间; - 结果定位:输出中会直接打印
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扫描输出结果逐行解读
扫描过程中,工具会实时打印发现的漏洞点,全部结束后输出总耗时。以下是一次真实扫描的完整输出:
逐行解读这条输出:
[+] 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 类数据库的扫描。
整改建议清单(扫描出弱口令后的标准处置):
- 立即修改弱口令,使用高强度且唯一的密码;
- 关闭不必要的默认账户(如 MSSQL 的
sa、MySQL 的远程root登录); - 为 Redis、Memcached、Elasticsearch、MongoDB 启用认证或绑定非公网地址;
- 通过防火墙限制数据库端口仅允许应用服务器访问。
七、合规提醒 ⚠️
DBScanner 会主动发起大量连接尝试,请仅在你拥有合法授权的内网环境中使用(如公司安全巡检、渗透测试授权范围),并对扫描造成的流量做好预案。未经授权对他人网络进行扫描属于违法行为。
小结:DBScanner 用一条命令即可覆盖 8 类数据库的未授权与弱口令检测——记住三个关键点:CIDR 网段输入、-t 控制并发、按 IP:端口 定位输出,即可完成一次完整的内网数据库安全摸底。
更多推荐




所有评论(0)