skip to main | skip to sidebar
Yoyahack
El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe
RSS
  • Home
  • Admin
  • Undersecurity
  • CPAN - Perl
  • PHP

Bypass Recaptcha y cualquier otra

Captcha, Nivel web, php, programacion, Tips 6 comentarios



Muchas veces necesitamos hacerle un bypass a alguna captcha, como puede ser Re-captcha.

Lo primero que se nos ocurre es usar algun OCR (Reconocimiento óptico de caracteres) para detectar las letras de la imágenes. El problema esta que no puede funcionar correctamente y en muchos casos no logra procesar la imagen. Quizás por eso no sea algo muy típico, ni muy utilizado con esto fines.

Podemos desarrollar nuestro propio OCR, pero a la larga seria un proceso muy complejo y necesitaríamos invertirle mucho tiempo. Muchos simplemente descartan el proyecto.

Otros lo que harían seria buscar alguna vulnerabilidad en la captcha, que de alguna forma les permita saber que imagen es y que letras tienen. Algunos buscarían una vulnerabilidad en la validación de la captcha que seria un proceso igualmente largo ya que tienen que entender el funcionamiento de la captcha y comenzar a probar...

Yo estaba realizando una App web y debía realizar acciones y tomar algunos datos de un sitio web, pero este utilizaba Re-captcha para poder identificarse/loguearse. Se me ocurrieron todas las opciones que menciones y otras pero no relacionada directamente con la captcha.

Aquí tengo una solución universal para cualquier Captcha. La solución mas rápida y segura, es utilizar la misma captcha que el sitio web.

Osea, la imagen genera la captcha la capturo y la muestro en mi sitio web para que los usuarios que vayan a utilizar la App web, inserten el código de la captcha y mi App web realice todo.

Al final tengo una App web, que realiza lo que quería hacer y utiliza captcha. No tengo que implementar alguna captcha en mi servicio ya que con la captcha del sitio web me basta.


Bypass de  Re-Captcha

El source de ejemplo



<?php
require_once('recaptchalib.php');


$publickey = "6Lc55McSAAAAAChEOICK8IX0V6zRh3CD64ix6jbx";
$privatekey = "6Lc55McSAAAAAB4ny39PlgX8gjMvm2x7SsrXEb6y";

if(!empty($_POST['nombre'])) {

	$is_valid = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);


	if($is_valid->is_valid) {
		echo '<p><h1>Captcha Valida</h1></p>';
		exit;
	}else{
		echo '<p><h1>Captcha invalida</h1></p>';
	}
}



?>

<form method="POST" name="form" action="coment.php">
	<p>Mensaje: <br><input type="text" name="nombre"></p>
   <?php echo recaptcha_get_html($publickey); ?><br>
	<input type="submit" value="enviar">
</form>

Realizare el código para hacerle el bypass.


<?php



//Si se envio el formulario, compruebo el el input

//donde se inserte la captcha, contenga algun valor

if(!empty($_POST['captcha_valude'])) {



$data =' nombre='.$_POST['mensaje'].'&recaptcha_challenge_field='.$_POST['cod'].'&recaptcha_response_field='.urlencode($_POST['captcha_valude']);

echo post('http://127.0.0.1/a.php', $data);

}

//Fin del poc para el bypass



//Obtengo la imagen de la captcha y luego la muestro....

$contenido = get('http://127.0.0.1/a.php');

preg_match('/ipt" src="(h[^"]+)/', $contenido, $result);

preg_match('/challenge :[sn]+'([^']+)/i', get($result[1]), $cont);

$img = 'http://www.google.com/recaptcha/api/image?c='.$cont[1];

echo '<IMG src="'.$img.'">';

//Fin...



//Funcion para realizar peticiones GET

function get($url) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}



//Funcion para realizar peticiones POST

function post($url, $contenido) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt ($ch, CURLOPT_POST, 1);

curl_setopt ($ch, CURLOPT_POSTFIELDS, $contenido);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec ($ch);

curl_close ($ch);



return $result;

}



?>



<!--Formulario-->

<form action="aa.php" method="POST">

<p>Inserte el contenido de la captcha</p>

<p><input type="text" name="captcha_valude"></p>

<p>Inserte el mensaje <br><input type="text" name="mensaje"></p>

<input type="hidden" name="cod" value="<?php echo $cont[1]; ?>"><!--Codigo de la captcha-->

<input type="submit" value="Enviar">

</form>
Al rellenar todos los datos correctamente, me da por valida todo.


Probar el PoC, así entienden mejor todo.

Saludos.


7:18



Entradas más recientes Entradas antiguas Inicio
Suscribirse a: Entradas (Atom)

    Fedora 15

    FayerWayer

    Cargando...

    Twitter

    Follow @Yoyahack

    Categoria

    • Captcha (1)
    • Exploit (1)
    • Herramientas (10)
    • MYSQL (2)
    • Nivel web (24)
    • Noticias (2)
    • Offtopic (2)
    • perl (11)
    • php (12)
    • POO (1)
    • programacion (19)
    • Regexp (2)
    • Tips (1)
    • vurnerabilidad (7)
    • XSS (2)

    Blog Archive

    • ►  2012 (1)
      • ►  abril (1)
    • ▼  2011 (6)
      • ►  octubre (1)
      • ▼  septiembre (1)
        • Bypass Recaptcha y cualquier otra
      • ►  agosto (1)
      • ►  junio (1)
      • ►  marzo (2)
    • ►  2010 (10)
      • ►  octubre (2)
      • ►  septiembre (1)
      • ►  agosto (1)
      • ►  junio (1)
      • ►  abril (2)
      • ►  febrero (3)
    • ►  2009 (15)
      • ►  noviembre (1)
      • ►  octubre (1)
      • ►  septiembre (10)
      • ►  agosto (3)

    Afiliados

    • ANTRAX
    • drvy
    • hachik0
    • Ksha
    • kt0sh
    • Lord RNA
    • Panic
    • pks
    • seth
    • SH4V
    • snakingmax