sqlninja logo


...a SQL Server injection & takeover tool

News

4/1/2010: sqlninja 0.2.5 will be the last open-source version of the tool. After this release, I will work together with Microsoft to integrate sqlninja with the SQL Server product suite in order to improve its security. Sqlninja 0.3.0 will be released under a similar EULA as most other Microsoft products, and will be available in the following flavors:

  • Sqlninja Home Edition
  • Sqlninja Professional Edition
  • Sqlninja Enterprise Edition
Sqlninja will also be available, at no cost, to Microsoft customers that have purchased SQL Server 2008. For more information, feel free to contact me at the following addresses:

  • sqlninja AT microsoft DOT com
  • r00t AT northernfortress DOT net

Introduction

Fancy going from a SQL Injection on Microsoft SQL Server to a full GUI access on the DB? Take a few SQL Injection tricks, add a couple of remote shots in the registry to disable Data Execution Prevention, mix with a little Perl that automatically generates a debug script, put all this in a shaker with a Metasploit wrapper, shake well and you have just one of the attack modules of sqlninja!

Sqlninja is a tool targeted to exploit SQL Injection vulnerabilities on a web application that uses Microsoft SQL Server as its back-end. Its main goal is to provide a remote access on the vulnerable DB server, even in a very hostile environment. It should be used by penetration testers to help and automate the process of taking over a DB Server when a SQL Injection vulnerability has been discovered. Have a look at the flash demo and then feel free to download it.

It is released under the GPLv2 and it has become the weapon of choice when exploiting SQL Injection vulnerabilities against SQL Server, which is not bad for something that started as a small script written on the fly during a pen-test :)

Features

The full documentation can be found in the tarball and also here, but here's a list of what the Ninja does:

  • Fingerprint of the remote SQL Server (version, user performing the queries, user privileges, xp_cmdshell availability, DB authentication mode)
  • Bruteforce of 'sa' password (in 2 flavors: dictionary-based and incremental)
  • Privilege escalation to sysadmin group if 'sa' password has been found
  • Creation of a custom xp_cmdshell if the original one has been removed
  • Upload of netcat (or any other executable) using only normal HTTP requests (no FTP/TFTP needed)
  • TCP/UDP portscan from the target SQL Server to the attacking machine, in order to find a port that is allowed by the firewall of the target network and use it for a reverse shell
  • Direct and reverse bindshell, both TCP and UDP
  • DNS-tunneled pseudo-shell, when no TCP/UDP ports are available for a direct/reverse shell, but the DB server can resolve external hostnames (check the documentation for details about how this works) 
  • Evasion techniques to confuse a few IDS/IPS/WAF
  • Integration with Metasploit3, to obtain a graphical access to the remote DB server through a VNC server injection

Platforms supported

Sqlninja is written in Perl and should run on any UNIX based platform with a Perl interpreter, as long as all needed modules have been installed. So far it has been successfully tested on:

  • Linux
  • FreeBSD
  • Mac OS X

Sqlninja does not run on Windows and I am not planning a port in the near future

Contact

icesurfer
bio: I break things for a living
email: r00t .at. northernfortress .dot. net
PGP: 0x28DA28B4
Twitter: http://twitter.com/icesurfer