[Hack] – Comment une simple image Gif, peut contrôler un serveur !
Coucou à tous,
J'espère que vous savourez bien vos kellogs, que le jus d'orange et frais, mais surtout que les rayons du soleil réchauffent vos petits corps frêles !
Car la semaine commence !
Et quand la semaine commence, il faut envoyer du lourd !!!
Aussi, j'ai décidé de vous partager une faille qui fût courante à une certaine époque, et qui subsiste encore dans certains cas :)
Pour ma part, je l'ai découvert lorsque j'utilisais encore des serveurs mutualisés...
(Grosse blague : j'utilisais en réalité une offre gratuite pour les non abonnés FREE)
Bref cette faille ...
C'est surtout une brèche liée à une mauvaise configuration Apache ...
Une petite ligne que vous pourriez retrouver dans votre siteweb.conf ou dans votre .htaccess
Cette petite ligne c'est :
AddHandler application/x-httpd-php .php
Alors que dit cette ligne ?
Cette ligne dit ...
Je veux que tout ce qui "match" (contient / correspond) à .php soit considéré comme un script php !
ça veut dire que "toto.php" va être considéré comme un script PHP ...
Mais ça veut dire aussi que ...
- toto.php.png
- toto.php.txt
- toto.php.mp3
- ...
Vont être considérés comme des scripts PHP !
... WHAOUUUU ....
Mais vu que vous êtes des développeurs rigoureux ...
Vous me direz que ...
Vous êtes capable de contrôler le type de fichier, sa taille, bref réaliser toute une série de contrôles ... pour ne pas vous faire avoir ...
Sauf QUE !
Si un p'tit bonhomme injecte son code PHP dans la partie EXIF d'une photo ...
L'EXIF est une partie destinée à contenir des informations diverses :
- Modèle d'appareil photo
- Orientation de l'appareil
- Coordonnés GPS ...
- Résolution
- ...
Vous suivez ?
Un Hacker ... qui stockera son code PHP dans la partie EXIF d'une photo ... passera vos contrôles sans soucis !!!
Vous pourrez donc envoyer des images (votre code PHP) via un formulaire d'upload ...
Et exécuter du code HTML / PHP / Javascript !
Pour vous sécuriser contre ce genre d'attaque :
Vous devez impérativement contrôler votre configuration ...
Toujours renommer les fichiers qu'ont vos envois sur vos formulaires
Exemple :
ghjkkkkkkkkkkkkkk.php.gif => [.gif] =>md5(date unix)).gif
Un petit Proof of concept va arriver ? :)
Sur une configuration Apache d’un site avec le réglage « AddHandler application/x-httpd-php .php »
Image « Gif » normal :
http://img.dyrk.org/test/hack.gif
Le même « Gif » Injecté & renommé en « .php.gif » :
http://img.dyrk.org/test/hack.php.gif
;)