Introduction

(cet article a été envoyé à Google pour évaluation et il est protégé par le droit d'auteur, donc si vous souhaitez envoyer votre propre solution... c'est fini hier... vous devez être inscrit dans le tableau de bord pour que votre article soit pris en compte)

MindReader était censé être l'un des défis les plus simples de GoogleCTF et c'est après quelques suppositions. Alors commençons

En tête de la page du défi, nous voyons une boîte avec un bouton « lire ».

La première chose qui me vient à l’esprit est d’essayer de tester « XSS », donc quelques tentatives XSS ont été testées, parmi lesquelles :

<script>alert(test)</script>

Malheureusement, la réponse n'a pas été celle attendue

Des techniques d'injection de commandes ont également été essayées avec quelques « ls », « cmd », mais également sans succès.

L'étape suivante consistait maintenant à essayer la traversée de répertoires et il s'avère que l'hôte est vulnérable. Les traversées suivantes ont été tentées mais également sans succès

../.././../etc/passwd

../../../../etc/ombre

../../../../etc/resolv.conf

../../../etc/hôtes

Ensuite, après quelques empreintes digitales, il s'avère que l'environnement exécute un docker, donc la page principale a été rouverte et "main.py" a été tapé et le script principal est apparu

Le script ci-dessus utilise le framework « flask » et utilise la fonction « index() » pour exécuter les tâches de lecture des valeurs saisies dans la boîte de défi.

La ligne 6 nous indique qu'il existe une variable d'environnement qui est affirmée avant d'exécuter la fonction et Google nous a indiqué que cette variable d'environnement est le véritable FLAG.

Et donner l'hôte est vulnérable à la traversée de répertoires, donc la variable d'environnement doit être accessible de cette manière.

J'essaie toutes les combinaisons en utilisant /proc/self/environ mais il semble que nous n'ayons pas d'autorisations d'accès

Une bonne connaissance des systèmes Linux entre en jeu, /proc/self/fd a des liens symboliques vers /dev/fd et cela signifie que sous Linux il y a des relations entre les variables d'environnement et les descripteurs de fichiers pour nous permettre d'accéder à l'environnement depuis les descripteurs de fichiers ou depuis /dev/fd qui commence à 0,1,2 et ainsi de suite.

Donc essayer /dev/fd/0 rien que lier /dev/fd/8 nous donne

Couplé à la traversée de répertoires

/dev/fd/../environnement

Et le drapeau a été capturé

A propos de l'Auteur

Je crée des notes de cybersécurité, des notes de marketing numérique et des cours en ligne. Je fournis également des conseils en marketing numérique, y compris, mais sans s'y limiter, le référencement, les publicités Google et Meta et l'administration CRM.

Voir les Articles