Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Général Conception Web
Général Conception Web Forum d'entraide sur les choix technologiques. Avant de poster : Cours Dév. Web, FAQs Dév. Web, Sources Dév. Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/04/2007, 20h42   #1
Membre à l'essai
 
Inscription : août 2005
Messages : 78
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : août 2005
Messages : 78
Points : 21
Points : 21
Envoyer un message via ICQ à nico33410 Envoyer un message via AIM à nico33410 Envoyer un message via MSN à nico33410 Envoyer un message via Yahoo à nico33410 Envoyer un message via Skype™ à nico33410
Par défaut executer une commande sur un serveur depuis une page web

Bonjour à tous


J'ai une machine qui tourne tout le temps, sur cette machine, linux, il y a un programme écrit en c++ qui écoute le réseau et écrit sur le port parallèlle pour commander des lumières.

J'ai un client en java qui permet sur une autre machine de commander les lumières, ce client envoit des infos par le réseau. J'ai aussi un client, compilé pour linux, qui permet par le réseau d'envoyer des infos au serveur.

Je voulais savoir si il était possible via une page web de commander ces lumières de n'importe quelle machine sans avoir un programme d'installer, en gros lancer une commande sur le serveur depuis une page web.

Merci d'avance
nico33410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 09h31   #2
Membre Expert
 
Avatar de alain.couthures
 
Inscription : avril 2007
Messages : 889
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2007
Messages : 889
Points : 1 061
Points : 1 061
Bien sûr que oui!

Un serveur Web n'est ni plus ni moins qu'un programme qui lit des requêtes sur réseau et renvoie des réponses, le fonctionnement de base étant de retourner le contenu statique d'un fichier.

Mais tout ce qui est dynamique permet de lancer un programme localement sur le serveur (fonction exec() en PHP).

Ce n'est pas si compliqué de se faire son propre serveur HTTP à partir de rien car des exemples sur Internet se trouvent facilement. J'ai fait le mien en C# (http://www.agencexml.com/txs/fr/) pour Windows... Pour le coup, on a un tout petit programme hyper simple à déployer ce qui vous suffirait, je pense, plutôt que d'avoir à installer ceci + cela et encore ceci-cela...

A propos d'une machine Linux qui tourne tout le temps, je rêve d'avoir un "Linutop" (http://www.linutop.com)... Est-ce que vous connaissez ?
alain.couthures est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 09h37   #3
Membre éclairé
 
Inscription : juillet 2003
Messages : 338
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 338
Points : 339
Points : 339
Si j'ai compris: En fait il s'agit d'établir une connexion entre ton serveur où il y'a ton pgm c++ et des clients web. Il te faut établir une connexion sécurisée avec ton serveur pour permettre l'exécution d'un programme sur ton serveur. Côté technique classique je verrais bien établir un tunnel (pour passe le firewall de ton serveur) et SSH port 22, avec un port 8082 pour ton client web (navigateur)en //localhost:8082.
Good idea?
tatareau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 13h48   #4
Membre à l'essai
 
Inscription : août 2005
Messages : 78
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : août 2005
Messages : 78
Points : 21
Points : 21
Envoyer un message via ICQ à nico33410 Envoyer un message via AIM à nico33410 Envoyer un message via MSN à nico33410 Envoyer un message via Yahoo à nico33410 Envoyer un message via Skype™ à nico33410
Merci de vos réponses

je vais étudier de près exec() de PHP
nico33410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 18h17   #5
Membre éclairé
 
Inscription : juillet 2003
Messages : 338
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 338
Points : 339
Points : 339
attention avec exec() tu vas permettre l'exécution depuis le web de binaire sur ton serveur, donc donner la possibilités à un tiers d'avoir des droits root: surveille bien ta politique de sécurité du serveur (liaison ssh, environnement chrooté etc...)
Va voir le lien sécurité php fonction ciblée
tatareau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 17h04   #6
Membre à l'essai
 
Inscription : août 2005
Messages : 78
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : août 2005
Messages : 78
Points : 21
Points : 21
Envoyer un message via ICQ à nico33410 Envoyer un message via AIM à nico33410 Envoyer un message via MSN à nico33410 Envoyer un message via Yahoo à nico33410 Envoyer un message via Skype™ à nico33410
Je vois le problème. Je ne savais pas qu'exec donnait des droits root.

Donc tatareau tu me conseillerais un tunel ssh depuis une interfaces web sur un autre port que le 80 ?
nico33410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 19h02   #7
Membre Expert
 
Avatar de alain.couthures
 
Inscription : avril 2007
Messages : 889
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2007
Messages : 889
Points : 1 061
Points : 1 061
C'est certainement parce que je ne suis pas pirate dans l'âme que je ne vois pas le problème de sécurité : dans le cas présent, il ne s'agit pas de permettre à un internaute de lancer n'importe quel programme depuis son navigateur mais, au travers d'un formulaire spécifique, de provoquer sur le serveur le lancement de tel ou tel programme dont le nom est en dur dans le code PHP ?? Ai-je mal compris ???

De toute façon, s'il s'agit de piloter son éclairage depuis Internet... je suis d'accord sur l'idée de protéger ça pour que ce ne soit pas n'importe qui qui s'amuse à allumer et à éteindre à toute heure du jour et de la nuit...
alain.couthures est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 19h10   #8
Membre émérite
 
Avatar de goldkey
 
Inscription : mars 2003
Messages : 795
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mars 2003
Messages : 795
Points : 842
Points : 842
Citation:
Envoyé par nico33410
Je vois le problème. Je ne savais pas qu'exec donnait des droits root
La commande exec() s'execute avec les droits du user avec lequel est démarré Apache.

Si Apache est démarré avec des droits "root" alors exec() pourra executé des programmes en tant que "root".

Mais c'est un jeu dangereux
goldkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 19h16   #9
Membre Expert
 
Avatar de alain.couthures
 
Inscription : avril 2007
Messages : 889
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : avril 2007
Messages : 889
Points : 1 061
Points : 1 061
Pardonnez-moi d'insister... Ok pour le fait qu'exec() s'appuie sur le même utilisateur qu'Apache, mais, encore, où est la faille ???

Il faudrait que le pirate modifie le script PHP pour y mettre le nom du programme qui l'intéresse et, s'il sait faire ça, il pourrait tout aussi bien rajouter un appel à exec() dans un script qui n'en contenait pas ??? Je débloque ou quoi ???
alain.couthures est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 10h38   #10
Membre éclairé
 
Inscription : juillet 2003
Messages : 338
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 338
Points : 339
Points : 339
alain.couthures
Citation:
C'est certainement parce que je ne suis pas pirate dans l'âme que je ne vois pas le problème de sécurité
Il existe des scripts où les mots de passe sont codés en dur, les sommes soumis au formulaire de paiement passe dans l'url en clair, etc. La plupart du temps les failles sont dues à une méconnaissance des règles de base de sécurité. Obtenir des droits root sur des serveurs n'est pas vraiment compliqué vu le nombre d'article sur ce sujet. Simplement, ce sont aussi les fichiers de configuration par défaut qui peuvent faire très mal comme par exemple MySQL qui n'a pas de mot de passe par défaut pour l'admin, les problèmes de 'magic quote' sur le php (voir un article sur ce site ou comment une simple requete SQL peut être modifée, c'est déjà un classique ).
La configuration d'un serveur n'est pas une chose triviale, il est estimé par exemple que 50% des serveurs dans le monde ont un DNS mal configuré.

