CVE-2018-25095
📋 TL;DR
The Duplicator WordPress plugin before version 1.3.0 contains a vulnerability where the installer script doesn't properly escape values when modifying WordPress configuration files. If the installer script remains on the site after migration, attackers can exploit this to execute arbitrary code on the server. This affects all WordPress sites using vulnerable versions of the Duplicator plugin.
💻 Affected Systems
- Duplicator WordPress Plugin
📦 What is this software?
Duplicator by Awesomemotive
⚠️ Risk & Real-World Impact
Worst Case
Complete server compromise allowing attackers to execute arbitrary code, install backdoors, steal data, deface websites, or use the server for further attacks.
Likely Case
Website defacement, data theft, malware injection, or cryptocurrency mining malware installation.
If Mitigated
No impact if the installer script is properly removed after migration as intended by the plugin's design.
🎯 Exploit Status
Exploitation requires the installer script to be accessible on the server. Attackers can directly access installer.php or installer-backup.php files if they weren't removed.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 1.3.0 and later
Vendor Advisory: https://wpscan.com/vulnerability/16cc47aa-cb31-4114-b014-7ac5fbc1d3ee
Restart Required: No
Instructions:
1. Update Duplicator plugin to version 1.3.0 or later via WordPress admin panel. 2. Manually delete any installer.php or installer-backup.php files from your WordPress root directory if they exist. 3. Verify the files are removed.
🔧 Temporary Workarounds
Manual File Removal
linuxRemove vulnerable installer files from server
rm -f /path/to/wordpress/installer.php
rm -f /path/to/wordpress/installer-backup.php
Access Restriction
allBlock access to installer files via web server configuration
# Add to .htaccess for Apache:
<Files "installer.php">
Order Allow,Deny
Deny from all
</Files>
<Files "installer-backup.php">
Order Allow,Deny
Deny from all
</Files>
# Add to nginx config:
location ~ /installer\.php$ { deny all; }
location ~ /installer-backup\.php$ { deny all; }
🧯 If You Can't Patch
- Immediately delete installer.php and installer-backup.php files from WordPress root directory
- Implement web server rules to block access to installer.php and installer-backup.php files
🔍 How to Verify
Check if Vulnerable:
Check if installer.php or installer-backup.php files exist in WordPress root directory: ls -la /path/to/wordpress/ | grep installer
Check Version:
grep 'Stable tag:' /path/to/wordpress/wp-content/plugins/duplicator/readme.txt
Verify Fix Applied:
Verify installer files are removed and plugin version is 1.3.0+: 1. Check files don't exist: ls -la /path/to/wordpress/ | grep installer 2. Check plugin version in WordPress admin or wp-content/plugins/duplicator/readme.txt
📡 Detection & Monitoring
Log Indicators:
- HTTP requests to installer.php or installer-backup.php
- Unusual POST requests with PHP code in parameters
- File creation/modification in wp-config.php
Network Indicators:
- Outbound connections to suspicious IPs after installer.php access
- Unusual traffic patterns from WordPress server
SIEM Query:
source="web_server" AND (url="*installer.php*" OR url="*installer-backup.php*")