Le Max De Culture

L'Agora

Rejoindre

Articles

Exploitation de la faille de la fonction system()

Catégorie : Sécurité Informatique

Auteur : BIGMAC

04 Août 2019

Après s’être attaquer au faille de chemin sur Windows, attaquons-nous à la faille de la fonction system() sur linux !

Tout d’abord, qu’est-ce que la fonction system() ?

La fonction system est une fonction en c/c++ permettant d’exécuter des commandes systèmes sur l’OS sur lequel vous exécutez votre programme ! Jusque-là rien d’exceptionnel, elle peut par exemple exécuter ce genre de commande avec ce type de programme basique :

Effectivement la commande montrera les fichiers et dossier de la session linux. En fait, elle exécute la commande ls.

Comment fonctionne cette fonction system() ?

Cette fonction fonctionne comme la fonction pour retrouver un fichier sur Windows (voir autre article) à peu de chose près. Je vous explique :

Imaginons que la fonction system, comme dans l’exemple ci-dessus, exécute ls. La fonction system() va chercher ls de cette façon :

/usr/ ---------------- → non disponible, on continue à chercher dans le prochain dossier
/bin/ ---------------- → disponible, donc on l’exécute.

Et pour savoir dans quel dossier chercher, la fonction system() s’aide de la variable $PATH :

Et là vous vous dites « c’est super simple on a qu’à mettre un fichier ls dans un dossier usr comme ça il sera exécuté grâce à la fonction $PATH».

Effectivement mais ce sera un peu plus subtile, étant donné que nous ne pouvons pas écrire un fichier dans /usr/, minimun de sécurité, et que nous voulons réussir cette faille avec un minimum de droits.

Après la théorie, attaquons l’exploitation !

Comment l’exploiter ?

En faisant une exécution de ce programme :

Il va exécuter normalement la fonction ls. Nous devons donc créer un « faux » programme ls.

Etant donné que nous ne pouvons pas écrire notre fichier ls dans /usr/ nous allons le créer dans /tmp/ un dossier accessible de tous

Puis nous y écrirons une phrase aléatoire.

Bien ! Maintenant il va falloir que notre fichier ai des permissions pour s’exécuter (et oui linux est comme même un peu plus sécurisé que Windows 😉)

Nous avons le fichier ls, les permissions, le fichier est bien placé il ne reste plus qu’à modifier le plus important : la variable $PATH.

Dans ce cas, on souhaite que $PATH cherche d’abord dans notre dossier avant de chercher dans les autres dans le but que notre fichier soit exécuté, on va donc modifier :

Nous passerons donc de cette variable :

À celle-ci :

Bien ! Maintenant que nous avons fini notre préparation d’exploitation il n’y a plus qu’à l’exécuter.

Et voilà ! Opération réussi.

On a donc vu que system() était exploitable, maintenant il faut savoir contrer cette faille.

Comment s’en protéger ?

Si vous faites un programme en C, privilégiez la fonction exec() plutôt que system(). exec() ne va pas chercher dans les dossier les fichiers à exécuter comme system() mais elle crée son propre processus, un peu comme si elle ouvrait sa fenêtre de terminal toute seule.

Sources

Exploitation d’une faille de chemin sur Windows

Catégorie : Sécurité Informatique

Auteur : BIGMAC

16 Juin 2019

Tout d’abord, je dois vous parler de ce soir où, posé sur mon ordinateur, je regardais une conférence OVH sur YouTube, vous vous demandez sûrement pourquoi je vous parle de cela? Dans cette conférence, ils parlaient justement de la faille que nous allons présenter aujourd’hui.

Effectivement, nous pouvons observer que, par défaut, votre session windows contient un planificateur de tâches qui permet de planifier des programmes/services pour des tâches sur votre session, et souvent ces tâches sont planifiées pour être lancées dès que votre ordinateur s’allume.

Alors bien sûr, comme tout type de fichiers, les programmes (ou tâches) sont stockés à un certain endroit et possèdent un certain chemin, parfois ces chemins possèdent des guillemets pour indiquer que ce sont bien des chemins ex : « C:\Programmes\toto.exe », sauf que, malheureusement, tous les chemins d’accès ne possèdent pas des guillemets alors évidemment si un chemin comme celui-ci par exemple :

ne possède pas de guillemet cela ne sera pas problématique car il pourra être lu en une fois, mais si le chemin possède des espaces, c’est là que ça devient faillible.

Pour comprendre ce qui va suivre il va falloir comprendre la logique de Windows, vous vous demandez sûrement de quoi je parle? Ne paniquez pas, je vais vous expliquer.

Prenons en exemple ce chemin d’accès C:\Program files(x86)\ dossier faille \dropbox

