Articles

Encore les scanners du diable

  • Ecrit par Damien Seguy
  • lundi 15 octobre 2007
Image pour le titre du contenu

Depuis le mois de septembre, les statistiques de nexen.net affichent 7500 visites par jour en mode soutenu, ce qui représente une augmentation de presque 1000 visiteurs depuis le mois d'Aout. Ce n'est pas tous les jours qu'un site prend autant de couleurs, merci à tous pour votre assiduité!

En regardant de plus près, j'ai noté que le niveau d'erreur avait aussi significativement monté : cette nouvelle était de nature à doucher ma joie initiale. Une analyse plus poussée s'imposait, et je me suis rapidement dirigé vers les fichiers d'erreurs 404 de PHP pour voir ce qui se passait, en détail. Un petit de manipulations PHP, et beaucoup d'horreur : mais que se passe-t-il donc dans le fichier des erreurs?

J'ai d'abord été impressionné par le nombre de tentatives d'injections de code PHP distant. Elles étaient légions! Claroline, guestbook, wordpress, youtube, xoops, joomla, php-nuke, openads... Il y en a pour tous les goûts. La première recommandation sera donc de bien garder les versions de vos logiciels à jour : visiblement, les attaques sont de plus en plus automatisées.

J'ai remarqué pas mal d'URL qui finissent par un point d'interrogation, en plus du séparateur de requête naturel. PHP semble parfaitement capable de se  dépatouiller tout seul de cette incongruité syntaxique. Ce qui me chiffonne, c'est que je n'ai pas pu trouver d'explication concluante à cette pratique. Mon intuition est que certains systèmes de filtrages se basent sur "ce qui est après le dernier point d'interrogation", et non pas "ce qui est après le premier". Cela a des conséquences dans le résultat, mais je n'ai rien pu trouver d'utile de vraiment utile à tirer de cette piste. Si vous avez une idée, n'hésitez pas à éclairer ma lanterne.

Des fichiers en dangers
Rien que dans les noms de fichiers, il y a visiblement des noms de scripts qui sont plus populaires que d'autres pour les attaques. Cela signifie que si vous utilisez un nom de script tel que core.php, index.php ou post.php, il sera très probablement victime d'un essai de la part des pirates. Il est aussi probable que la vulnérabilité d'une application PHP populaire ne soit pas applicable à votre application personnelle : mais dans le cas contraire, vous serez malheureux de vous apercevoir qu'un robot aveugle et idiot a détecté une vulnérabilité totalement au hasard. Bref, pensez à éviter ces noms de fichiers.

  • addpost_newpoll.php
  • admin_events.php
  • admin_settings.php
  • admin_styles.php
  • admin.color.php
  • admin.php
  • args.php
  • authldap.php
  • BBStore.php
  • charge.php
  • classes.php
  • client.php
  • cmd.php
  • common.php
  • config_PHPLM.php
  • config.php
  • core.php
  • Core.php
  • customers.php
  • DB_adodb.class.php
  • dbase.php
  • diff.php
  • displayCategory.php
  • download.php
  • evil.php
  • file_upload.php
  • footer.inc.php
  • func.php
  • functions_admin.php
  • functions.inc.php
  • functions.php
  • go.php
  • header.php
  • help_text_vars.php
  • home.php
  • home2.php
  • image_upload.php
  • include.php
  • index.php
  • index.php3
  • index1.php
  • index2.php
  • info.html.php
  • info.php
  • join.php
  • joomla.php
  • lang_activity.php
  • lang_main_album.php
  • login.php
  • main.php
  • media.divs.js.php
  • media.divs.php
  • misc.php
  • modify.php
  • owssvr.dll
  • Packages.php
  • pages.php
  • phpgw.inc.php
  • plugin.class.php
  • poc.php
  • poll.php
  • pop3.php
  • port.php
  • prepend.php
  • purchase.html.php
  • rconfig.inc.php
  • search.php
  • secure.php
  • send_reminders.php
  • server.php
  • services.php
  • session.php
  • settings.inc.php
  • show_archives.php
  • smarty_config.php
  • start.php
  • support.html.php
  • table.php
  • task.php
  • trans.php
  • view.inc.php
  • view.php
  • votes.php
  • wordtube-button.php

Ces virus qui attendent au bout de l'URL
En deux jours, vendredi et samedi derniers, pas moins de 69 URL distinctes ont été utilisées dans 2619 attaques sur nexen.net, sur un total de 3197. Les chiffres ne sont pas impressionnants par eux-mêmes, mais les rendements sont intéressants. En deux jours, pas moins de 69 serveurs hébergeaient des scripts d'injections, allant de XSS à du code PHP, de 1,2 ko à 32 ko. Les scripts sont presque toujours différents, mais quelques versions d'attaques ont en fait même fichier virus.

