[sérieux!] Pourriez-vous hacker mon site?
Dernière réponse : dans Programmation
Salut!
Je suis en train de finir le développement d'un de mes projets (il s'agit d'un CMS open-source), et je passe donc à la partie "sécuritée". Je voudrais donc savoir si vous pourriez essayer de hacker mon CMS. Nonon, c'est tout à fait vrai (allez sur la page d'acceuil, je confirme mes dires).
Le site est à la page: http://maeloun.free.fr/darkness
Vous pouvez télécharger les sources du CMS pour étudier la structure à l'adresse suivante: http://maeloun.free.fr/darkness/sources.zip
Si vous trouvez des failles, merci de me les envoyer à l'adresse: maeloun@yahoo.fr.
Après, si vous le souhaitez, je mettrais votre nom/pseudo dans la liste des contributeurs au projet.
A+!
Maeloun
Je suis en train de finir le développement d'un de mes projets (il s'agit d'un CMS open-source), et je passe donc à la partie "sécuritée". Je voudrais donc savoir si vous pourriez essayer de hacker mon CMS. Nonon, c'est tout à fait vrai (allez sur la page d'acceuil, je confirme mes dires).
Le site est à la page: http://maeloun.free.fr/darkness
Vous pouvez télécharger les sources du CMS pour étudier la structure à l'adresse suivante: http://maeloun.free.fr/darkness/sources.zip
Si vous trouvez des failles, merci de me les envoyer à l'adresse: maeloun@yahoo.fr.
Après, si vous le souhaitez, je mettrais votre nom/pseudo dans la liste des contributeurs au projet.
A+!
Maeloun
Autres pages sur : serieux pourriez hacker site
Lassé par la pub ? Créez un compte
$dir_fonctions = opendir("./fonctions");
while($fonctions = readdir($dir_fonctions)) {
if(is_file("./fonctions/".$fonctions)) {
include("./fonctions/".$fonctions);
}
}
closedir($dir_fonctions);
Ca me paraît un peu dangereux de faire ça... non ?
Si quelqu'un arrive à uploader un fichier dans le dossier fonctions, il est inclus directement dans la page...
if($_GET['action']=="login" && !empty($_POST['pseudo']) && !empty($_POST['password'])) {
$requete = mysql_query("SELECT `rang` FROM `darkness_users` WHERE `pseudo`='".$_POST['pseudo']."' AND `password`='".$_POST['password']."'");
$requete = mysql_tri_tableau($requete,"incrementation");
$_SESSION['user']['rang'] = $requete[0];
if($_SESSION['user']['rang'] != "") {
for($t=1; $t <= 50; $t++) {
$_SESSION['user']['id_session'] .= strtolower(chr(rand(65,90)));
}
}
header("Location: index.php?id_session=".$_SESSION['user']['id_session']);
}
Tu ne fais pas de vérifications sur les valeurs POST pour le pseudo et le password.
On peut alors facilement passer Administrateur, en entrant dans le champs Login : ' OR rang='Administrateur, et la même chose dans le champs password.
Ce qui fait que ça va retourner forcément "Administrateur" comme rang, et on passe alors admin
Omar, ça ne saute pas aux yeux mais sa fonction securiser_var (ou qqch comme ça) qu'il appelle un peu avant se charge de repérer certains mots clef pour éviter les injections.
cette vérification n'est pas très efficace, il oublie des mots clefs (comme le delete), et on peut tout à fait passer O"."R à la place de OR
cette vérification n'est pas très efficace, il oublie des mots clefs (comme le delete), et on peut tout à fait passer O"."R à la place de OR
J'ai mis à jour le fichier de sécurisation des variables: la fonction est maintenant:
De plus, il faut maintenant que les fonctions qui sont incluses soit également présentes dans une liste txt (php et javascript).
Enfin, j'utilise le codage md5 avant d'envoyer les données pour le login. Rien ne transite en clair. Vous pensez que ça va enlever le problème du [' OR `rang`='administrateur']?
<?php
function securiser_var($var)
{
$autorisees = array(
"id_session",
"option",
"action",
"name",
"newname");
$oui = 0;
foreach($autorisees as $nom => $val) {
if(eregi($val,$var)) { $oui++; }
}
if($oui == 0) {
$_GET[$var] = bcmul($_GET[$var],1);
}
return $_GET[$var];
}
?>
De plus, il faut maintenant que les fonctions qui sont incluses soit également présentes dans une liste txt (php et javascript).
Enfin, j'utilise le codage md5 avant d'envoyer les données pour le login. Rien ne transite en clair. Vous pensez que ça va enlever le problème du [' OR `rang`='administrateur']?
Pour info hier ton mot de passe était en clair sur ton serveur ... aujourd'hui c'est son MD5 qui est sur le serveur ...
Or comme tu passes le MD5 dans l'URL ... il suffit de le mettre dans le header pour se connecter.
Bien sûr cela n'a pas grand chose à voir avec la robustesse de ton CMS ... c'était juste en passant en te demandant de remettre à jour le lien avec les dernières sources.
Or comme tu passes le MD5 dans l'URL ... il suffit de le mettre dans le header pour se connecter.
Bien sûr cela n'a pas grand chose à voir avec la robustesse de ton CMS ... c'était juste en passant en te demandant de remettre à jour le lien avec les dernières sources.
Salut!
Après un long moment d'absence, je suis revenu voir le nom des "debuggeur", et je me suis aperçu que j'avais sauté le post de Toam, qui signalait pourtant une faille importante.
Donc la faille est corrigée (tu parlais bien du fait qu'il était possible d'accéder au répertoire 'temp', ouvrir une sauvegarde de la base et en récupérer le contenu?).
Et je poste aussi le nouveau code (version quasi-finie). J'ai rajouté pas mal de fonctionnalitées (comme les langues).
http://darkcms.free.fr/downloads/darkness_v1.0.zip
Voilou.
@+!
ps: c'te fois-ci, j'active la notification de réponse ;-)
Après un long moment d'absence, je suis revenu voir le nom des "debuggeur", et je me suis aperçu que j'avais sauté le post de Toam, qui signalait pourtant une faille importante.
Donc la faille est corrigée (tu parlais bien du fait qu'il était possible d'accéder au répertoire 'temp', ouvrir une sauvegarde de la base et en récupérer le contenu?).
Et je poste aussi le nouveau code (version quasi-finie). J'ai rajouté pas mal de fonctionnalitées (comme les langues).
http://darkcms.free.fr/downloads/darkness_v1.0.zip
Voilou.
@+!
ps: c'te fois-ci, j'active la notification de réponse ;-)
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :