lancer un bash avec php-apache - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 10-09-2016 à 19:27:48
ReplyMarsh Posté le 10-09-2016 à 20:05:18
J'ai reussi
Reste à sécuriser.
/etc/sudoers :
Code :
|
1er fichier php dans /var/www/administrateur/sauvegarder.php :
Code :
|
2e fichier php dans /var/www/administrateur/maj.php
Code :
|
1er fichier bash dans /save_rsync.sh avec attributs 770
Code :
|
2e fichier bash dans /maj_rsync.sh avec attributs 770
Code :
|
Marsh Posté le 10-09-2016 à 21:22:52
Si ton script est modifiable par ton utilisateur, alors il n'y a aucune sécurisation, tu viens de donner l'autorisation de lancer toutes les commandes du monde en root, puisque rien n'empêche d'éditer le script et de mettre toutes les commandes qu'il veut dedans.
Tes scripts devraient appartenir à l'utilisateur root, avec des droits en 755.
Edit : Vu que tu as des mdp dans ton script, plutot root + groupe auquel appartient ton user, et droits en 750, ou, mieux, tu n'autorises pas à lancer le script entier via sudo mais juste les commandes qui en ont besoin (genre mount et umount).
Marsh Posté le 12-09-2016 à 09:13:03
+1
PHP ne devrait pas lancer de script shell, question de sécurité de base.
Après question stupide : pourquoi un script shell ?
De quoi as-tu besoin qui doivent se lancer à partir de ton PHP ?
Marsh Posté le 12-09-2016 à 13:52:50
Idem qu'au dessus, lancer un shell, sous root, depuis le compte du serveur web, c'est extrêmement dangereux.
Si tu n'as pas de besoin de réactivité énorme, le mieux serait a mon avis de passer par un traitement asynchrone : ton appli PHP dépose un flag dans un dossier quelconque de l'arborescence web (ou si tu as une base de données, un demande dans l'une des tables), et tu as un cron root (ou autre user avec sudo) qui tourne toutes les X secondes/minutes qui traite les demandes en attente.
Si tu as besoin de travailler en mode synchrone par contre, c'est plus compliqué. La seule solution que je vois comme ça, c'est de passer par un daemon qui tourne sous un user autre, et qui contrôle ce qui est demandé pour le déclencher via sudo. Ça évite que ton serveur web ait un droit sudo, mais tu restera vulnérable à certaines attaques
Marsh Posté le 12-09-2016 à 14:04:38
c'est quoi le risque exactement à lancer un script en root avec sudo depuis l'utilisateur d'apache ? (sans avoir les droits d'écriture sur le script)
Marsh Posté le 12-09-2016 à 14:31:11
Ivy gu a écrit : c'est quoi le risque exactement à lancer un script en root avec sudo depuis l'utilisateur d'apache ? (sans avoir les droits d'écriture sur le script) |
Ben ton contexte d'éxécution obtient l'élévation des privilèges root.
Du coup une attaque pouvant injecter du code (par exemple) le lancera avec les droits root.
Ce sera open bar pour lui.
Marsh Posté le 10-09-2016 à 15:33:23
tout le monde j'ai besoin de votre aide.
Je voudrais lancer un bash depuis une page php.
J'ai pour l'instant fait un bash juste pour faire des essais, le voici :
Je l'ai placé à la racine /test_bash.sh avec les attributs 777 pour les essais.
Voilà mon php :
Le fichier /etc/sudoers :
Et le résultat de :
Impossible de lancer mon bash.
Comment y parvenir ?
Merci pour votre aide.