Accès à des posts GraphQL privés

Accessing private GraphQL posts

Objectif du lab

La page du blog contient un article caché (non listé) qui renferme un mot de passe secret. Pour valider le lab, il faut retrouver ce post privé puis soumettre le mot de passe.

1) Reconnaissance du trafic GraphQL

En arrivant sur la page principale du blog, on observe (via l’onglet Network ou Burp) une requête GraphQL envoyée en arrière-plan :

  • Endpoint : POST /graphql/v1

  • Opération : getBlogSummaries

Exemple de requête interceptée :

Cette query retourne les posts visibles et leurs id. On remarque que la liste contient les pages/posts 1, 2, 4 et 5, mais qu’il manque l’ID 3 → très bon indicateur d’un post privé / caché.

2) Récupération d’un post par ID

Quand on ouvre un article, l’application envoie une autre query qui récupère le contenu complet à partir de l’ID :

Cela confirme qu’on peut énumérer des posts en modifiant variables.id.

3) Introspection pour découvrir le schéma

Pour voir toutes les propriétés disponibles, on utilise l’Introspection Query (ex. via InQL, GraphQL tab, ou un payload standard) :

Réponse : 200 OK, très volumineuse (plus de 1000 lignes).

En l’analysant, on découvre un champ intéressant : postPassword.

4) Extraction du post caché (ID 3)

On relance getBlogPost en ajoutant le champ postPassword, puis on cible l’ID manquant (3) :

Variables :

Résultat : la réponse contient directement la valeur de postPassword → c’est le mot de passe secret à soumettre dans la bannière du lab.

Mis à jour