Je ne connais pas le(s) script(s) de nico33410, mais au moins qu'il recherche de l'infos sur la sécurité serveur, et puis c'est excellent pour la culture générale
nico33410 J'utilise ce type de configuration pour me connecter à distance à un serveur via internet, toutefois je n'ai rien paramètré, je dirais que je n'en suis pas capable de façon 'secure'. Pour le paramètrage précis et concis du serveur apache, poses les questions sur le forum Linux, où il y' a surement des kadors du domaine .
tatareau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 13h04   #11
Membre émérite
 
Avatar de goldkey
 
Inscription : mars 2003
Messages : 795
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mars 2003
Messages : 795
Points : 842
Points : 842
Dans la plupart des configurations sécurisées les fonctions PHP sensibles sont désactivées dans le fichier php.ini :

Citation:
disable_functions = exec,system,popen,proc_open,fsockopen
Après c'est a lui de choisir quel niveau de sécurité son site nécessite.
S'il part du principe que c'est seulement pour piloter un jeu de lumieres avec une machine non relié aux réseaux sensibles, pourquoi pas!!

Citation:
Envoyé par alain.couthures
Il faudrait que le pirate modifie le script PHP pour y mettre le nom du programme qui l'intéresse et, s'il sait faire ça, il pourrait tout aussi bien rajouter un appel à exec() dans un script qui n'en contenait pas ??? Je débloque ou quoi ???
Non non tu ne débloque pas, tout est faisable
Surtout si l'aspect sécurité a été négligé dans la programmation
goldkey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 15h58   #12
Membre éclairé
 
Inscription : juillet 2003
Messages : 338
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 338
Points : 339
Points : 339
Et beaucoup (trop?) d'infos dans le php_info fournit par les providers...
et pour finir de vous convaincre un simple google pirate+¨php
ici
Mais chez notre ami, ce n'est pas la NSA mais c'est toujours pénible et peut être même davantage de se faire 'bouziller ' ses données perso par un petit c..
Mais l'idée des lumières (et de la domotique en générale) est vachement sympa!
A plus
tatareau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2007, 19h02   #13
Membre à l'essai
 
Inscription : août 2005
Messages : 78
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : août 2005
Messages : 78
Points : 21
Points : 21
Envoyer un message via ICQ à nico33410 Envoyer un message via AIM à nico33410 Envoyer un message via MSN à nico33410 Envoyer un message via Yahoo à nico33410 Envoyer un message via Skype™ à nico33410
merci à tous je vais aller poser la question sur le forum de fedora france
nico33410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h10.


 
 
 
 
Partenaires

Hébergement Web