Security: RCE #1

Open
opened 3 months ago by marcimat · 0 comments
Collaborator

Bonjour,

Merci pour ce plugin et pour le readme.

Tu introduits un fichier (formidable_imagecrop.php) qui permet pour le moment à n’importe qui et sans vérification d’écrire du contenu non contrôlé sur le serveur…

C’est une faille de sécurité tel que codé actuellement.

Il y a plusieurs choses à améliorer donc, pour vérifier les droits du visiteur (fonction autoriser(), pour vérifier que par exemple déjà que le nom du fichier d’origine ne peut pas être altéré, que le contenu correspond écrit correspond à ce qui est attendu)… bref brider drastiquement des possibilités d’injection malveillante.

Tu peux déjà comme pistes :

  • créer un fichier d’action (SPIP) comme destination des traitements, avec des autorisations et vérifications dedans (déplacer le fichier formidable_imagecrop.php donc et l’adapter)
  • créer un formulaire SPIP CVT pour une partie de ta page qui affiche le formulaire et exécute le javascript, et l’appeler donc avec une balise #FORMULAIRE_xxx dont la partie charger() peut déjà vérifier des autorisations du visiteur,
  • ajouter un token et/ou une action signée sur un des paramètres postés par ton javascript (qui va poster sur le fichier d’action), token à vérifier dans ton action PHP.

De la sorte déjà ça limite une partie des soucis (il faut être identifié et tu vérifies que la personne qui a affiché le formulaire est la même qui poste du contenu, ici l’image croppée).

Après si la personne identifiée est malveillante, c’est un encore un autre souci… d’où s’assurer sur l’autorisation que par exemple c’est un administrateur ou un rédacteur au moins, et pas un simple visiteur), et éventuellement vérifier que le contenu posté est de type image comme attendu.

Il y a peut être certains plugins plus ou moins identiques qui pourraient t’aiguiller…

Bonjour, Merci pour ce plugin et pour le readme. Tu introduits un fichier (formidable_imagecrop.php) qui permet pour le moment à n’importe qui et sans vérification d’écrire du contenu non contrôlé sur le serveur… C’est une faille de sécurité tel que codé actuellement. Il y a plusieurs choses à améliorer donc, pour vérifier les droits du visiteur (fonction autoriser(), pour vérifier que par exemple déjà que le nom du fichier d’origine ne peut pas être altéré, que le contenu correspond écrit correspond à ce qui est attendu)… bref brider drastiquement des possibilités d’injection malveillante. Tu peux déjà comme pistes : - créer un fichier d’action (SPIP) comme destination des traitements, avec des autorisations et vérifications dedans (déplacer le fichier formidable_imagecrop.php donc et l’adapter) - créer un formulaire SPIP CVT pour une partie de ta page qui affiche le formulaire et exécute le javascript, et l’appeler donc avec une balise `#FORMULAIRE_xxx` dont la partie charger() peut déjà vérifier des autorisations du visiteur, - ajouter un token et/ou une action signée sur un des paramètres postés par ton javascript (qui va poster sur le fichier d’action), token à vérifier dans ton action PHP. De la sorte déjà ça limite une partie des soucis (il faut être identifié et tu vérifies que la personne qui a affiché le formulaire est la même qui poste du contenu, ici l’image croppée). Après si la personne identifiée est malveillante, c’est un encore un autre souci… d’où s’assurer sur l’autorisation que par exemple c’est un administrateur ou un rédacteur au moins, et pas un simple visiteur), et éventuellement vérifier que le contenu posté est de type image comme attendu. Il y a peut être certains plugins plus ou moins identiques qui pourraient t’aiguiller…
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.