Faille trop évidente

Eléphant du PHP | 51 Messages

24 janv. 2014, 23:28

Bonjour à tous,
Cela fait un moment que je ne suis pas venu sur le forum et c'est un peu honteux que je me tourne vers vous car je suis confronté à un problème qui me trouble. J'ai un exercice dans un TP de sécurité des applications WEB qui consiste à trouver un moyen de faire apparaître en clair le mot de passe attendu. Voici le code serveur :
<p>
Quel est le mot de passe ?
</p>
<?php
// Le bon mot de passe est donné :
if ($_POST['password'] == "trop simple") {
?>
<b>Gagné.</b>
<br /><i>L'important est de le trouver autrement qu'en le devinant.
Vous devez le voir écrit ailleurs que dans la page web qui dit « perdu ».</i>
<br />
<a href="./index.php">retour</a>
<?php
// Un mauvais mot de passe est donné :
} else if ($_POST['password'] != "") {
?>
<b>Perdu.</b>
<br />
<i>Il est pourtant « trop simple » ce mot de passe !</i>
<br />
<a href="./index.php">retour</a>
<?php
// Aucun mot de passe n'est donné
} else {
?>
<form method='post' action='index.php'>
Votre mot de passe :
<input type='text' size='30' name='password' />
<input type='submit' value='tester' />
</form>
<?php
}
?>
</body>
</html>

Merci d'avance de l'aide :)

ViPHP
xTG
ViPHP | 7331 Messages

25 janv. 2014, 11:23

A part en utilisant des failles du serveur qui permettraient d'afficher le code source plutôt que de l'exécuter je ne vois pas.
Sauf que tout serveur digne de ce nom a appliqué ce genre de mise à jour de sécurité...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 janv. 2014, 11:26

De toute façon ce sçript commence par afficher une erreur donc il doit pas servir a grand chose ;)
Un file_get_contents sur le fichier ?

Injection d'entente ? (Mais la c'est pb serveur)

Va falloir que l'on mette xtg ;)

@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

25 janv. 2014, 12:09

De toute façon ce sçript commence par afficher une erreur donc il doit pas servir a grand chose ;)
Un file_get_contents sur le fichier ?
Un warning n'est pas une erreur dans mon vocabulaire. :P

Pour le file_get_contents cela implique que le serveur est déjà corrompu.

Mammouth du PHP | 2278 Messages

25 janv. 2014, 12:11

C'est le jeu du pendu, ce problème-là, avec un nombre illimité d'essais... :P

A moins qu'il faille passer par une injection dans un select; mais les mots de passe sont codés dans les tables mysql...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 janv. 2014, 14:50

Un warning n'est pas une erreur dans mon vocabulaire. :P

Pour le file_get_contents cela implique que le serveur est déjà corrompu.
Laisser un warning comme ça pour moi c'est code comme un cochon n'a :lol:

Sinon oui cela laisse supposer des soucis cite serveur.
La juste en php je vois pas mais la sécurité c'est pas trop mon domaine d'expertise :D

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

25 janv. 2014, 18:13

Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
xTG
ViPHP | 7331 Messages

25 janv. 2014, 18:24

Il n'y a pas de requête SQL dans son code. :^o

Eléphant du PHP | 51 Messages

26 janv. 2014, 16:13

Merci de vos tentatives de réponse mais effectivement il n'y a aucun code SQL et encore moins de notion de base de données. Le but est simple, le serveur attend une valeur sur une variable php, à nous de lui faire cracher ce qu'il attend.
J'aime l'idée de faire afficher le code source plutôt que de l’exécuter, peux-tu développer la procédure ?

ViPHP
xTG
ViPHP | 7331 Messages

26 janv. 2014, 18:11

Un exemple de faille qui a été patché il y a deux ans : http://www.php.net/archive/2012.php#id2012-05-03-1

Mammouth du PHP | 1511 Messages

26 janv. 2014, 21:09

Et un bon vieux brute force ? Vu la tête du mot de passe ça ne doit pas mettre longtemps non ?

ViPHP
xTG
ViPHP | 7331 Messages

26 janv. 2014, 21:37

Et un bon vieux brute force ? Vu la tête du mot de passe ça ne doit pas mettre longtemps non ?
Certes mais je suis pas sûr que cela coïncide avec l'énoncé qui veut "faire apparaître en clair" le mot de passe.
Après 11 caractères... Va falloir faire tourner la machine un bon moment tout de même. ;)
Et puis le bruteforce étant l'arme la plus simple mais pas la plus maligne je ne pense pas que cela soit la réponse attendue.

Mammouth du PHP | 2278 Messages

27 janv. 2014, 11:35

La force brute représenterait quelque chose comme : 419?430.400.000.000.000 possibilistés en utilisant 40 caractères. Non compris la lourdeur de l'algorithme copmbinatoire.

Ce qui serait intéressant, ce serait de connaître la correction
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD