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

Sécurité Discussion :

Je ne parviens pas à reproduire la faille de la fonction C system()


Sujet :

Sécurité

  1. #1
    Membre confirmé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Octobre 2011
    Messages : 153
    Points : 591
    Points
    591
    Par défaut Je ne parviens pas à reproduire la faille de la fonction C system()
    Bonjour.

    Je suis actuellement en train de lire Développement Système sous Linux (4ème édition) de Christophe Blaess et au chapitre 3 il est question d'une faille de la fonction system() permettant d'ouvrir un shell en tant que root si :
    - le programme exécutant system() a les droits Set-UID root, (chown root.root exemple-system && chmod +s exemple-system)
    - le PATH est mis en priorité sur le répertoire courant (PATH=./:$PATH)
    - et un script ouvrant un shell se fait passer pour le programme devant être exécuté par system() (par exemple ls).

    J'ai réussi à changer le PATH, le faux script ls ainsi que le programme d'exemple sont déjà fournis (voir fin du post) et j'ai rajouté le bit Set-UID au programme d'exemple en tant que root. Lorsque j'exécute le programme en tant qu'utilisateur normal, j'obtiens un shell mais la commande whoami m'indique que je ne suis pas root mais l'utilisateur normal.

    J'ai essayé en créant un nouvel utilisateur normal (sans aucun droit admin) mais ça fait pareil.

    J'utilise la dernière version stable de Fedora x64 comme distribution. Est-ce qu'il est possible que la faille soit dorénavant corrigée (mais je ne trouve aucune info qui laisserait penser ça, seulement des infos expliquant comment reproduire la faille et qu'il ne faut pas utiliser system()) ? Ou est-ce "simplement" un mécanisme de protection de Fedora qui est à l'oeuvre (si oui, lequel ?) ?

    En vous remerciant par avance pour les explications que vous pourrez m'apporter.

    Code exemple-system.c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    // ------------------------------------------------------------------
    // exemple-system.c
    // Fichier d'exemple du livre "Developpement Systeme sous Linux"
    // (C) 2000-2010 - Christophe BLAESS -Christophe.Blaess@Logilin.fr
    // http://www.logilin.fr
    // ------------------------------------------------------------------
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void)
    {
    	system("ls");
    	return 0;
    }

    Code pseudo-ls : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #! /bin/sh
    # ------------------------------------------------------------------
    # ls
    # Fichier d'exemple du livre "Developpement Systeme sous Linux"
    # (C) 2000-2011 - Christophe BLAESS -Christophe.Blaess@Logilin.fr
    # http://www.logilin.fr
    # ------------------------------------------------------------------
     
     
    echo faux ls
    echo qui lance un shell
    sh

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 432
    Points : 43 061
    Points
    43 061
    Par défaut
    Si tu as un noyau récent, la faille est corrigée.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre confirmé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Octobre 2011
    Messages : 153
    Points : 591
    Points
    591
    Par défaut
    D'accord, merci.

    Est-ce que je peux trouver des détails quelque part sur la manière dont la faille a été corrigée ? Ne serait-ce qu'un numéro de commit, une news ou une release note, je me débrouillerai avec ça.

    Edit: j'ai finalement pu reproduire la faille en utilisant la VM Metasploitable.

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

Discussions similaires

  1. [embedded] Je ne parviens pas à l'utiliser. error -902
    Par Sunsawe dans le forum Firebird
    Réponses: 1
    Dernier message: 08/05/2008, 13h17
  2. Une requête que je ne parviens pas à trier
    Par renaud26 dans le forum Requêtes
    Réponses: 16
    Dernier message: 02/04/2008, 20h49
  3. Je ne parviens pas à catch ma std::exception !
    Par jomeo dans le forum SL & STL
    Réponses: 2
    Dernier message: 30/03/2007, 12h29
  4. Réponses: 2
    Dernier message: 05/02/2007, 00h37
  5. Process inconnu que je ne parviens pas à killer
    Par HNT dans le forum Administration système
    Réponses: 5
    Dernier message: 06/07/2006, 16h55

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