Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: BigBear en 5 Enero 2014, 22:59 pm



Título: [Perl] Project Kakilles 0.3
Publicado por: BigBear en 5 Enero 2014, 22:59 pm
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 :

RdiKdIxqobU

El codigo :

Código
  1. #!usr/bin/perl
  2. #Project Kakilles 0.3
  3. #(C) Doddy Hackman 2014
  4.  
  5. use HTTP::Proxy;
  6. use HTTP::Proxy::BodyFilter::simple;
  7. use HTTP::Proxy::BodyFilter::complete;
  8.  
  9. my $port;
  10.  
  11. head();
  12.  
  13. if ( $ARGV[1] ne "" ) {
  14.    $port = $ARGV[1];
  15. }
  16. else {
  17.    $port = 8080;
  18. }
  19.  
  20. if ( $ARGV[0] eq "" ) {
  21.    sintax();
  22.    copyright();
  23. }
  24.  
  25. $SIG{INT} = \&copyright;
  26.  
  27. my $logs       = "logs.txt";
  28. my $leer_datos = "center.txt";
  29.  
  30. print "\n[+] Kakilles Online : $port ...\n";
  31.  
  32. my $server = HTTP::Proxy->new( port => $port );
  33. $server->host();
  34.  
  35. $server->push_filter(
  36.    mime     => undef,
  37.    response => HTTP::Proxy::BodyFilter::complete->new()
  38. );
  39.  
  40. $server->push_filter(
  41.    mime     => undef,
  42.    request  => HTTP::Proxy::BodyFilter::simple->new( \&enable ),
  43.    response => HTTP::Proxy::BodyFilter::simple->new( \&enable2 )
  44. );
  45.  
  46. $server->start();
  47.  
  48. sub enable {
  49.  
  50.    my @logs;
  51.  
  52.    my ( $self, $dataref, $message, $protocol, $buffer ) = @_;
  53.  
  54.    if ( $ARGV[0] =~ /p/ ) {
  55.  
  56.        if ( $message->content ne "" and $message->method eq "POST" ) {
  57.  
  58.            print
  59. "\n########################################################################\n";
  60.            print "[+] Method : " . $message->method;
  61.            print "\n[+] Content : " . $message->content;
  62.            savefile( $leer_datos, $message->content );
  63.            print
  64. "\n########################################################################\n";
  65.  
  66.            print "\n[+] Change ? [y/n] : ";
  67.            chomp( my $rta = <stdin> );
  68.  
  69.            if ( $rta =~ /y/ ) {
  70.  
  71.                system_leida($leer_datos);
  72.  
  73.                my $source = abrir();
  74.                $message->header( "content-length" => length($source) );
  75.                $message->content($source);
  76.  
  77.                print "\n[+] Changed !\n";
  78.  
  79.            }
  80.        }
  81.    }
  82.  
  83.    if ( $ARGV[0] =~ /g/ ) {
  84.  
  85.        if ( $message->uri =~ /(.*)\?(.*)/ ) {
  86.  
  87.            print
  88. "\n########################################################################\n";
  89.            print "[+] GET : " . $message->uri;
  90.            savefile( $leer_datos, $message->uri );
  91.            print
  92. "\n########################################################################\n";
  93.  
  94.            print "\n[+] Change ? [y/n] : ";
  95.            chomp( my $rta = <stdin> );
  96.  
  97.            if ( $rta =~ /y/ ) {
  98.  
  99.                system_leida($leer_datos);
  100.  
  101.                my $source = abrir();
  102.  
  103.                $message->uri($source);
  104.  
  105.                print "\n[+] Changed !\n";
  106.  
  107.            }
  108.  
  109.        }
  110.  
  111.    }
  112.  
  113.    if ( $ARGV[0] =~ /a/ ) {
  114.  
  115.        print
  116. "\n########################################################################\n";
  117.        print "[+] User-Agent : " . $message->header("user-agent");
  118.        savefile( $leer_datos, $message->header("user-agent") );
  119.        print
  120. "\n########################################################################\n";
  121.  
  122.        print "\n[+] Change ? [y/n] : ";
  123.        chomp( my $rta = <stdin> );
  124.  
  125.        if ( $rta =~ /y/ ) {
  126.  
  127.            system_leida($leer_datos);
  128.  
  129.            my $source = abrir();
  130.  
  131.            $message->header( "user-agent" => $source );
  132.  
  133.            print "\n[+] Changed !\n";
  134.  
  135.        }
  136.    }
  137.  
  138.    if ( $ARGV[0] =~ /o/ ) {
  139.  
  140.        print
  141. "\n########################################################################\n";
  142.        print "[+] Cookie : " . $message->header("cookie");
  143.        savefile( $leer_datos, $message->header("cookie") );
  144.        print
  145. "\n########################################################################\n";
  146.  
  147.        print "\n[+] Change ? [y/n] : ";
  148.        chomp( my $rta = <stdin> );
  149.  
  150.        if ( $rta =~ /y/ ) {
  151.  
  152.            system_leida($leer_datos);
  153.  
  154.            my $source = abrir();
  155.  
  156.            $message->header( "cookie" => $source );
  157.  
  158.            print "\n[+] Changed !\n";
  159.  
  160.        }
  161.    }
  162.  
  163. }
  164.  
  165. sub enable2 {
  166.    my ( $j, $k, $l, $m, $n ) = @_;
  167.  
  168.    if ( $ARGV[0] =~ /c/ ) {
  169.  
  170.        if ( $$k ne "" ) {
  171.  
  172.            print
  173.              "\n##########################################################\n";
  174.            print "[+] Content : " . $$k;
  175.            savefile( $leer_datos, $$k );
  176.            print
  177.              "\n##########################################################\n";
  178.  
  179.            print "\n[+] Change ? [y/n] : ";
  180.            chomp( my $rta = <stdin> );
  181.  
  182.            if ( $rta =~ /y/ ) {
  183.  
  184.                system_leida($leer_datos);
  185.  
  186.                my $source = abrir();
  187.  
  188.                $$k = $source;
  189.  
  190.                print "\n[+] Changed !\n";
  191.  
  192.            }
  193.  
  194.        }
  195.  
  196.    }
  197.  
  198. }
  199.  
  200. # Functions
  201.  
  202. sub system_leida {
  203.    my $os = $^O;
  204.    if ( $os =~ /Win/ig ) {
  205.        system( "start " . $_[0] );
  206.    }
  207.    else {
  208.        system( "sudo gedit " . $_[0] );
  209.    }
  210. }
  211.  
  212. sub abrir {
  213.    open my $FILE, q[<], $leer_datos;
  214.    my $word = join q[], <$FILE>;
  215.    close $FILE;
  216.    chomp $word;
  217.    return $word;
  218. }
  219.  
  220. sub savefile {
  221.    unlink($leer_datos);
  222.    open( SAVE, ">>" . $_[0] );
  223.    print SAVE $_[1] . "\n";
  224.    close SAVE;
  225. }
  226.  
  227. sub head {
  228.    print "\n-- == Project Kakilles 0.3 == --\n";
  229. }
  230.  
  231. sub copyright {
  232.    print "\n-- == (C) Doddy Hackman 2014 == --\n\n";
  233.    exit(1);
  234. }
  235.  
  236. sub sintax {
  237.    print "\n[+] Sintax : $0 <options> <port>\n";
  238.    print "\n[?] Options ...\n\n";
  239.    print "-g : Form with GET\n";
  240.    print "-p : Form with POST\n";
  241.    print "-a : Edit User-Agent\n";
  242.    print "-c : Edit Content\n";
  243.    print "-o : Edit Cookie\n";
  244.    print "\n[+] Example : $0 -pc 666\n";
  245. }
  246.  
  247. # The End ?
  248.  

Si quieren bajar el codigo lo pueden hacer de aca (http://pastebin.com/7iAnbSzv)