← 返回首页

实验 03:Web 漏洞挖掘与利用(综合实践项目 M3)

实验 03:Web 漏洞挖掘与利用(综合实践项目 M3)

本实验即综合实践项目 M3。对自己的靶场应用(M1 末)发现并利用预设漏洞,每类写概念验证(PoC) + 复现步骤。⚠️ 仅在自己派生的应用 / 127.0.0.1 / 授权环境——触及第三方系统是红线。 种子工程 app.py/orders?user= 用 f-string 拼接 SQL,是故意预留的注入点。

1. 实验目标

完成本实验后,在 docs/m3/report.md 自评:点亮 簇③·L2

2. 环境准备

3. 任务清单

任务 A:SQL 注入利用 + 概念验证

指向 /orders?user= 的字符串拼接注入:写概念验证(如 '; UPDATE orders --UNION SELECT sql,name FROM sqlite_master --),dump 全表 / 篡改 / 越权读他人订单;记录原理(「数据即程序」)+ 触发条件 + 影响。

任务 B:XSS(反射 / 存储)利用 + 概念验证

在自己的应用里构造一个可控回显 / 存储点,写概念验证(窃取 cookie / 演示会话劫持);说明反射型 vs 存储型区别。

任务 C:文件上传漏洞利用(Flask 栈真实链)

⚠️ 先校准利用目标:PHP 时代的「上传 webshell → 访问即 RCE」链在 Flask 栈下不存在——Flask 不解释任何上传文件,.php/图片马落盘后只是惰性数据。「绕过类型校验成功落盘」≠「漏洞可利用」。本任务要求验证可利用性(造成真实影响),不是「绕过防御」。

标准锚点(M1/M2 若已自建上传锚点,对照补齐回源端点):

@app.post("/profile/upload")
@login_required
def upload():
    f = request.files.get("file")
    if not f:
        return jsonify({"err": "no file"}), 400
    os.makedirs("uploads", exist_ok=True)
    dest = os.path.join("uploads", f.filename)      # 锚点①:文件名未校验(可路径穿越)
    f.save(dest)
    return jsonify({"ok": True, "saved": dest}), 201

@app.get("/uploads/<path:fn>")
@login_required
def serve_upload(fn):
    return send_from_directory("uploads", fn)       # 锚点②:按扩展名猜 MIME,同源回源

端到端验证以下至少一条(两条都做 → 深度档倾斜):

修复方向(写进报告,M4 落地):secure_filename() + 扩展名白名单 + 随机文件名落盘;回源强制 Content-Disposition: attachment + X-Content-Type-Options: nosniff;上传目录移出 Web 可达路径。

任务 D:CSRF 场景构造

构造一个跨站请求(改密 / 下单),写概念验证 + 说明 SameSite / Token 防御原理。

任务 E(AI 赋能渗透 · 可选,对应 m3_ai_compare

PentestGPT 或国产安全大模型跑一遍 M3 靶场,对比「AI 辅助 vs 人工」的效率与盲区;讨论自主挖掘智能体的能力边界。不替代人工概念验证,仅作对比,命中 / 误报给数字。

任务 F(选做 · 挑战):SSTI 模板注入——Flask 栈的真 RCE

学有余力时:在自己的应用里埋一个模板拼接锚点(如 /hello?name=render_template_string("Hello " + name) 渲染)。用 {{ 7*7 }} 验证「模板被解释」(返回 49 即成立)→ {{ config }} 读出 secret_key(闭环呼应 M0 R4)→ 说明经 __class__.__mro__ 沙箱逃逸可达 RCE 的原理(定性说明即可,不要求武器化载荷)。这是「数据即程序」元范式在模板层的复现,属四类之外的深度档加分项。

AI 助教适配注意事项

4. 交付与量规

docs/m3/ 下提交(在 milestone/m3 分支上完成、push、开 MR @ 助教,目标 = milestone/m2):

docs/m3/
├── sqli-poc.*       # 任务 A
├── xss-poc.*        # 任务 B
├── upload-poc.*     # 任务 C(路径穿越 / 同源存储 XSS,至少一链)
├── csrf-poc.*       # 任务 D
└── report.md        # 每类:原理 + 触发条件 + 影响 + 复现步骤 + (可选)AI 对比 + 自评

评分量规(绑定簇③·L2,满分 100;详细维度释义见 评价指南

维度 权重 优秀 [90,100] 合格 [60,90) 不合格 [0,60)
完成度 0.30 ≥4 类漏洞概念验证(SQLi/XSS/上传/CSRF 全覆盖)+ 复现步骤 + 分支 milestone/m3 + MR 主要类别(≥2 类)有概念验证 仅 1 类或无概念验证
深度 0.25 每类概念验证含漏洞原理 + 触发条件 + 影响评估;能编排多阶段 能复现单类漏洞 仅贴攻击载荷无分析
AI 双向 0.10 用 AI(PentestGPT/国产安全模型)辅助挖掘并对比命中 / 误报 仅人工 无 AI 内容(M3 对 AI 挖掘有期望,故权重 0.10)
安全严谨 0.25 仅对自己靶场;概念验证含边界声明;规避真实破坏 基本合规 触及第三方系统(红线)
自评 0.10 自评(簇③·L2)与作品一致 有自评 无自评

5. 能力自评

簇 × 级 能力描述 是否点亮 证据
③·L2 发现并利用 ≥4 类 Web 漏洞,每类写概念验证 + 复现 M3 的 sqli/xss/upload/csrf 概念验证 + report

下一单元 U4(M4 加固)将给这个被攻破的应用套上 WAF/IDS 纵深防御——这里的概念验证就是 M4 规则命中 / 误报复盘的「弹药」。