3 votes

Injection de code PHP. Avons-nous un risque de sécurité ?

Nous avons un simple fichier php qui capture les emails. Il dépose ces emails dans un fichier csv (qui n'est pas exécutable par php). Nous avons récemment eu quelqu'un qui a réussi à pirater notre site et cela semblait être l'un des points d'entrée, mais je ne vois pas comment c'est possible. Voici le script :

$fh = fopen('cap.csv', 'a+');
fwrite($fh, "\r".$_GET['email']);
fclose($fh);

Plutôt basique, non ? Y a-t-il un moyen auquel vous pensez pour exploiter cela ?

3voto

Wesley van Opdorp Points 8536

Oui, mais probablement pas ce que vous recherchez.

Les seules choses que je pourrais faire sont :

  1. Ajoutez n'importe quoi à votre fichier, uniquement des appendices.
  2. (facultatif/bonus) Ouvrez directement le fichier si vous ne l'avez pas sécurisé et volez toutes les adresses électroniques.

Il ne me permet pas d'exécuter quoi que ce soit, ou d'accéder à quoi que ce soit. (Sauf si vous le traitez et provoquez une fuite ailleurs). Mais quand même - sécurisez-le !

2voto

cweiske Points 13722

Le code que vous nous avez montré ne peut être utilisé que pour mettre n'importe quoi dans le fichier csv (je suppose que vous ne vérifiez/validez pas les données de l'utilisateur). $_GET['email'] ), mais vous ne pouvez pas injecter et exécuter du code PHP de cette façon.

Peut-être avez-vous un script qui fonctionne sur le fichier csv qui a été exploité.

1voto

Gordon Points 156415

La seule chose à laquelle je peux penser pour l'instant pour le code donné est un vecteur d'attaque NullByte (bien que je ne sois pas sûr qu'ils fonctionnent dans les versions actuelles de PHP ou même qu'ils s'appliquent à votre code). Puisque vous utilisez $_GET, toute attaque via le paramètre eMail devrait être visible dans les fichiers journaux de votre serveur.

Vérifiez dans vos fichiers journaux s'il y a des chaînes d'e-mails suspectes, par exemple quelque chose comme

http://example.com?email=foo\0somethingmalicious

et d'autres choses similaires.

0voto

hakre Points 102271

Le code que vous avez posté suggère que vous ne faites pas beaucoup de désinfection sur les données d'entrée. Il est donc probable que vous ayez des problèmes similaires dans d'autres parties du logiciel.

En outre, même si vous n'exécutez pas le fichier csv dans votre application, il est possible d'y injecter du code PHP.

Ainsi, s'il existe une autre faille dans l'application qui ne vérifie pas correctement les données d'entrée et qui pourrait être exploitée pour inclure des fichiers sur le serveur et ensuite inclure le fichier csv en question, l'exécution de code à distance est possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X