OVH Cloud OVH Cloud

perl et cgi

3 réponses
Avatar
mbfac
bonjour

Il y a qq temps j'avais réussi à eteindre mon serveur avec un script cgi
mais depuis il est passé des bits sur le disque et je ne me souviens plus.
aujourd'hui j'aimerai copier un fichier mais j'arrive pas a cause des droits
aussi je m'en remet à vous
le script pour changer les droits avant de copier qui marche po :-(

#!/usr/bin/perl
print "Content-type:text/html\n\n";
print "Travail en cours...";
@out = "/bin/chmod 777 /var/log/squid/access.log.0";

print "fini";

j'ai essayé en root

merci de votre aide

Michel

3 réponses

Avatar
mbfac
Merci MaXX :-)

Oui je sais que c'est trés vilain !
(voir post sur fr.comp.os.linux.configuration)

je pensais le remettre dans son état aprés

Cordialement

Michel BERTRAND
Avatar
MaXX
mbfac wrote:
Il y a qq temps j'avais réussi à eteindre mon serveur avec un script cgi
mais depuis il est passé des bits sur le disque et je ne me souviens plus.
aujourd'hui j'aimerai copier un fichier mais j'arrive pas a cause des
droits aussi je m'en remet à vous
le script pour changer les droits avant de copier qui marche po :-(

#!/usr/bin/perl
#!/usr/bin/perl -w

use strict; #je sais c'est agaçant mais obligatoire
use CGI::Carp qw(fatalsToBrowser); #ou méthode equivalente
print "Content-type:text/htmlnn";
print "Travail en cours...";
@out = "/bin/chmod 777 /var/log/squid/access.log.0";
Préférer un module perl plutot que d'appeler des instruction shell.

Le serveur tourne peut-être dans un chroot... dans ce cas il ne vois pas
le / du système,donc il ne peut pas accéder au "vrai" /var.

777 pour une copie c'est exagéré, 444 est sufisant [7= eXec(1) + Read(4) +
Write(2)]
print "fini";
Le script doit tourner en root:wheel, si je ne m'abuse si il est lancé par

le serveur web il tournera en www:www (ou nobody en fct du système) ou au
mieux root:www. Il faut regarder avec suexec mais j'aime pas du tout ça.
Sous réserve que je ne sois pas trop crevé, mais c'est de la folie de
laisser faire ça à un serveur web.

j'ai essayé en root
Je préfererai un crontab, disons 1x par jour ou à la rotation du fichier,

qui copie le log à un endroit "sur" et accessible par le serveur web plutôt
que de donner potentiellement le droit d' *ECRIRE* et *EXECUTER* POUR
*TOUT* *LE* *MONDE* (chmod 777) dans /var au dit serveur.
Libre à toi de faire le script en question en perl.
Si j'étais un mechant, j'utilise le droit que tu as donné
sur /var/log/squid/access.log.0, je remplace ton log par un script que je
veux, je l'execute et je prend le controle de la bête...

merci de votre aide

Michel
Voilà, penser securité le plus possible,


--
MaXX

Avatar
Benoit Izac
Bonjour,

le 13/10/2005 à 14:22, mbfac a écrit
dans le message <diljhq$ht7$ :

Il y a qq temps j'avais réussi à eteindre mon serveur avec un script
cgi mais depuis il est passé des bits sur le disque et je ne me
souviens plus. aujourd'hui j'aimerai copier un fichier mais j'arrive
pas a cause des droits aussi je m'en remet à vous le script pour
changer les droits avant de copier qui marche po :-(

#!/usr/bin/perl
print "Content-type:text/htmlnn";
print "Travail en cours...";
@out = "/bin/chmod 777 /var/log/squid/access.log.0";


@out = `/bin/chmod 777 /var/log/squid/access.log.0`;

--
Benoit Izac