|
[backcolor=rgba(255, 255, 255, 0.9)]尊敬的宝塔官方团队: [backcolor=rgba(255, 255, 255, 0.9)]您好!我使用的是宝塔面板 + Nginx 防火墙插件(btwaf),站点基于 WordPress + Elementor Pro 表单。发现一个垃圾留言绕过 WAF 自定义规则的漏洞,恳请官方支持修复。 [backcolor=rgba(255, 255, 255, 0.9)]问题现象:
垃圾爬虫通过 JSON 格式向 Elementor Pro 表单端点(/wp-admin/admin-ajax.php,action=elementor_pro_forms_send_form)提交表单,成功绕过 WAF 自定义拦截规则,直达源站(最终由 WordPress 端 Maspik 插件兜底拦截)。 [backcolor=rgba(255, 255, 255, 0.9)]技术原因:
WAF 自定义规则中的 body_param 条件仅在 Content-Type: multipart/form-data 时执行(ParamPost 遇到 multipart 才转 ParamPostBody),post_param 仅处理 urlencoded。当 Content-Type: application/json 时,body 完全不在 WAF 自定义规则的检测范围内,导致: - body_param(正则锚定 form_fields[message] 检测 http/www/裸域名/邮箱/垃圾关键词)对 JSON 请求不执行;
- 爬虫提交体为 {"fields:{name:...,email:...,message:...含https链接/SEO关键词..."}},字段名无 form_fields 前缀,即使有检测也不匹配。
[backcolor=rgba(255, 255, 255, 0.9)]期望支持:
恳请官方在 Nginx 防火墙自定义规则中增加对 JSON body 的检测支持,例如: - body_param 条件对 application/json 类型的 POST 请求同样生效(匹配原始 JSON body);
- 或新增 json_param / body_json 条件类型,支持对 JSON 解析后的字段做正则匹配;
- 至少让自定义规则能够检测 JSON 提交中的垃圾特征(链接、域名、关键词等)。
[backcolor=rgba(255, 255, 255, 0.9)]补充:Elementor Pro 新版(atomic forms)及爬虫模拟的 JSON 提交正逐渐增多,该支持对使用 Elementor 表单的宝塔用户有普遍价值。
|