CVE-2021-47870CVE-2021-47870是GetSimple CMS的My SMTP Contact插件中存在的一个存储型跨站脚本(Stored XSS)漏洞,该插件版本为1.1.2。漏洞源于插件虽然尝试使用htmlspecialchars()函数对用户输入进行安全过滤,但攻击者可以通过传递经过转义的十六进制字节来绕过这一防护机制。具体而言,当管理员访问包含恶意脚本的页面时,攻击者注入的任意客户端代码将在管理员的浏览器中执行。由于该插件常用于处理联系表单数据,攻击者可以利用此漏洞窃取管理员会话cookie、劫持管理员账户,甚至进一步对网站进行更深层次的入侵。此漏洞需要攻击者具备低权限用户身份,并且需要诱导管理员进行某种交互操作,如访问特定页面或点击链接。CVSS 3.1评分为5.4,属于中等严重程度,主要影响系统的机密性和完整性。
该漏洞的技术核心在于htmlspecialchars()函数的绕过。htmlspecialchars()通常会将特殊字符转换为HTML实体,如将<转换为<、将>转换为>等。然而,攻击者发现可以通过提交经过十六进制编码的恶意字符来绕过这一过滤机制。例如,使用\x3c绕过<符号的检测。插件在处理用户输入时未能正确识别和过滤这种编码后的恶意内容,导致攻击载荷被成功存储在服务器端。当其他用户(特别是管理员)访问包含恶意数据的页面时,这些编码后的字符会被浏览器解析执行,从而触发XSS攻击。攻击者可以利用此漏洞注入JavaScript代码,执行诸如窃取cookie、修改页面内容、重定向用户等恶意操作。由于是存储型XSS,恶意脚本会持久存在于服务器上,所有访问该页面的用户都会受到影响。