Archives du blog

jeudi 22 novembre 2012

IO level4








Ce niveau est bien plus basique que les précèdents.
Voici ses sources :













Voici la tête du binaire une fois exécuté :





La faille ici se situe dans l'utilisation de la fonction System. En effet, cette fonction lance /bin/sh avec en paramètre n'importe quelle commande unix passée en chaîne de caractères, le problème, c'est que pour trouver ces dites commandes, Linux va chercher leurs correspondances dans les variables d'environnements, plus particulièrement la variable PATH qui contient les dossiers dans lesquels le shell va chercher ses commandes. Si un utilisateur mal intentionné se mettait a changer la valeur de PATH, il pourrait alors contrôler n'importe quelle exécution de commande shell...

Voici la fameuse variable PATH de ce level :






donc ici, System envoie la commande "id" au shell, si le shell ne trouve pas "id" dans "/usr/local/bin" , il cherchera dans le dossier suivant listé dans PATH, a savoir : /usr/bin et ainsi de suite...

Pourquoi System est faillible ?
-Parce-que PATH est modifiable par les utilisateurs
-Parce-que SYSTEM lance un shell avec les privilèges du programme lancé
-Parce-que Shell peut exécuter à peut près tout et n'importe quoi.

Nous allons donc créer un dossier dans un répertoire inscriptible ( /tmp ), dans ce dossier nous allons écrire un fichier nommé "id" avec une commande pour lire le mot de passe du niveau suivant , lui donner les droits d'écriture, lecture, exécution a tout les utilisateurs et faire pointer la variable PATH vers lui :






Modification de la variable PATH :




Voici donc le premier dossier dans quoi le shell devrait aller chercher notre nouvelle commande =) :





Lancement du binaire :






Moralité : NE JAMAIS UTILISER SYSTEM ! Utilisez plutôt de execl() ou execve().

2 commentaires:

  1. Blog super intéressant pour ceux qui aiment linux et les ctf :)
    Dommage que je n'ai pu suivre les cours de secu applicative cela m'aurait intéressé

    RépondreSupprimer
  2. D'ailleurs si des compte rendu sous quelque forme existent je suis intéressé :)

    RépondreSupprimer