Re: Exécute r un bash script depuis un script PHP

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Old-Topics: Re: Exécuter un bash script depuis un script PHP
New-Topics: Re: Exécuter un bash script depuis un script PHP
Subject: Re: Exécute r un bash script depuis un script PHP
Le vendredi 26 septembre, p.karatchentzeff@??? a écrit :
> > Si ton script commence par "#!/bin/sh" et qu'il est exécutable, tu n'as
> > pas besoin d'invoquer /bin/sh dans l'appel de system. Tu peux écrire
> >
> >     system("/home/jabber/cmd.sh $argumentsh");

>
> Si l'on ne vérifie pas le PATH *avant* de lancer ta commande, le
> bin/sh peut-être n'importe quoi...


bin/sh peut être n'importe quoi, mais si je ne m'abuse, /bin/sh (avec un
/ au début) ne peut être que /bin/sh. Donc si le script commence par
"#!/bin/sh" je ne vois pas où est le problème. Et s'il commence par
"#!bin/sh" (drôle d'idée) ça ne marche pas.

> et donc on peut ainsi ouvrir une faille dans le système.


Où ça ? C'est la même personne qui écrit le script shell et le script
php qui appelle le script shell. Tu penses au cas où l'attaquant
pourrait modifier les variables d'environnement du serveur ?

> Sous Perl, on peut lancer l'interpréteur dans un mode
> « d'entachement » qui vérifie ce genre de problème...


$ perl -Te 'system "/home/edgar/cmd.sh"'
Insecure $ENV{PATH} while running with -T switch at -e line 1.
$ perl -Te 'system "/bin/sh /home/edgar/cmd.sh"'
Insecure $ENV{PATH} while running with -T switch at -e line 1.

Visiblement ce n'est pas /bin/sh qui froisse perl -T. À mon avis il ne
regarde même pas le paramètre de system(), il sait juste que system()
peut lancer un shell et il n'aime pas lancer un shell avec un PATH non
contrôlé. C'est pas qu'il a peur de lancer un faux shell, c'est qu'il a
peur de ce que le vrai shell va faire.

Edgar.

-- 
Edgar Bonet           Maison : 04 76 21 29 16    Bureau : 04 76 88 10 96
3 rue Jean Prévost    Mobile : 06 77 19 79 39    Fax    : 04 76 88 11 91
38000 Grenoble        guilde@???     www.edgar-bonet.org