Nous avons couvert l'injection et l'exécution de commandes dans Node JS. Le scénario comprenait une zone de saisie qui transmet les entrées de l'utilisateur sous forme de nombres à une fonction de calculatrice qui utilise une fonction EVAL() pour calculer et renvoyer le résultat de l'opération arithmétique à l'utilisateur. La fonction EVAL() ainsi que la calculatrice n'implémentent aucune sorte de validation d'entrée, ce qui nous a permis d'utiliser et d'appeler des méthodes Node JS telles que readdirsync() et readfilesync() pour lire des fichiers sensibles. Cela faisait partie de HackTheBox JSCalc défi du Web.
Obtenir les notes du certificat OSCP
Le cours pratique complet sur les tests d’intrusion d’applications Web
Faits saillants de la vidéo
Pour en savoir plus sur l'actif Noeud.js processus, utilisez le processus objet global. Require() n'est pas nécessaire car il est global. Il offre une multitude de fonctionnalités et de techniques utiles pour mieux maîtriser les interactions du système.
Par exemple, le répertoire de travail actuel du processus Node.js est renvoyé par processus.cwd(). J'ai utilisé notre programme pour tester cela et j'ai reçu les résultats. n'a pas activé Burp. Il me suffisait d'utiliser la console du navigateur pour examiner la charge utile et voir la réponse.
Lire les données d'un fichier flag.txt sur le serveur était le but du défi. Le module Node.js fs, qui doit être requis avec require('fs'), peut vous aider à le faire. Il existe des versions synchrones et asynchrones de chaque méthode. Le travail avec le système de fichiers est rendu possible (accès, gestion et modification de fichiers, etc.). Il comprend un large éventail de techniques et d’attributs. Le contenu du répertoire peut être répertorié à l'aide de la méthode readdir() ou readdirSync() (version synchrone) de la classe fs, qui fonctionne de manière similaire aux commandes ls ou dir sous Linux et Microsoft Windows, respectivement.
Nous avons utilisé la charge utile ci-dessous pour résoudre le défi
exiger('fs').readdirSync('/application').versChaîne()
exiger('fs').readdirSync(‘../’).toString()
exiger('fs').readFileSync("/flag.txt").versChaîne()