yuvrajmehendiyan12/vulnscan-project
GitHub: yuvrajmehendiyan12/vulnscan-project
一个面向初学者的 Web 安全教学项目,包含故意植入漏洞的 Flask 应用和配套的 Python 漏洞扫描器。
Stars: 0 | Forks: 0
# VulnShop + Scanner
一个面向初学者的双向网络安全项目:
1. **`vulnerable_app/`** — 一个带有 SQL 注入漏洞的微型 Flask “商店”应用,
并且故意植入了两个 XSS 漏洞。
2. **`scanner/`** — 一个 Python 脚本,用于抓取目标站点、查找表单
和参数,并自动检测这些漏洞类型。
构建双方组件是本项目的核心:利用你亲手植入的漏洞,能让你切实掌握
它们*为何*会被利用;而编写检测器则迫使你将“我能看到漏洞”转化
为“我能通过编程方式证明漏洞的存在”。
## ⚠️ 范围与道德规范
- **仅在 `localhost`** 上运行,针对你自己的实例。
- 绝不要将扫描器指向你不拥有或未获得明确书面测试授权的网站。在大多数
司法管辖区,未经授权扫描第三方网站是非法的,即使使用的是像
`alert('xss')` 这样“无害”的 payload。
- 该漏洞应用中没有任何真正的机密数据,但请把它当作有机密数据来对待——
这是为以后培养的良好习惯。
## 1. 设置并运行漏洞应用
```
cd vulnerable_app
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python app.py
```
这会在首次运行时创建 `vulnerable.db` (SQLite),并在
**http://127.0.0.1:5000** 启动应用。
### 首先手动尝试漏洞
**SQL 注入 — 登录绕过** (`/login`)
用户名:`admin' --` — 密码随意。查询语句会变为:
```
SELECT * FROM users WHERE username = 'admin' --' AND password = '...'
```
`--` 之后的所有内容都会被注释掉,因此密码检查永远不会执行。
**SQL 注入 — 数据提取** (`/search`)
搜索:
```
' UNION SELECT id, username, password FROM users--
```
products 表只有 3 列,因此使用具有 3 列的 UNION SELECT 可以让你从*不同*
的表中提取数据行——包括 `users` 表中的密码——并将它们显示在同一个结果
页面中。
**存储型 XSS** (`/comments`)
发布一条包含以下内容的评论:
```
```
重新加载页面——弹窗会针对*任何*访问 `/comments` 的人触发,
而不仅仅是发布评论的人。这就是存储型 XSS 比反射型更危险的
原因:它不需要诱骗受害者点击精心构造的链接。
**反射型 XSS** (`/profile`)
访问:
```
http://127.0.0.1:5000/profile?name=
```
该脚本仅对打开此确切 URL 的人有效——对于能够诱使受害者点击恶意链接
(钓鱼邮件、缩短的 URL 等)的攻击者来说非常有用。
## 2. 设置并运行扫描器
在第二个终端中,保持应用继续运行:
```
cd scanner
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python scanner.py http://127.0.0.1:5000
```
### 它的实际工作原理
1. **抓取**站点(广度优先,仅限同一主机)并收集每个
`