IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception Web Discussion :

executer une commande sur un serveur depuis une page web


Sujet :

Conception Web

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2005
    Messages : 85
    Points : 52
    Points
    52
    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

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    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 ?
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    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?

  4. #4
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2005
    Messages : 85
    Points : 52
    Points
    52
    Par défaut
    Merci de vos réponses

    je vais étudier de près exec() de PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    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

  6. #6
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2005
    Messages : 85
    Points : 52
    Points
    52
    Par défaut
    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 ?

  7. #7
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    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...
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  8. #8
    Membre éprouvé
    Avatar de goldkey
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 802
    Points : 1 084
    Points
    1 084
    Par défaut
    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
    Yes We Can

  9. #9
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    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 ???
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    alain.couthures
    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 .

  11. #11
    Membre éprouvé
    Avatar de goldkey
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 802
    Points : 1 084
    Points
    1 084
    Par défaut
    Dans la plupart des configurations sécurisées les fonctions PHP sensibles sont désactivées dans le fichier php.ini :

    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
    Yes We Can

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    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

  13. #13
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2005
    Messages : 85
    Points : 52
    Points
    52
    Par défaut
    merci à tous je vais aller poser la question sur le forum de fedora france

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer des données depuis une BDD sur un serveur de mon site web
    Par kookitanou dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 30/10/2012, 10h52
  2. Lancer un exe sur le serveur depuis une page PHP
    Par Bundy*Al dans le forum Apache
    Réponses: 1
    Dernier message: 27/04/2010, 08h27
  3. Executer une commande sur un serveur linux à partir de php
    Par lanjolanjo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 31/07/2009, 10h14
  4. Réponses: 1
    Dernier message: 25/04/2008, 11h52
  5. Lancement d'une commande sur un serveur Unix
    Par lper dans le forum Web & réseau
    Réponses: 2
    Dernier message: 29/07/2004, 13h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo