Ishani-Shree/Vulnerable-Web-Application
GitHub: Ishani-Shree/Vulnerable-Web-Application
一个基于Node.js构建的故意存在漏洞的Web应用,为安全培训提供涵盖七种常见Web漏洞的交互式学习靶场。
Stars: 0 | Forks: 0
# 🚨 存在漏洞的 Web 应用程序
### ⚠️ 仅供教育用途 ⚠️
这是一个故意设计为不安全的 Web 应用程序,旨在用于安全培训、教育目的和渗透测试练习。它为开发者、学生和安全爱好者提供了一个安全可控的环境,以学习和识别常见的 Web 应用程序漏洞。
**请勿将此应用程序部署在公共服务器或生产环境中。** 对于本应用程序的任何滥用行为,创作者不承担任何责任。
## 截图
### 仪表板

### 漏洞工具

### XSS 演示 (GET)

### XSS 演示 (POST)

## ✨ 功能
该应用程序的后端使用 **Node.js**、**Express** 和 **MySQL** 构建,前端提供静态的 HTML、CSS 和 JavaScript。它模拟了一个带有登录系统和若干功能的简单 Web 应用程序,每个功能都包含一个特定的、可利用的安全缺陷。
* **用户身份验证**:一个用于访问应用程序受保护部分的基础登录系统。
* **交互式漏洞页面**:每个漏洞都有自己专门的页面,包含描述、利用说明和用于测试该缺陷的功能组件。
* **动态内容**:应用程序使用服务器端逻辑将内容(如账户余额)动态注入到 HTML 页面中。
## 🔐 已实现的漏洞
该应用程序包含以下故意实现的漏洞,供您探索和利用:
### 1. **OS Command Injection**
* **描述**:“Ping 工具”允许用户通过将任意系统命令注入到 ping 实用程序中,从而在服务器上执行它们。
* **位置**:`/protected/command-injection.html`
* **⚠️ 注意**:此漏洞仅适用于 **Linux/macOS** 系统。由于 shell 命令语法的差异,它在 Windows 上**无法**运行。
### 2. **SQL Injection (SQLi)**
* **描述**:登录表单存在 SQL injection 漏洞,允许攻击者绕过身份验证或直接操纵数据库查询。该应用程序将用户输入直接拼接到 SQL 查询中。
* **位置**:`/protected/sql-injection.html`
### 3. **Cross-Site Scripting (XSS) - Reflected (GET)**
* **描述**:搜索功能存在 Reflected XSS 漏洞。可以将恶意脚本注入到 URL 中,当受害者访问该链接时,脚本就会在其浏览器中执行。
* **位置**:`/protected/xss-get.html`
### 4. **Cross-Site Scripting (XSS) - Reflected (POST)**
* **描述**:评论提交表单通过 POST 请求存在 Reflected XSS 漏洞。服务器将表单中未经清理的用户输入直接包含在响应页面中。
* **位置**:`/protected/xss-post.html`
### 5. **Cross-Site Request Forgery (CSRF) - GET**
* **描述**:一个敏感操作(转账)是通过简单的 GET 请求执行的。攻击者可以构造一个恶意链接或图片标签,当已登录的用户查看它时,会在未经其同意的情况下执行交易。
* **位置**:`/protected/csrf-get.html`
### 6. **Cross-Site Request Forgery (CSRF) - POST**
* **描述**:银行转账表单通过 POST 请求执行状态更改操作,且没有任何 anti-CSRF token,使其容易受到来自恶意外部网站的利用。
* **位置**:`/protected/csrf-post.html`
### 7. **Server-Side Request Forgery (SSRF)**
* **描述**:“URL 获取工具”允许攻击者使服务器向内部网络资源、外部系统或本地文件发送请求,从而可能绕过防火墙并暴露敏感信息。
* **位置**:`/protected/ssrf.html`
## 🚀 入门指南
按照以下说明在您的本地计算机上运行该应用程序,以进行测试和教育目的。
### 前置条件
* **Node.js**:确保您已安装 Node.js(版本 18.0.0 或更高)。
* **MySQL**:您需要一个正在运行的 MySQL 服务器。
### 安装与设置
1. **克隆代码库**
git clone https://github.com/Ishani-Shree/Vulnerable-Web-Application.git
cd vulnerable-website
2. **安装依赖**
导航到 `server` 目录并安装所需的 npm 包。
cd server
npm install
3. **设置数据库**
**a.** 连接到您的 MySQL 服务器。
**b.** 为应用程序创建一个新数据库。
` sql CREATE DATABASE vulnerable_app; `
**c.** 使用新数据库。
` sql USE vulnerable_app; `
**d.** 创建 `users` 表。
` sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL ); `
**e.** 插入一个用于测试的默认用户。
` sql INSERT INTO users (username, password) VALUES ('admin', 'admin123'); `
4. **配置数据库凭证**
打开 `server/server.js` 文件,并使用您的 MySQL 用户名和密码更新 `db` 连接对象。
// vulnerable-website/server/server.js
const db = mysql.createConnection({
host: 'localhost',
user: 'YOUR_MYSQL_USERNAME', // <-- Add your username here
password: 'YOUR_MYSQL_PASSWORD', // <-- Add your password here
database: 'vulnerable_app'
});
5. **运行服务器**
从 `server` 目录启动应用程序。
node server.js
服务器将在 `http://localhost:3000` 上运行。
## 📝 使用说明
1. 打开您的 Web 浏览器并导航到 `http://localhost:3000`。
2. 使用默认凭证登录:
* **用户名**:`admin`
* **密码**:`admin123`
3. 登录后,您将被引导至主页,您可以从中导航并探索每个不同的漏洞。
标签:CISA项目, GNU通用公共许可证, MITM代理, Node.js, Web安全, 后端开发, 多模态安全, 安全培训, 数据可视化, 漏洞靶场, 蓝队分析, 防御检测