Inscrit depuis le
Dernière activité
Groupes
Activité récente

[Sécurité - CSRF/Replay] Possibilité de spammer le chat & envoyer un messag
4 déc. 2016

@FoxLey Merci pour ta réponse rapide. Poster un message en tant que quelqu'un d'autre peut se faire via un formulaire POST qui peut être hébergé n'importe où (voir PoC ci-dessous) et en invitant l'utilisateur à le soumettre. Ou bien en exploitant une faille XSS autre part sur le site (je n'ai pas vérifié si il y'en avait mais même en étant prudent ça arrive d'en avoir).

Formulaire post:
<html>
<head>
<title>NeoFrag Chat CSRF PoC</title>
</head>
<body>
<form action="[URL]/ajax/talks/add_message.html" method="POST">
<input name="talk_id" type="hidden" value="2" />
<input name="message" type="text" />
<input type="submit" />
</form>
</body>
</html>

@Crazy Coucou :-)

[Sécurité - CSRF/Replay] Possibilité de spammer le chat & envoyer un messag
4 déc. 2016

Hello,

Tout d'abord je voulais vous féliciter pour NeoFrag, bien que je ne l'utilise pas et que je ne suis plus un grand fan de PHP, il rempli un manque dans le domaine (CMS pour gamers/teams) et est bien complet.

Passons au sujet principal :) Il y a une faille CSRF/Replay sur le chat. Je ne sais pas si elle a déjà été signalée car elle est assez flagrante. Il est possible de simplement rejouer la requête POST sur /ajax/talks/add_message.html et d'ainsi spammer le chat ou avec une attaque un peu plus élaborée d'envoyer un message en tant qu'un autre utilisateur.

Le fix est relativement simple. Il suffit de générer un token pour le chat et l'envoyer à l'utilisateur lorsqu'il le charge. Dès que l'utilisateur envoie un message, le token est vérifié et si il est valide, le message est posté puis un nouveau token est généré et retourné dans la réponse de la requête AJAX afin qu'il puisse poster un message suivant.

++
Raf