Accueil > Uncategorized > Comment mal protéger son site web? Il suffit d’inclure le nom d’utilisateur et le mot de passe dans la page elle-même!

Comment mal protéger son site web? Il suffit d’inclure le nom d’utilisateur et le mot de passe dans la page elle-même!

En allant visiter le site web d’une compagnie de sapeurs-pompiers dont je faisais partie il y a plusieurs années, j’ai constaté qu’une partie du site était désormais protégée par un nom d’utilisateur et un mot de passe. Me demandant ce qu’un tel site pouvait bien avoir à cacher, j’ai décidé d’investiguer un peu.

En arrivant sur la partie protégée, j’ai constaté que la page me demandant mon nom d’utilisateur et mon mot de passe avait l’URL suivante:

lmpasswdlg.html?l='14159490828c4a1e...',p='14159496828c4a19...'

(J’ai tronqué ces deux variables pour qu’elles tiennent dans la largeur de cette page.) En regardant le code source de la page, et en particulier son code JavaScript, j’ai constaté que ces variables correspondaient respectivement au nom d’utilisateur du site et à son mot de passe, mais en version encryptée. À ce stade, je m’attendais à ce que le script prenne les données entrées par l’utilisateur, les encrypte et les compare aux valeurs ci-dessus. Dans ce cas, il n’y aurait pas eu moyen d’obtenir facilement le nom d’utilisateur et le mot de passe. Or, et c’est là que ça devient intéressant, le script fait exactement l’inverse. Il décrypte ces valeurs pour les comparer en clair aux valeurs entrées par l’utilisateur! Il ne me restait plus qu’à exécuter ce code moi-même avec les valeurs ci-dessus, et regarder les valeurs ainsi retournées:
login = ‘cdists’, password = ‘eca0665′. Wow! Et me voilà dans la partie "protégée" du site. Vous parlez d’une protection!

Donc tout ce code ne sert strictement à rien:

function HexToDec(c) {
  var alpha="aA";
  if (c>='a' && c<='f')
    return c.charCodeAt(0)-alpha.charCodeAt(0)+10;
  if (c>='A' && c<='F')
    return c.charCodeAt(0)-alpha.charCodeAt(1)+10;
  else
    return eval(c);
}

function EnDecrypStr(sSecret) {
  var sSecretTodo=sSecret;
  var sPassword="$%¢£²¼|*°«¢@%)-¾?";
  var strOut="";
  var l=sPassword.length;
  var l2=sSecretTodo.length/2;
  for (var x=1; x<=l2; x++) {
    var g=((x-1) % l);
    var iChar=sPassword.charCodeAt(g);
    var c1=HexToDec(sSecretTodo.charAt((x-1)*2));
    var c2=HexToDec(sSecretTodo.charAt((x-1)*2+1));
    var c=c1*16+c2;
    iChar=c^iChar;
    strOut=strOut+String.fromCharCode(iChar);
  }
  return strOut;
}

function HexToUnicode(str) {
  var strOut="";
  var s1=16;
  var s2=16*16;
  var s3=16*16*16;
  var l2=str.length/4;
  for (var x=1; x<=l2; x++) {
    var c1=HexToDec(str.charAt((x-1)*4));
    var c2=HexToDec(str.charAt((x-1)*4+1));
    var c3=HexToDec(str.charAt((x-1)*4+2));
    var c4=HexToDec(str.charAt((x-1)*4+3));
    var c=c1*s3+c2*s2+c3*s1+c4;
    strOut=strOut+String.fromCharCode(c);
  }
  return strOut;
}

// proviennent de l'URL ci-dessus
var l = '14159490828c4a1e809b947915191a8d0f14129693828b4f';
var p = '14159496828c4a19809b947115191e8e0f14169493828f4a1a809897';

var login = EnDecrypStr(l);
login = HexToUnicode(login);
var passwd = EnDecrypStr(p);
passwd = HexToUnicode(passwd);

if (CompareUnicodeString(my_Login, login)
    && CompareUnicodeString(my_Password, password)) {
 .... // success
}

Je ne me suis même pas donné la peine de regarder ce que pouvais bien faire la fonction CompareUnicodeString(), bien que son nom soit suffisamment explicite. :) J’avais déjà les informations dont j’avais besoin. Ou comment écrire du code compliqué pour rien et faire croire aux webmasters que leur site sera protégé….

About these ads
Catégories:Uncategorized
  1. Pas encore de commentaire.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Suivre

Recevez les nouvelles publications par mail.