Mission jouable · Accès libre

Node → shell

Trois prises sur le même runtime Node.js : une commande collée dans un diagnostic, un objet sérialisé piégé, une charge Brotli qui franchit un filtre. De l'exécution directe au Node2Shell d'octobre.

Votre accès part par mail : un lien à usage unique, valable sept jours. Aucun mot de passe à créer.

  • Gratuit
  • 3 cibles
  • Difficulté 4/5
  • 1 500 points

Le briefing

3 objectifs, 3 lieux

Chaque cible est un lab réel : vous apprenez la technique en la pratiquant, pas en la lisant.

  • 01

    Amsterdam · NetProbe

    52.3676 N, 4.9041 E

    CWE-78 · Injection de commande OS · le diagnostic réseau

    NetProbe vérifie la résolution d'un hôte en lançant une commande système, et l'hôte que tu fournis est collé tel quel dans la commande, sans échappement. Ajoute un point-virgule et ta propre commande à l'hôte (localhost;cat /flag.txt, URL-encodé), lis le flag dans la sortie renvoyée, remonte-le.
  • 02

    Dublin · ProfileVault

    53.3498 N, 6.2603 O

    CWE-502 · Désérialisation non fiable node-serialize · le coffre à profils

    ProfileVault restaure le profil sérialisé que tu lui envoies avec node-serialize, et la bibliothèque évalue toute valeur marquée comme fonction. Cache une fonction auto-invoquée qui exécute une commande, encode l'objet en base64, envoie-le dans le champ state : la sortie revient dans profile.x. Lis le flag.
  • 03

    Stockholm · Le concentrateur

    59.3293 N, 18.0686 E

    CVE-2026-111497 · Node2Shell, bypass de filtre par compression · le concentrateur

    Le concentrateur décompresse la télémétrie qu'on lui pousse, mais refuse tout corps contenant un mot interdit en inspectant les octets avant décompression. Compresse ta charge en Brotli, pose Content-Encoding br : le filtre ne voit que du binaire, le serveur décompresse et évalue ton expression via new Function. Le flag revient dans la réponse.

Cette mission se joue sur le globe ZERODAY OPS, avec les autres.

Prendre la mission