Comment un pirate peut-il placer un fichier sur la racine de mon serveur (apache, php, 1and1)

J’ai un site hébergé sur 1and1 et il y a quelques semaines, j’ai remarqué qu’un pirate avait placé un fichier .php sur le serveur qui, affiché dans un navigateur, exposait mon schéma DB, les chaînes de connexion à la firebase database et le compte FTP ), etc, etc. Naturellement, j’ai paniqué et j’ai essuyé le serveur et transféré mes fichiers. Fortunatley Je crypte les mots de passe en utilisant MD5 et je ne stocke pas des choses comme des détails de carte de crédit, etc., etc.

Maintenant, j’ai vérifié mes fichiers et avec toutes les entrées utilisateur, j’utilise une fonction propre (htmlentities, sql_real_escape_ssortingng, etc.) qui supprime l’entrée de toute injection XSS ou SQL. J’ai également veillé à ce que la clé de session soit reconfigurée lorsqu’un statut d’utilisateur change (comme s’il se connectait à son compte) pour empêcher le détournement de session, mes permissions de dossier sont définies sur 755 et l’autorisation de fichier est 644.

Quelqu’un a-t-il une idée de comment cela aurait pu se passer? Ou si je manque quelque chose

La cause la plus courante est le cheval de Troie qui dérobe les mots de passe du client FTP sur le PC du développeur.

Une option est d’utiliser un script de téléchargement de quelque sorte, par exemple, j’ai vu des scripts de téléchargement d’images mal protégés autoriser ce comportement. J’ai effectivement vu cela une fois dans un script qui redimensionnait les images à la volée mais utilisait des variables GET pour que l’emplacement de l’image soit redimensionné. Il convient également de vérifier les utilisations de exec() ou system() pour les éventuelles faiblesses. S’il est possible d’accéder à votre serveur via SSH, vous pouvez également vérifier toutes les commandes exécutées récemment en utilisant l’ history commandes