Ishani-Shree/Vulnerable-Web-Application

GitHub: Ishani-Shree/Vulnerable-Web-Application

一个基于Node.js构建的故意存在漏洞的Web应用,为安全培训提供涵盖七种常见Web漏洞的交互式学习靶场。

Stars: 0 | Forks: 0

# 🚨 存在漏洞的 Web 应用程序 ### ⚠️ 仅供教育用途 ⚠️ 这是一个故意设计为不安全的 Web 应用程序,旨在用于安全培训、教育目的和渗透测试练习。它为开发者、学生和安全爱好者提供了一个安全可控的环境,以学习和识别常见的 Web 应用程序漏洞。 **请勿将此应用程序部署在公共服务器或生产环境中。** 对于本应用程序的任何滥用行为,创作者不承担任何责任。 ## 截图 ### 仪表板 ![仪表板](https://raw.githubusercontent.com/Ishani-Shree/Vulnerable-Web-Application/main/images/Dashboard.png) ### 漏洞工具 ![漏洞工具](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d8fbe8ddc3113016.png) ### XSS 演示 (GET) ![XSS GET](https://raw.githubusercontent.com/Ishani-Shree/Vulnerable-Web-Application/main/images/XSS1.png) ### XSS 演示 (POST) ![XSS POST](https://raw.githubusercontent.com/Ishani-Shree/Vulnerable-Web-Application/main/images/XSS2.png) ## ✨ 功能 该应用程序的后端使用 **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安全, 后端开发, 多模态安全, 安全培训, 数据可视化, 漏洞靶场, 蓝队分析, 防御检测