[BreizhCTF 2k18] Write-Up – Web : Basique Simple Simple Basique

23
avril
2018
  • Google Plus
  • LinkedIn
  • Viadeo
Posted by: Yann C.  /   Category: BreizhCTF / CTF / Events   /   Pas de commentaire

Présentation d’un write-up de résolution du challenge « Web – Basique Simple Simple Basique » de la BreizhCTF 2018.

Durant la nuit du 20/04/2018 se déroulait la BreizhCTF 2018 sous forme d’un CTF Jeopardy. Ayant eu l’occasion et le temps d’y participer avec quelques collègues et amis, voici un write-up de résolution d’un des challenges.

  • Catégorie : Web
  • Nom : Basique Simple Simple Basique
  • Description : Vous n’avez pas les bases!
  • URL : http://148.60.87.243:49915
  • Points : 100

tl;dr; : Simuler une connexion locale via le header HTTP X-Forwarded-For et générer un cookie de validation true:md5(‘true’).

Challenge

Challenge

Ce challenge, en référence directe avec la chanson du moment d’Orelsan, proposait un service web avec plusieurs conditions.

Tout d’abord, une connexion simple nous indiquait que nous ne provenions pas de « localhost » :

Error not from localhost

Error not from localhost

L’ajout du header HTTP « X-Forwarded-For: 127.0.0.1 » pour simuler une traversée d’un proxy suffisait pour contourner cette première étape :

X-Forwarded-For

X-Forwarded-For

Un formulaire d’authentification POST à destination de la page elle-même devient visible, nous demandant un « username » et « password ». De plus, quelques extraits de la chanson sus-nommée sont également affichés.

On tente un peu de guessing voire même une attaque par wordlist sur la base des termes relatifs à Orelsan (tous les mots composant les paroles de la chanson). Ces requêtes POST révèlent d’autres paroles, mais aucun résultats probants…

POST username/password

POST username/password

Simple, Basique, serait-ce une authentification « Basic » à réaliser sur la base de cette même wordlist créée pour l’occasion ?

Basic AuthN

Basic AuthN

Négatif, pas de résultats valides…

Revenons-en aux « bases », ça doit être « simple » après tout. Y aurait-il une histoire de changement de base ? Base 10, 16, 32, 64 ? Où envoyer une telle valeur et « laquelle » surtout ?

Avant de creuser d’autres pistes, regardons de nouveau la toute première requête avec le « X-Forwarded-For » : elle nous retourne un cookie.

Set-Cookie: login=ZmFsc2U2ODkzNGEzZTk0NTVmYTcyNDIwMjM3ZWIwNTkwMjMyNw%3D%3D

Ce cookie « login » dispose d’une valeur URL-encodée et en base64 correspondant à :

false68934a3e9455fa72420237eb05902327

« false » puis le md5(« false »). Générons donc « true » puis le md5 de « true » :

trueb326b5062b2f0e69046810717534cb09
dHJ1ZWIzMjZiNTA2MmIyZjBlNjkwNDY4MTA3MTc1MzRjYjA5

Renvoyons ce cookie dans la requête (en GET !) :

Cookie true

Cookie true

Oh! Une redirection 302 vers une page cachée :

Flag simple basic

Flag simple basic

Flag :

BZHCTF{Ok_You_G0t_m3_It_was_T0o_eASy_4_YoU}

Chapeau à Estelle, Martin, Charles et Timothée pour celui-ci 🙂

Merci à toute l’équipe de la BreizhCTF pour l’organisation et la qualité des challenges !

Salutations à toute l’équipe, on remet ça quand vous voulez 😉 // Gr3etZ

  • Google Plus
  • LinkedIn
  • Viadeo
Yann C.

About the Author : Yann C.

Consultant en sécurité informatique et s’exerçant dans ce domaine depuis le début des années 2000 en autodidacte par passion, plaisir et perspectives, il maintient le portail ASafety pour présenter des articles, des projets personnels, des recherches et développements, ainsi que des « advisory » de vulnérabilités décelées notamment au cours de pentest.