网络扫描:数据库服务
数据库服务器由运行在局域网中的一台或多台计算机和数据库管理系统软件共同构成,为客户应用程序提供了数据服务。最常见的数据库服务有DB2、SQL Server和MySQL等。本文介绍对数据库服务实施扫描的方法。
1. DB2数据库
IBM DB2是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX、Linux、IBMi、z/OS及Windows服务器版本。DB2数据库是基于TCP协议工作的,其工作在TCP的523端口。我们可以借助Nmap的broadcast-db2-discover和db2-das-info脚本来实施扫描。下面介绍具体的扫描方法。
(1)使用broadcast-db2-discover脚本
broadcast-db2-discover脚本通过发送一个广播请求到UDP端口523,来发现网络中的DB2服务器。语法格式如下:
nmap --script=broadcast-db2-discover
(2)使用db2-das-info脚本
db2-das-info脚本通过连接到IBM DB2管理服务器,来获取服务器的配置。语法格式如下:
nmap --script=db2-das-info
使用db2-das-info脚本扫描DB2数据库服务。执行命令如下:
root@daxueba:~# nmap --script=db2-das-info -p 523 169.50.41.43
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-14 14:16 CST
Nmap scan report for 2b.29.32a9.ip4.static.sl-reverse.com (169.50.41.43)
Host is up (0.34s latency).
PORT STATE SERVICE
523/tcp open ibm-db2
|_db2-das-info: false
Nmap done: 1 IP address (1 host up) scanned in 4.82 seconds
从输出信息中可以看到,目标主机上开放了DB2数据库,但是没有获取到其配置信息。
2. SQL Server数据库
SQL Server是美国Microsoft公司推出的一种关系型数据库系统。该数据库服务是基于TCP协议工作的,其工作在TCP协议的1433端口。我们可以借助Nmap的一些脚本对SQL Server数据库服务实施扫描。下面介绍具体的实现方法。
(1)使用ms-sql-info脚本
ms-sql-info脚本用来获取Microsoft SQL服务实例的配置和版本信息。语法格式如下:
nmap -p 1433 --script=ms-sql-info
使用ms-sql-info脚本对SQL Server数据库实施扫描。执行命令如下:
root@daxueba:~# nmap --script=ms-sql-info -p 1433 95.179.146.208
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-14 15:01 CST
Nmap scan report for 95.179.146.208.vultr.com (95.179.146.208)
Host is up (0.35s latency).
PORT STATE SERVICE
1433/tcp open ms-sql-s
Host script results:
| ms-sql-info:
| 95.179.146.208:1433:
| Version: #版本
| name: Microsoft SQL Server 2000 SP1+ #名称
| number: 8.00.528.00 #编号
| Product: Microsoft SQL Server 2000 #产品
| Service pack level: SP1 #服务补丁级别
| Post-SP patches applied: true
|_ TCP port: 1433 #TCP端口
Nmap done: 1 IP address (1 host up) scanned in 8.67 seconds
从输出信息中可以看到获取到目标SQL Server数据库服务的相关信息。例如,数据库名称为Microsoft SQL Server 2000 SP1+、产品为Microsoft SQL Server 2000、服务补丁基本为SP1等。
(2)使用ms-sql-ntlm-info脚本
ms-sql-ntlm-info脚本用来枚举启用NTLM认证的SQL Server服务信息。语法格式如下:
nmap -p 1433 --script ms-sql-ntlm-info
使用ms-sql-ntlm-info脚本对目标主机的SQL Server数据库服务实施扫描。执行命令如下:
root@daxueba:~# nmap -p 1433 --script ms-sql-ntlm-info 213.189.70.102
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-14 15:02 CST
Nmap scan report for 213.189.70.102
Host is up (0.39s latency).
PORT STATE SERVICE
1433/tcp open ms-sql-s
| ms-sql-ntlm-info:
|_ Product_Version: 5.2.3790 #产品版本
Nmap done: 1 IP address (1 host up) scanned in 5.74 seconds
从输出信息中可以看到,通过使用ms-sql-ntlm-info脚本获取到了目标服务器的版本信息,其版本号为“5.2.3790”。
3. Cassandra数据库
Cassandra是一套开源分布式NoSQL数据库系统,它最初由Facebook开发,用于存储收件箱等简单格式数据。此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构数据存储方案。Cassandra数据库是基于TCP协议工作的,其工作在TCP的9160端口。我们可以借助Nmap的cassandra-info脚本实施扫描。cassandra-info脚本通过从Cassandra数据库中来获取服务器的基本信息和状态。语法格式如下:
nmap -p 9160 --script=cassandra-info
扫描Cassandra数据库。执行命令如下:
root@daxueba:~# nmap -p 9160 --script=cassandra-info 35.236.53.106
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-14 15:13 CST
Nmap scan report for 106.53.236.35.bc.googleusercontent.com (35.236.53.106)
Host is up (0.18s latency).
PORT STATE SERVICE
9160/tcp open cassandra
| cassandra-info:
| Cluster name: 0 #Cluster名称
|_ Version: 19.4.0 #版本
Nmap done: 1 IP address (1 host up) scanned in 1.73 seconds
从输出信息中可以看到,目标主机开启了Cassandra数据库服务,并且通过cassandra-info脚本获取到了其客户端名称和版本信息。
4. CouchDB数据库
CouchDB是一个开源的面向文档的数据库管理系统。CouchDB数据库服务是基于TCP协议工作的,其工作在TCP协议的5984端口。我们可以借助Nmap的couchdb-databases和couchdb-stats脚本来对其实施扫描。下面介绍具体的扫描方法。
(1)使用couchdb-databases脚本
couchdb-databases脚本用来获取CouchDB数据库中的数据表。语法格式如下:
nmap -p 5984 --script=couchdb-databases.nse
使用couchdb-databases脚本扫描CouchDB数据库。执行命令如下:
root@daxueba:~# nmap -p 5984 --script=couchdb-databases 13.80.244.231
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-14 15:16 CST
Nmap scan report for 13.80.244.231
Host is up (0.31s latency).
PORT STATE SERVICE
5984/tcp open httpd
| couchdb-databases:
| 1 = _global_changes
| 2 = _replicator
| 3 = _users
| 4 = composerchannel_
| 5 = composerchannel_lscc
|_ 6 = composerchannel_shoganai-telemetry-network
Nmap done: 1 IP address (1 host up) scanned in 3.00 seconds
从以上输出信息中可以看到,目标主机中开启了CouchDB数据库服务,而且还看到了该数据库中的数据表。
(2)使用couchdb-stats脚本
couchdb-stats脚本用来获取CouchDB数据库的统计信息。语法格式如下:
nmap -p 5984 --script=couchdb-stats.nse
使用couchdb-stats脚本对目标主机的CouchDB数据库实施扫描。执行命令如下:
root@daxueba:~# nmap -p 5984 --script=couchdb-stats 201.79.73.156
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-14 15:21 CST
Nmap scan report for 201-79-73-156.user.veloxzone.com.br (201.79.73.156)
Host is up (0.40s latency).
PORT STATE SERVICE
5984/tcp open httpd
| couchdb-stats:
| httpd_status_codes
| 412 (number of HTTP 412 Precondition Failed responses)
| current
| sum
| 404 (number of HTTP 404 Not Found responses)
| current = 281.0
| sum = 281.0
| 202 (number of HTTP 202 Accepted responses)
| current
| sum
| 304 (number of HTTP 304 Not Modified responses)
| current
| sum
| 500 (number of HTTP 500 Internal Server Error responses)
| current
| sum
……省略部分内容
| httpd
| bulk_requests (number of bulk requests)
| current
| sum
| view_reads (number of view reads)
| current
| sum
| clients_requesting_changes (number of clients for continuous _changes)
| current
| sum
| requests (number of HTTP requests)
| current = 2209.0
| sum = 2209.0
| temporary_view_reads (number of temporary view reads)
| current
| sum
|_ Authentication : NOT enabled ('admin party')
Nmap done: 1 IP address (1 host up) scanned in 4.40 seconds
从以上输出信息中可以看到目标主机中CouchDB数据库的统计信息。由于输出的信息较多,中间部分结果省略了。
5. MySQL数据库
MySQL是一种开放源代码的关系型数据库管理系统,该数据库工作在TCP的3306端口。我们可以借助Nmap的mysql-info脚本来实施MySQL数据库服务扫描。
mysql-info脚本用来获取MySQL数据库服务的信息,如协议、版本号、线程ID、状态、密码撒盐值等。语法格式如下:
nmap --script=mysql-info -p 3306
对目标主机上的MySQL数据库服务实施扫描。执行命令如下:
root@daxueba:~# nmap --script=mysql-info -p 3306 192.168.1.6
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-14 15:22 CST
Nmap scan report for 192.168.1.6 (192.168.1.6)
Host is up (0.0011s latency).
PORT STATE SERVICE
3306/tcp open mysql
| mysql-info:
| Protocol: 10 #协议
| Version: 5.0.51a-3ubuntu5 #版本
| Thread ID: 7 #线程ID
| Capabilities flags: 43564 #兼容性标志位
|Some Capabilities:Support41Auth,SupportsTransactions,SupportsCompression,ConnectWithDatabase, LongColumnFlag, SwitchToSSLAfterHandshake,Speaks41 ProtocolNew #兼容的性能
| Status: Autocommit #状态
|_ Salt: (dC_4(gRFGoz7A"#*GgP #撒盐
MAC Address: 00:0C:29:3E:84:91 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds
从以上输出信息中可以看到,目标主机中开放了MySQL数据库服务,并且获取到了对应的信息。例如,该服务的协议号为10、版本号为5.0.51a-3ubuntu5、线程ID为7等。
6. Oracle数据库
Oracle数据库是甲骨文公司的一款关系型数据库管理系统。该数据库工作于TCP的1521端口。用户可以借助Nmap的oracle-tns-version脚本探测Oracle TNS监听器的版本。语法格式如下:
nmap -p 1521 -sV --script=oracle-tns-version
实施Oracle数据库扫描。执行命令如下:
root@daxueba:~# nmap 192.168.29.139 -p 1521 -sV --script=oracle-tns-version
Starting Nmap 7.70 ( https://nmap.org ) at 2021-08-14 13:36 CST
Nmap scan report for 192.168.29.139 (192.168.29.139)
Host is up (0.0054s latency).
PORT STATE SERVICE VERSION
1521/tcp open oracle-tns Oracle TNS listener 11.2.0.1.0 (unauthorized)
MAC Address: 00:0C:29:A6:9D:F8 (VMware)
Service detection performed. Please report any incorrect results at
https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.11 seconds
从输出的信息可以看到,目标主机号开放了Oracle数据库服务,并且显示了Oracle TNS监听器的版本。其中,该数据库服务的TNS监听器版本为11.2.0.1.0。