Si vous voulez jeter un oeil sur le code des virus, envoyez moi un message et je vous les ferez parvenir. Je préfère ne pas les publier ici pour ne pas donner trop d'idées, mais l'éducation du public sera toujours une bonne chose. Et si vous avez peur de m'envoyer un message, jetez un oeil sur vos propres log de blogues pour en trouver à coup sur.

Variables vecteurs
Je vous livre ici quelques listes de variables souvent utilisées pour introduire des vulnérabilités dans les scripts. Ce sont les noms de variables qui sont utilisées dans les attaques sur le site. Pourquoi cette liste pourrait être intéressante? Si vous utilisez ces noms de variables dans vos scripts, alors vous pourriez être victime par inadvertance d'une attaque de type injection de script PHP provenant d'un robot qui viserait une autre application. C'est une chance faible, certes, mais comme ces portes sont faciles à fermer, c'est une protection de plus.

Parmi les solutions, vous pouvez :
  1. Ne pas utiliser ces variables
  2. Affecter une valeur par défaut aux variables  pour ne pas qu'elles soient initialisées depuis l'extérieur du script

On pourrait même imaginer un service de collecte des fichiers d'accès Apache pour faire ressortir des informations de sensibilité des applications. On collecte des log de serveur Web, anonymisé, et on identifie les traits communs des vecteurs. Qu'en pensez-vous?

  • _AMLconfig
  • _CCFG
  • _CONF
  • _PX_config
  • abs_path
  • ACT
  • action
  • addpoll
  • app
  • approot
  • base
  • base_dir
  • basepath
  • BEAUT_PATH
  • bhconfig
  • BUILD
  • cal_dir
  • CAPREQ
  • cat
  • cfg_include_dir
  • cfgProgDir
  • CommonAbsDir
  • comPath
  • config
  • CONFIG
  • CONFIG_EXT
  • content
  • cropimagedir
  • cutepath
  • default_path_for_themes
  • dir
  • dir_module
  • direction
  • doc
  • dPconfig
  • file
  • FORM
  • GLOBALS
  • GlobalSettings
  • home
  • HTML_MENU_DirPath
  • id
  • inc
  • include_dir
  • include_path
  • includedir
  • includePath
  • is_phppc_included
  • Itemid
  • lang
  • lang_settings
  • language
  • livealbum_dir
  • LOCAL_PATH
  • login
  • main
  • mosConfig_absolute_path
  • mosConfig_live_site
  • note_id
  • nuseo_dir
  • openid_root_path
  • owned
  • page
  • pagename
  • path
  • PGV_BASE_DIRECTORY
  • PHORUM
  • phpAds_path
  • phpbb_root_path
  • phpgw_info
  • PHPOF_INCLUDE_PATH
  • print
  • relative_script_path
  • relativer_pfad
  • repertoire
  • req_path
  • root
  • root_dir
  • scripts
  • section
  • server_inc
  • serverPath
  • sessionerror
  • site_isp_root
  • sourcedir
  • spaw_root
  • sql
  • STRMVER
  • svr_rootscript
  • table
  • task
  • template
  • thispath
  • tinyMCE_imglib_include
  • tpl_pgb_moddir
  • trans
  • tsep_config
  • var
  • vwar_root
  • wpPATH
  • xoopsConfig
    
Noms de dossiers vulnérables    
Autre information intéressante, les noms des différents dossiers fréquemment utilisés pour sonder les vulnérabilités. Encore une fois, si vous utilisez ces noms, vous risquez d'être victime d'une attaque, même si vous n'utilisez pas l'application dont est tirée le vecteur.

  • news
  • claroline
  • ldap
  • auth
  • images
  • include
  • wordtube
  • wp-content
  • php
  • plugins
  • postguestbook
  • administrator
  • internal
  • styles
  • includes
  • modules
  • components

Conclusion
Encore une autre série de mauvaises découvertes dans les logs d'erreurs du serveur Web. Les injections de code PHP distant devraient être une relique du passé, notamment depuis la séparation des directives de configurations en PHP 5.2. Rien que pour cela, et en voyant le nombre de tentatives aveugles dont le site, je me félicite que nexen.net roule à PHP 5.2.4. (Merci les administrateurs de nexen services!).
< Précédent   Suivant >

Vous devez vous connecter pour commenter