Failles cookies dans 4 services PHP. ************************************ Date : ****** 11/02/02 Probleme : ********** - Accès à la partie administration grâce aux cookies. Developpement : *************** Ce qui va suivre est un rapport sur 4 services distribués sur le web. Il s'agit d'un forum, d'un annuaire, d'une newsletter et d'un guestbook. Ces services ont 2 choses en commun : ils sont tous en PHP et ils ont tous un trou de sécurité lié aux cookies (tout comme le service Liens Lite 2037 et le portail Portix). 1) FORUMPERSO ------------- Versions : v2.1 et moins. Site : http://forumperso.multimania.com. Le trou se trouve dans connect.php3 : --------------------------------------------------------------- setcookie("pass_ok[0]","1"); setcookie("pass_ok[1]","admin"); header("Location: install.php3") --------------------------------------------------------------- Il suffit donc d'envoyer ces 2 cookies, avec comme nom pass_ok[0] et pass_ok[1], et comme valeur 1 et admin à la page : http://www.host.com/connect.php3?id_forum=&addr=install.php3 pour être considéré comme admin. 2) PHPMyAnnu ------------ Versions : v2.02 et moins. Site : http://www.creation-de-site.net Les pages d'administration, dans le dossier /admin/, commencent toutes par ces quelques lignes : ------------------------------------------------------------------------------------ admin_pass) { setcookie("adminnews", "true"); $ADMIN_MODE = true; } else ------------------------------------------------------------------------------------ Donc, pour être admin, envoyer le cookie avec comme nom adminnews et comme valeur true à http://www.host.com/admin.php3 . 4) TeeKai's Guestbook --------------------- Versions : 1.51 et moins. Site : http://www.teekai.info/ Ce service est un peu different. Contrairement aux 3 précédents, la faille n'est pas directement utilisable. D'ailleurs ce n'est pas reellement une faille, mais bien un risque qu'il n'est pas prudent de négliger. Il se trouve dans login.php : ------------------------------------------------------------------------------------ if ( ($username == $useradmin) && ($password == $passadmin)) { setcookie("UserAdmin","$useradmin",time()+1800); setcookie("PassAdmin","$passadmin",time()+1800); ------------------------------------------------------------------------------------ Les pass admins comme users sont envoyés, non-cryptés, par cookie. Il suffit donc d'envoyer une page html avec un script du genre : à l'admin pour recuperer son password. Tout ces développeurs ont été avertit. Greetz : ******** / Credits : ********* frog-m@n (leseulfrog@hotmail.com).