OWASP WebGoat:Insecure Client Storage

From aldeid
Jump to navigation Jump to search

Insecure Client Storage

L'objectif de ces exercices est de vous montrer qu'il ne faut pas considérer une information transmise au client comme "sécurisée", quand bien même celle-ci est "codée".

Stage 1

L'objectif de cet exercice est de décrypter des codes coupons encodés dans la page.

Note
Il peut être utile d'installer le plugin "Web Developer" de Firefox pour naviguer plus facilement. La suite de ce tutoriel suppose que ce plugin ainsi que Firedebug sont tous deux installés.

Une analyse du code source de la page (Outils > Web Developer > Information > View JavaScript) montre le stockage des coupons "encodés" ainsi que la fonction de décodage :

function decrypt(code){
  code = code.toUpperCase();
  alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  caesar = 
  for (i = code.length ;i >= 0;i--){
    for (j = 0;j<alpha.length;j++){
      if(code.charAt(i) == alpha.charAt(j)){
        caesar = caesar + alpha.charAt((j+(alpha.length-1))%alpha.length);
      }
    }
  }
  return caesar;
}

Il suffit d'appeler cette fonction dans l'URL directement, en lui fournissant comme paramètre les codes coupons récupérés :

Nous obtenons ainsi les coupons décodés :

Coupon codé Coupon décrypté
emph GOLD
sfwmjt SILVER
faopsc BRONZE
fopttfsq PRESSONE
pxuttfsq PRESSTWO

Il ne reste plus qu'à reporter l'un de ces codes dans le champ coupon et à valider le formulaire.

Stage 2

L'objectif de ce deuxième exercice est de supprimer les attributs "readonly" (rendant l'édition des prix non modifiables) afin de commander des articles gratuitement.

Pour ce faire, il suffit d'ouvrir longlet "Firebug" afin de modifier directement le code source de la page.

Note
L'opération est également réalisable avec WebScarab.