Nous pouvons voir qu’il y a un espace entre « Program » et « files » et que cela ne pourra pas être lu par l’ordinateur comme un répertoire, Windows a donc mis en place une technique pour différencier les noms de répertoire avec des espaces et les tâches à exécuter, on va regarder si la chaîne de caractères qu’on analyse contient un espace ou un « / » après, si il contient un espace, on va se dire que c’est possiblement un exécutable, donc on va regarder si l’exécutable existe et si il n’existe pas on met la chaine de caractères comme répertoire, puis on tente de regarder dans chaque répertoire si il y avait le programme jusqu’à tomber sur le programme. Petit exemple pour illustrer tout ça :

Donc nous avons le chemin C:\Program files(x86)\dossier faille\dropbox

Windows a donc détecté un espace, il va donc regarder si il existe un Program.exe, et après il fera de même en regardant si il existe un dossier.exe.

Jusqu’à tomber sur le programme dropbox.exe.

Et c’est à ce moment-là que la faille rentre en compte, imaginons qu'un attaquant décide de mettre un Program.exe dans le répertoire « c:\ »en analysant ce chemin et en regardant si un Program.exe existe, il va donc en trouver un? que va-t-il faire ? il va l’exécuter alors qu’il ne devrait même pas être exécutable (et en plus de ça il n’exécutera pas dropbox.exe)

Pour vous démontrer cet exemple je vais faire un petit test

J’ai ici un petit programme en C (très basique)

On va donc compiler ce programme, le renommer Program.exe et le mettre dans le répertoire C:\

On redémarre l’ordinateur et on peut voir qu'au démarrage le programme a été exécuté.

Comme vous pouvez le voir, Windows a quand même essayé de mettre quelque chose pour que ce soit possible d’arrêter le programme (malgré qu’il soit déjà lancé). Malgré tout, ce n’est pas forcément une sécurité suffisante (il suffit que la victime de l’attaque ne remarque pas ou s'en moque et le programme continuera à être exécuter et n’exécutera pas certaines tâches) en plus de ça, un attaquant pourra faire une attaque beaucoup plus intelligente (en exemple sur c:\Program Files(x86)\dossier faille\dropbox il pourra mettre un dossier.exe dans Program Files(x86))

Alors que nous avons vu la faille on va pouvoir voir à quoi peut servir cette faille et comment s’en protéger.

A quoi peut servir cette faille ?

  • Une élévation de droit d’un autre utilisateur (souvent pour se mettre administrateur sur sa session windows)
  • Le déclenchement d’un malware à chaque démarrage d’ordinateur
  • Il peut aussi servir dans des cas plus rare à empêcher le déclenchement d’un programme comme un antivirus.

Comment s’en protéger ?

  • Une manière de se protéger est déjà de ne jamais laisser un répertoire avec un espace par exemple en renommant « \dossier faille\ » changé par « \dossier_faille\ »
  • Si il y a un message du type de l’image de haut-dessus(image de l’exécution), renommer au moins le fichier comme ça il sera encore exécutable mais que si vous le décidez.

Sources

L'auteur :

Jeune passionné d'informatique (plus particulièrement de sécurité informatique), prêt à apprendre des choses mais aussi à en transmettre, j'ai envie de finir ma bio sur cette citation "Ce qui est sécurisé à 99% n’est pas sécurisé" ce qui montre qu'il reste encore du travail et des choses a voir. Vous pouvez me contacter avec cette adresse mail : signannonce@gmail.com.


Lancement de mon blog !

Catégorie : Information

Auteur : Maxime LUCE

04 Janvier 2019

Bonjour à toutes et à tous !
Je viens de lancer mon nouveau blog intitulé "Le Max De Culture" !

Sur mon blog, je publierai le plus souvent possible des articles sur les sciences et plus particulièrement sur la Mathématique et la Physique.

Ce blog sera aussi un espace d'échange entre vous et moi. En effet, vous avez aussi la posssibilité d'écrire des articles sur le site ! Pour ce faire, rendez-vous ici : A propos. De ce fait, les articles pourront porter sur le sujet de votre choix. Le but principal étant l'échange de connaissances.

N'hésitez pas à me faire parvenir vos retours dans la rubrique Contact.

NOTE : Les articles commenceront à paraître à partir du mois de juin.

L'auteur :

Je suis passionné de tout mais surtout de la mathématique, la physique et l'informatique ; en somme des sciences. Je suis aussi très curieux et je m'intèresse à plein de choses diverses et variées. Je suis actuellement âgé de 15 ans.

---------------------------------

Programmé par Maxime LUCE



articles récents

Rejoindre