Annonce

Réduire
Aucune annonce.

Nouvelle Faille en local : excalade de privilège sous ubuntu 14.04/15.04/15.10

Réduire
X
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Nouvelle Faille en local : excalade de privilège sous ubuntu 14.04/15.04/15.10

    Salut je suis Rodrigue Daniel

    Voilà en parcourant le net, j'ai fait la connaissance d'un POC sur une faille locale sur ubuntu 14.04LTS (version noyau : Linux ubuntu 3.19.0-42-generic) jusqu'à ubuntu 15.10. Bon je suis dit qu'il faut que je teste cela. Alors j'ai fait les tests sur ubuntu 15.04 (kernel : Linux ubuntu 3.19.0-10-generic) et ubuntu 15.10 (kernel : Linux ubuntu 4.2-generic) : cela fonctionne très bien.

    En fait cet exploit permet à un pirate d'accéder en root sous ubuntu (version citée) sans connaitre le mot de passe.

    Voici le lien de cet exploit : https://www.exploit-db.com/exploits/39166/ -> publié le 05 janvier 2016.

    Pour tester votre système ubuntu, Vous téléchargez cet exploit en question (vous aurez un fichier d'extension .c -> 39166.c ), ensuite vous suivez ces étapes : l'éxécution se fait en utilisateur non root.

    - compilation et création du fichier éxécutable nommé 39166

    Code:
    test@test:~$ gcc -o 39166 39166.c
    - lancement de l'exploit

    Code:
    test@test:~$ ./39166
    - Vous aurez un accès en root. Voici la capture de l'un de mes tests :

    Capture_failleLocal.jpg


    MERCI
    Dernière modification par rodrigue daniel, 19 février 2016, 12h41.
    Passionné par la Sécurité Informatique.
    Le véritable ennemi de la connaissance n'est pas l'ignorance mais l'illusion de la connaissance.
    La quête de la connaissance passe d'abord par l'humilité et ensuite la détermination.

  • #2
    C'est super, mais j'aurais préféré personnellement que tu nous explique ce que le code effectue (quel type de faille ou bug il exploite)au niveau du overflay et comment il procède, plutôt que nous expliquer comment se servir d'un exploit.

    Surtout que le code est facilement compréhensible même pour moi qui suis un boeuf en C. Le décomposer et expliquer comment il fonctionne sur le système : création d'un dossier ---> la partie concerné, .... Serait là un plus.

    Ce n'est pas méchant mais si tu pouvais expliquer des exploits et les codes qui travaillent dessus ce serait super pour la compréhension, en expliquant les contre mesures. Mais, là compiler et utiliser reste limite à la portée de presque tout le monde.
    Dernière modification par DreAmuS, 19 février 2016, 15h12.

    Commentaire


    • #3
      Bon, personnellement, sur ma Ubuntu 14.04, cela ne fonctionne pas !
      Mais attention, cela est certainement dû au fait que je l'ai durcie ...

      Code:
      $ ./39166 
      couldn't create suid :(
      Je suis obligé de m'en aller ... mais je vais chercher à comprendre pourquoi !

      -----

      Test sur Linux Mint Rosa (base Ubuntu 14.04), une première station avec kernel 4.2.0-27, une deuxième avec kernel 3.19.0-32, et ça ne fonctionne pas !
      Je viens même de tester sur mon serveur, pure Ubuntu Trusty, kernel 3.19.0-49 - même résultat ...
      Exactement, le script créé les répertoires nécessaires dans /tmp ; mais ne peux pas obtenir les droits administrateurs.

      C'est bizarre, parce que selon l'information donnée, cela devrait au moins "toucher" ma deuxième station, d'autant qu'elle a un kernel légèrement plus vieux, voire mon serveur ...
      Dernière modification par _42_, 19 février 2016, 20h16.
      "Un hacker est un justicier du monde libre, du libre partage, de la libre information... "
      Quel slogan !
      Tout un programme ... une sacrée vision ... comme je les aime !

      Commentaire


      • #4
        Salut

        Merci DreAmuS pour cette remarque. En fait j'aurai dû en même temps demandé de l'aide pour la compréhension (je me suis un peu emporté). Car en vrai la compréhension de cet exploit me chargrine beaucoup. Vraiment DreAmuS, je m'excuse pour cette bétise que j'ai commise (cela ne va plus jamais se repéter).

        Pour une mésure de sécurité, j'ai fait un test : j'ai écris un simplement script bash (script basique -> pas besoin du code) qui crée le sous-répertoire "haxhax" dans le répertoire "/tmp", ensuite je donne les droits 400 et enfin je met le script au démarrage. Bon ça marche mais ce n'est pas optimal car si le pirate change de nom de répertoire alors il va toujours gagner.

        MERCI ENCORE (Moi je m'efforce de comprendre ce qui me chargrine). Votre aide pour la compréhension sera la bienvenue.
        Passionné par la Sécurité Informatique.
        Le véritable ennemi de la connaissance n'est pas l'ignorance mais l'illusion de la connaissance.
        La quête de la connaissance passe d'abord par l'humilité et ensuite la détermination.

        Commentaire


        • #5
          Tout d’abord, je dirais que c’est la dernière fois que je m’évertue à expliquer un exploit ou autres. Lorsque l’on met en place un poste ou un tutoriel, c’est que l’on sait comment cela fonctionne.
          Pour comprendre cet exploit, il faut commencer par comprendre ce qu’il attaque. Il vise le système UNIX et plus précisément l’overlayfs du kernel.

          Kernel est le noyau de Linux que ce soit Ubuntu, Debian, … c’est le centre des opérations qui donne les ordres et directives à toutes les cellules-souches.

          https://fr.wikipedia.org/wiki/Noyau_...9;exploitation

          Système Overlayfs

          Le système overlayfs n’est pas à proprement parler un véritable système de fichiers, mais un mécanisme de montage permettant de superposer dans un répertoire le contenu de plusieurs autres répertoires. La configuration la plus simple est celle de deux répertoires, appelons-les upper et lower que l’on peut imaginer comme des calques contenant des fichiers. Lorsque l’on veut lire le contenu d’un fichier, on regarde tout d’abord sur le calque supérieur – upper – puis, si aucun fichier ne correspond au nom recherché, on ira examiner ensuite le contenu du calque inférieur.
          La défaillance se situe sur le simple fait que l’overlayfs nous autorise à passer d’une couche à une autre.
          La base est posé, regardons d’un peu plus près le code C. Il est simple dans sa conception, in ne permet en fait que d’automatiser une série de commande bash simple que l’on aurait pu aussi bien taper à la main

          http://cli.handylinux.org/

          Le but est simple élever les privilèges de l’utilisateur en utilisant les couche de l’overlayfs pour atteindre le centre de commande root.

          On créé un répertoire haxhax, on lui donne tout les droits dans la couche 1 (voir les chmods), puis on l’éléve de la couche lowerdir à upperdir et finalement workdir.

          Code:
          mount("overlay", "/tmp/haxhax/o", "overlay", MS_MGC_VAL, "lowerdir=/bin,upperdir=/tmp/haxhax/u,workdir=/tmp/haxhax/w") != 0)
          Puis il le remplace avec chdir : chdir remplace le répertoire courant par celui indiqué dans le chemin path.Il monte les overlayfs en utilisant /bin en tant que système de fichiers à l'aide de répertoires temporaires pour passer de upper à lower,...

          Ensuite, il va utiliser :

          Code:
           wrapper = fork()
          Tu sais ce qu’est un fork de : un clone une copie basé sur le noyau de travail de l’original pour faire simple.
          Wrapper est ce qui englobe comme la page de ou le processus de.

          Donc, on va à partir du processus on crée cette classe wrapper qui va englober l’ensemble pour être cloner à nouveau dans un nouveau processus mais sur une autre couche.

          Plus concrètement et surtout techniquement parlant, l’exploit emploie un parent et un processus de namespace d'utilisateur.

          Code:
          pid_t wrapper, init;
          Le processus de namespace crée les overlayfs montants, des chdirs à l'annuaire et les rendent programmable. Après ce processus attend jusqu'à ce que le parent (PPID) ait gagné des privilèges à la racine root avant de tourner : unmounting. En quelque sorte on chroot le système en exploitant une faille dans le système de fichiers de l’overlayfs.

          Cependant, sur le schéma on constate que si le PID d’attribution du processus lors du clonage est <0 alors l’ensemble est arrêté, ce qui est assez logique car sur un système démarré init est initialisé à 1.
          Donc, le programme se met en attente et si l’exploit abouti alors tu deviens root en ayant traversé successivement les couches internes au kernel.

          Voilà j’espère avoir été explicite, difficile de concilier tout en ayant une approche simplifiée lorsque l’on parle noyau, overlayfs ou PID.

          Mais l’essentiel à retenir est là. Par contre, la prochaine réfléchie et comprend le programme avant de poster, car je ne vais pas expliquer à chaque fois tout ce que tu poste.


          Je ne suis pas rentré dans tous les détails comme la mémoire,... , pas que ça à faire non plus, mais voici un lien qui explique le fonctionnement sur comment ça marche ,

          http://www.commentcamarche.net/faq/1...e-fait-un-fork

          Et ce script qui travaille dans ce style pour t'apprendre :

          https://github.com/vincentbernat/jchroot

          de vincent bernat qui s'est largement interressé au possibilité de l'overlayfs.

          J'espère avoir répondus à tes attentes.
          Dernière modification par DreAmuS, 20 février 2016, 15h46.

          Commentaire


          • #6
            Bref, la leçon à méditer très sérieusement, et à appliquer est - encore une fois, celle-ci : mettre à jour sa distribution linux, tous les jours, et monter en version de noyau, dès que disponible !
            (sans parler d'éviter de crier au loup ....)

            En ce moment sur *Buntu (14.04), par exemple le dernier kernel en version 3.19 est le 0-49, et est disponible aussi le 4.2.0-27, dans les dépôts officiels ;-) - (ce qui n'empêche pas de mettre la dernière version stable 4.4.2 si tu te renseignes sur comment paramètrer, compiler, installer, ...)
            Ensuite, sur le wiki anglais, il y a pas mal de docs et autres réflexions pour durcir son SE, y aller et faire une recherche avec le mot clé "security" ...
            Dernière modification par _42_, 20 février 2016, 11h53.
            "Un hacker est un justicier du monde libre, du libre partage, de la libre information... "
            Quel slogan !
            Tout un programme ... une sacrée vision ... comme je les aime !

            Commentaire

            Chargement...
            X