[Perl] Project Kakilles 0.3

Iniciado por BigBear, 5 Enero 2014, 22:59 PM

0 Miembros y 1 Visitante están viendo este tema.

BigBear

Un simple script que hice como parodia del famoso programa Achilles , el kakilles viene por lo caca del programa.

Les dejo un video que tiene 3 ejemplos de uso :

* HTTP Header Injection
* Bypass Uploaders
* Cookie Handling

El video :

[youtube=640,360]http://www.youtube.com/watch?v=RdiKdIxqobU[/youtube]

El codigo :

Código (perl) [Seleccionar]

#!usr/bin/perl
#Project Kakilles 0.3
#(C) Doddy Hackman 2014

use HTTP::Proxy;
use HTTP::Proxy::BodyFilter::simple;
use HTTP::Proxy::BodyFilter::complete;

my $port;

head();

if ( $ARGV[1] ne "" ) {
   $port = $ARGV[1];
}
else {
   $port = 8080;
}

if ( $ARGV[0] eq "" ) {
   sintax();
   copyright();
}

$SIG{INT} = \&copyright;

my $logs       = "logs.txt";
my $leer_datos = "center.txt";

print "\n[+] Kakilles Online : $port ...\n";

my $server = HTTP::Proxy->new( port => $port );
$server->host();

$server->push_filter(
   mime     => undef,
   response => HTTP::Proxy::BodyFilter::complete->new()
);

$server->push_filter(
   mime     => undef,
   request  => HTTP::Proxy::BodyFilter::simple->new( \&enable ),
   response => HTTP::Proxy::BodyFilter::simple->new( \&enable2 )
);

$server->start();

sub enable {

   my @logs;

   my ( $self, $dataref, $message, $protocol, $buffer ) = @_;

   if ( $ARGV[0] =~ /p/ ) {

       if ( $message->content ne "" and $message->method eq "POST" ) {

           print
"\n########################################################################\n";
           print "[+] Method : " . $message->method;
           print "\n[+] Content : " . $message->content;
           savefile( $leer_datos, $message->content );
           print
"\n########################################################################\n";

           print "\n[+] Change ? [y/n] : ";
           chomp( my $rta = <stdin> );

           if ( $rta =~ /y/ ) {

               system_leida($leer_datos);

               my $source = abrir();
               $message->header( "content-length" => length($source) );
               $message->content($source);

               print "\n[+] Changed !\n";

           }
       }
   }

   if ( $ARGV[0] =~ /g/ ) {

       if ( $message->uri =~ /(.*)\?(.*)/ ) {

           print
"\n########################################################################\n";
           print "[+] GET : " . $message->uri;
           savefile( $leer_datos, $message->uri );
           print
"\n########################################################################\n";

           print "\n[+] Change ? [y/n] : ";
           chomp( my $rta = <stdin> );

           if ( $rta =~ /y/ ) {

               system_leida($leer_datos);

               my $source = abrir();

               $message->uri($source);

               print "\n[+] Changed !\n";

           }

       }

   }

   if ( $ARGV[0] =~ /a/ ) {

       print
"\n########################################################################\n";
       print "[+] User-Agent : " . $message->header("user-agent");
       savefile( $leer_datos, $message->header("user-agent") );
       print
"\n########################################################################\n";

       print "\n[+] Change ? [y/n] : ";
       chomp( my $rta = <stdin> );

       if ( $rta =~ /y/ ) {

           system_leida($leer_datos);

           my $source = abrir();

           $message->header( "user-agent" => $source );

           print "\n[+] Changed !\n";

       }
   }

   if ( $ARGV[0] =~ /o/ ) {

       print
"\n########################################################################\n";
       print "[+] Cookie : " . $message->header("cookie");
       savefile( $leer_datos, $message->header("cookie") );
       print
"\n########################################################################\n";

       print "\n[+] Change ? [y/n] : ";
       chomp( my $rta = <stdin> );

       if ( $rta =~ /y/ ) {

           system_leida($leer_datos);

           my $source = abrir();

           $message->header( "cookie" => $source );

           print "\n[+] Changed !\n";

       }
   }

}

sub enable2 {
   my ( $j, $k, $l, $m, $n ) = @_;

   if ( $ARGV[0] =~ /c/ ) {

       if ( $$k ne "" ) {

           print
             "\n##########################################################\n";
           print "[+] Content : " . $$k;
           savefile( $leer_datos, $$k );
           print
             "\n##########################################################\n";

           print "\n[+] Change ? [y/n] : ";
           chomp( my $rta = <stdin> );

           if ( $rta =~ /y/ ) {

               system_leida($leer_datos);

               my $source = abrir();

               $$k = $source;

               print "\n[+] Changed !\n";

           }

       }

   }

}

# Functions

sub system_leida {
   my $os = $^O;
   if ( $os =~ /Win/ig ) {
       system( "start " . $_[0] );
   }
   else {
       system( "sudo gedit " . $_[0] );
   }
}

sub abrir {
   open my $FILE, q[<], $leer_datos;
   my $word = join q[], <$FILE>;
   close $FILE;
   chomp $word;
   return $word;
}

sub savefile {
   unlink($leer_datos);
   open( SAVE, ">>" . $_[0] );
   print SAVE $_[1] . "\n";
   close SAVE;
}

sub head {
   print "\n-- == Project Kakilles 0.3 == --\n";
}

sub copyright {
   print "\n-- == (C) Doddy Hackman 2014 == --\n\n";
   exit(1);
}

sub sintax {
   print "\n[+] Sintax : $0 <options> <port>\n";
   print "\n[?] Options ...\n\n";
   print "-g : Form with GET\n";
   print "-p : Form with POST\n";
   print "-a : Edit User-Agent\n";
   print "-c : Edit Content\n";
   print "-o : Edit Cookie\n";
   print "\n[+] Example : $0 -pc 666\n";
}

# The End ?


Si quieren bajar el codigo lo pueden hacer de aca