Bug APACHE, j'en fait profité les autres.

G
Grantome
Guest
Bon,

Voici ce que je viens de découvrir (avec Sivit :wink: ).

Je place un password pour l'admin de mon site, tout comme je place un passe word pour protéger certain répertoire en .htaccess.
Et là, big bug.

Exemple:

login : on s'en fout
password: "ceuxvousvoulez_ceuxquevouvoulez".

Et bien seul "cequevousvoulez" est pris en compte. Rien de se qui se trouve derrière le _ ne sert. De même, vous pouvez même n'importe quoi après le _ ça passe.


Sivit m'a donné comme raison un bug APACHE.
 
WRInaute accro
c est grave qd meme ca, je teste desuite chez mon hebergeur. tu peux donner ta version d'apache ? (fais un phpinfo() si tu l'a pas)
 
G
Grantome
Guest
...

Version Apache : Apache/1.3.29 (Unix) PHP/4.3.8

Bon, je rentre dans le détail en donnant mon exemple de password.

Pass page admin sivit: abcde-45_blabla
Pass .htaccess : azerty-21_toto_blabla
Autre pass .htaccess : azerty-21_abc_untruc
(Je parle de .htaccess créés via l'interface sivit.)

Eh bien en mettant juste les lettres-2chiffres, ça marche.

Tout ce qui est à partire du _ est superflue.
 
WRInaute occasionnel
Personnelement je suis aussi sous Linux et je fais manuellement mes fichiers .htaccess. Pour le champ password, j'utilise la fonction crypt() et elle ne m'as jamais sorti de _ dans le password code, a la limite des . ou des / mais sinon que des lettres ou chiffres, alors il faudrait se demander si c'est pas le petit programme de chez sivit qui connait un leger bug.
a etudier...
 
WRInaute occasionnel
Je confirme mes dires: c'est PAS un bug d'Apache: j'ai essaye sous apache 1.3.29 sous Linux (en localhost chez moi) et avec le password: mot_de_passe (ce qui donne apres la moulinette du crypt():INRe1uUIuf4Ak) et le user david, ben ca fonctionne parfaitement. et si je tape juste: mot ou mot_de ou meme mot_de_ ben il me jette, il n'accepte que mot_de_passe.

QQun d'autre confirme?
 
WRInaute discret
Re: ...

Grantome a dit:
Version Apache : Apache/1.3.29 (Unix) PHP/4.3.8

Bon, je rentre dans le détail en donnant mon exemple de password.

Pass page admin sivit: abcde-45_blabla
Pass .htaccess : azerty-21_toto_blabla


Je ne sais pas si c'est lié mais il y a exactement 8 caractères avant ton underscore. Je crois que la fonction crypt est justement limitée à 8 caracteres, c'est pour ca que bcp de logiciels utilisent une fonction de type md5 pour accepter les mots de passe plus longs.

Donc ce ne serait pas lié à la présence d'un _ mais à la taille du pw.

Ben
 
WRInaute occasionnel
Re: ...

Ben a dit:
Je ne sais pas si c'est lié mais il y a exactement 8 caractères avant ton underscore. Je crois que la fonction crypt est justement limitée à 8 caracteres, c'est pour ca que bcp de logiciels utilisent une fonction de type md5 pour accepter les mots de passe plus longs.

Donc ce ne serait pas lié à la présence d'un _ mais à la taille du pw.

crypt() n'est pas limite a 8 caracteres, regarde l'exempel que j'ai donne: mot_de_passe, ca fait 12 caracteres, et crypt() (en tout cas avec PHP) me l'as tres bien crypter, j'ai aussi verifier avec PERL il me donne la meme chose. Donc non Ben c'est pas ca.
 
WRInaute occasionnel
Pour ceux quia ca interesse voici mon code complet pour ce servir de la fonction crypt() en PHP, vous remarquerez que j'utilise le Salt "IN" car c'est celui utilise pour les .htaccess sous Apache/Linux-Unix:

Code:
<?php
if($_POST['action']=='submitted')
{
	$strcrypter=crypt($_POST['acrypter'],IN);
}
?>
<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>crypt</title>
<meta http-equiv="Content-Type" content="text/html" />
</head>
<body>
<form name="form1" enctype="application/x-www-form-urlencoded" action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
<table>
	<tr>
	<td>Mot &agrave; crypter:</td>
	<td><input name="acrypter" type="text" size="14" maxlength="15" value="<?php echo($_POST['acrypter']); ?>" /></td>
	</tr>
	<tr>
	<td colspan="2"><input type="submit" value="Crypter"/><input type="hidden" name="action" value="submitted"></td>
	</tr>
	<tr><td colspan="2">R&eacute;sultat=<?php echo($strcrypter); ?></td>
	</tr>
</table>
</form>
</body>
</html>

@+
David
 
WRInaute discret
David, avec ton programme de test:

qwertyui -> Résultat=INdUUzaS4c7rI
qwertyuiop -> Résultat=INdUUzaS4c7rI

CQFD, seuls les 8 premiers caracteres sont pris en compte par crypt

Ben
 
WRInaute occasionnel
Ah oui! autant pour moi, j'ai cru qu'il ralerai si plus de 8 caracteres, mais non et j'ai rien trouver dans la doc qui dit que c'est limite
 
WRInaute discret
je n'avais rien trouvé non plus dans la doc de php, par contre dans man crypt(3) ils avouent que la clé est composée de 56 bits (8 caractères ascii 7bits)

à l'époque, 8 caractères c'était largement suffisant. Maintenant avec la puissance des ordis ca commence à être peu... On a interet a mélanger majuscules, minuscules, chiffres et caracteres speciaux si on veut que le mp soit dur a cracker...

Ben
 
WRInaute occasionnel
Mojy a dit:
en MD5 c'est tout de suite beaucoup plus difficile.
@+ Mojy

Ben oui ca serait mieux mais par defaut Apache ne comprend que les mots de passe crypte avec crypt() (donc un simple DES limite a 8 caracteres). Je viens d'essayer avec un password dans un .htpassword code avec md5, apache m'a jete. qqun sait si on peut changer la config d'apache pour qu'il decrypte les md5?
 
WRInaute discret
David@site a dit:
Mojy a dit:
en MD5 c'est tout de suite beaucoup plus difficile.
@+ Mojy

Ben oui ca serait mieux mais par defaut Apache ne comprend que les mots de passe crypte avec crypt() (donc un simple DES limite a 8 caracteres). Je viens d'essayer avec un password dans un .htpassword code avec md5, apache m'a jete. qqun sait si on peut changer la config d'apache pour qu'il decrypte les md5?

htpasswd man pages a dit:
...
htpasswd encrypts passwords using either a version of MD5 modified for Apache, or the system’s crypt() routine.
...
OPTIONS
...
-m Use MD5 encryption for passwords. On Windows and TPF, this is the default.

Cette commande donne donc le résultat escompté :
Code:
htpasswd -m /repertoire/fichier_passwd user

Read The Fucking Manual ...
!! Before post conneries !!
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut