本仓库包含针对 WordPress 插件“PPOM for WooCommerce”(影响版本至 33.0.15 及以下)中未认证基于时间的盲 SQL 注入漏洞的概念验证(PoC)。
该漏洞的存在是因为插件在将用户提供的输入用于 SQL 查询之前未能正确清理该输入。具体来说,classes/plugin.class.php 中的 get_product_meta() 函数直接将 $meta_id 参数拼接进 SQL 查询,而未使用预处理语句。
易受攻击的代码(classes/plugin.class.php):
function get_product_meta( $meta_id ) {
// ...
global $wpdb;
$qry = 'SELECT * FROM ' . $wpdb->prefix . PPOM_TABLE_META . " WHERE productmeta_id = $meta_id";
$res = $wpdb->get_row( $qry );
return $res;
}
未认证的攻击者可以通过构造恶意载荷并将其注入到向购物车添加商品时的 ppom[fields][id] 参数中来利用此漏洞。这允许攻击者执行任意 SQL 命令,例如时间延迟函数(SLEEP()),从而能够确认漏洞的存在,并可能逐字符地从数据库中窃取敏感信息。
当插件设置中的 “启用旧版价格计算” 选项处于激活状态时,该漏洞会被触发,因为这会在购物车操作期间强制应用程序使用易受攻击的代码路径。
└── cve-2025-11391/
├── exploit.py # Python 概念验证脚本。
└── woocommerce-product-addon/ # 易受攻击的插件版本(v33.0.15)。
requests 库(pip install requests)。/htdocs/wp4hacking/)。woocommerce-product-addon/ 目录中的 .zip 文件,安装本仓库提供的易受攻击版本的 woocommerce-product-addon(v33.0.15)。sql_injection)。提供的 exploit.py 脚本通过注入 SLEEP() 命令并测量服务器的响应时间来确认漏洞。
打开 exploit.py 文件并配置以下变量:
PRODUCT_URL:您创建的易受攻击产品页面的完整 URL。add_to_cart_data['add-to-cart']:您的易受攻击产品的 ID。在终端中运行脚本:
python exploit.py
如果目标存在漏洞,服务器响应所需的时间将超过 SLEEP() 的持续时间,导致脚本超时。脚本会将此超时正确解释为利用成功。
正在尝试 SQL 注入 PoC(一步法)...
请确保“启用旧版价格计算”已激活。
[*] 正在发送 SQL 注入载荷...
请求在 10.00 秒后超时。
[+] 成功!发生“读取超时”是因为 SLEEP(7) 载荷已执行。
该网站存在基于时间的盲 SQL 注入漏洞。
$wpdb->prepare() 来正确清理输入,从而防止 SQL 注入。已修补的代码(classes/plugin.class.php):
$table = $wpdb->prefix . PPOM_TABLE_META;
$res = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table WHERE productmeta_id = %d", $meta_id ) );
此 PoC 仅用于教育和研究目的。请勿将其用于任何您不拥有或未经明确许可进行测试的系统。作者不对因使用此脚本而造成的任何滥用或损害负责。