La visite de tous les sites suivants vous renvoie à l'écran de connexion :
http://mysite.com/admin/configuration.php
http://mysite.com/admin/login.php
Cependant, si vous visitez (notez que les deux dernières parties de la chaîne d'url sont toutes deux .php) :
http://mysite.com/admin/configuration.php/login.php
Vous pouvez voir l'écran de configuration et toutes ses données !
En outre, si vous ajoutez des variables GET, vous pouvez même obtenir des champs modifiables :
http://mysite.com/admin/configuration.php/login.php?cID=1&action=edit
Que se passe-t-il ici ?
Je dois noter que ce site utilise un panier d'achat absolument horrible appelé oscommerce. Le code est un cauchemar à gérer mais je suis coincé avec lui pour l'instant.
EDIT
Correction basée sur l'excellent et précis commentaire de vstm ci-dessous :
Cette mesure interviendrait juste avant la vérification de l'existence d'une $current_page != FILENAME_LOGIN
(autour des lignes 141-143 dans /admin/includes/application_top.php). Attention, il ne s'agit que d'un correctif d'urgence car la vraie solution est de ne jamais utiliser oscommerce qui est aussi sûr qu'une ceinture de pute.
//$current_page = basename($PHP_SELF); //this is the default
$current_page = basename($_SERVER['SCRIPT_NAME']); //change that default to this
if ( ($current_page == FILENAME_LOGIN) && !tep_session_is_registered('redirect_origin') ) {
$current_page = FILENAME_DEFAULT;
$HTTP_GET_VARS = array();
}
Si quelqu'un essaie de le faire, n'oubliez pas que le redirect_origin
Il se peut que la variable de session soit déjà définie, ce qui donnera l'impression de ne pas fonctionner. Il suffit de la désactiver et de réessayer.