web-dev-qa-db-fra.com

J'ai la possibilité d'exécuter arbitrairement Python sur l'utilisateur 'Apache'. Quels dommages puis-je faire?

Donc, en raison d'une mauvaise programmation de la part de l'un de mes anciens collègues, l'une de nos applications Web internes permet à l'utilisateur de télécharger et d'exécuter un fichier arbitraire Python. Cela a récemment été révélé via un astuce anonyme. Jusqu'à présent, je n'ai rien fait de trop fou, en utilisant simplement la bibliothèque os pour parcourir un peu la structure du répertoire. Je ne sais pas combien de dégâts je pourrais faire, cependant. Il y a un Python application web et une base de données MySQL fonctionnant sur le serveur.

Puis-je en quelque sorte me donner un accès SSH? Je ne sais pas exactement comment j'allais procéder. Je ne pense pas non plus pouvoir accéder à la base de données, car je n'ai aucune information utilisateur.

Alors, quelle est la limite pratique des pires dégâts que je pourrais faire ici?

44
ian93

Vous pouvez écrire du code Python pour télécharger un binaire du serveur SSH puis l'exécuter, cela vous donnera un accès SSH complet sous les privilèges de l'utilisateur Apache.

De là, vous pouvez facilement lire les fichiers de configuration de l'application Python et vous connecter à la base de données en utilisant les informations d'identification à partir de là, ce qui vous permettra de récupérer des données confidentielles (aucun exploit n'est nécessaire ici car l'application a accès à déjà la base de données).

En outre, comme @ Aroth l'a souligné dans les commentaires, vous pouvez également compromettre d'autres applications fonctionnant sous le même compte d'utilisateur.

Enfin, vous pouvez jeter un œil à la version du noyau/des bibliothèques en cours d'exécution et éventuellement utiliser un exploit pour obtenir les privilèges root.

86
André Borie