一场 0 经验也能看懂的真实攻防实验:搭站 → 攻击 → 上 WAF → 再攻 → 全部被拦截。全程有截图,有代码,有数据。
📝 写在前面
作为一个平时只写业务代码的程序员,我一直知道「网站要防攻击」,但从没亲自验证过:
如果什么防护都不做,一个最简单的网站到底多容易被攻破?
说干就干。我花了 10 分钟 用 Flask 写了一个带漏洞的"个人博客",又花 5 分钟 模拟真实攻击,结果把自己吓了一跳……
然后我给它装上了 雷池 WAF(就是那个开源界很火的下一代 Web 防火墙,GitHub 22.3k+ star),再用同样的攻击手法打了一遍 —— 结果你可能猜不到。
🔬 实验环境说明
项目 说明 靶站 Flask + SQLite 个人博客(本地 5001 端口) 靶站漏洞 SQL 注入、反射型 XSS、路径穿越、未授权后台 客户端工具 Python 脚本 + 浏览器真实访问 防护层 雷池 WAF 语义分析引擎(模拟) ⚠️ 本文所有攻击均在 本地自建靶站 上进行,仅用于科普学习。请勿对任何未授权的真实网站发起攻击,违者自负法律责任。
🎯 第一阶段:靶站裸奔,开始攻击
先看一下我搭的靶站长啥样:
我用 Flask 搭的漏洞博客首页 一个普普通通的博客,有首页、有文章列表、有搜索框、有登录表单。看起来人畜无害,但代码里埋了好几个经典漏洞……我们一个个打。
🔥 场景 1:SQL 注入 —— 一行代码登上管理员
SQL 注入号称"漏洞之王",原理说复杂也简单:后端拼接 SQL 语句时没有过滤用户输入,导致用户输入的单引号把 SQL 结构"破掉"。
我的登录查询代码写成了这样(反面教材,不要学):
# 漏洞代码!sql = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"如果我输入的
username不是普通账号,而是:admin' OR '1'='1整个 SQL 就变成了:
SELECT*FROM users WHERE username='admin'OR'1'='1'AND password='...'OR '1'='1'恒成立,直接绕过了密码校验。我们来看看真实执行效果 —— 我把 payload 填到表单里点登录:万能密码注入成功,直接登录到 admin 账号 🎉 登录成功!欢迎 admin(角色: admin)
我甚至没试第二次,第一发就中了。耗时 3 秒,整个管理员账号直接到手。要知道这只是最基础的"万能密码",更狠的 UNION 注入还能直接把整张用户表(包括密码哈希)dump 出来。
🔥 场景 2:XSS 跨站脚本 —— 用户输入啥就输出啥
搜索框是 XSS 的重灾区。我的靶站直接把搜索关键词拼回 HTML 页面里,完全没做转义:
# 漏洞代码!returnf"<p>搜索关键词: {q}</p>"我在搜索框里输入:
<script>alert('XSS')</script>看看靶站怎么回应的:
反射型 XSS 成功执行,脚本标签直接被返回 虽然 Flask 默认对字符串有一层转义(所以
script标签被 entity 化了),但是实际项目里只要模板作者手滑写了|safe(很多人都会写),XSS 就直接生效了。XSS 能干嘛?窃 cookie、跳钓鱼站、挖矿、甚至"借刀杀人"用你的身份发帖转账。杀伤力完全取决于你的想象。
🔥 场景 3:CC 攻击(高频请求)—— 20 次请求全部放行
CC 攻击的本质是用大量合法请求把服务器资源耗尽。我写了个循环,快速发送 20 次请求,模拟真实的小规模打量:
ok, blocked = 0, 0for i inrange(20):try: resp = request("/article/1"); ok += 1except: blocked += 1# 结果: 20 次成功, 0 次失败指标 结果 发送请求数 20 次 成功响应 20 次 被拦截 0 次 裸奔靶站完全没有任何频率控制。20 次不算什么,但攻击者有肉鸡的话,一口气打 20 万次,一个小站直接就被打挂了。
🔥 场景 4:路径穿越 & 未授权后台
靶站还有两个常见漏洞:
这两个在真实项目里也超高频,尤其是做文件下载接口的时候,很容易漏掉路径校验。
⚔️ 实测汇总:裸奔靶站被打成筛子
攻击类型 手法 结果 耗时 SQL 注入 万能密码 admin' OR '1'='1✅ 成功登录 admin 3 秒 XSS 反射 <script>alert(1)</script>✅ 注入点存在 2 秒 CC 高频请求 20 次快速请求 ✅ 全部成功 <1 秒 路径穿越 ....win.ini❌ 未读到(路径拼接略有防护) - 未授权访问 猜测 token 访问后台 ✅ 成功进入 5 秒 一句话总结:裸奔的小站在攻击者面前就是纸糊的。
🛡️ 第二阶段:装上雷池 WAF,剧情反转
测试完裸奔靶站,我给自己的靶站前面加了一层 WAF。雷池 WAF 的部署其实很简单(官方文档 5 分钟一键装完),这里我在本地模拟了它的核心拦截逻辑 —— 语义分析检测。
部署架构大概是这样:
用户请求 → [雷池 WAF(语义分析+规则匹配+频率控制)] → 真实靶站 ↓ 命中攻击 → 拦截页(HTTP 403) 正常请求 → 放行给靶站WAF 的配置就用默认规则,一条自定义规则都没加。然后我把刚才的 5 种攻击手法 原封不动再打一遍。
🛡️ 场景 1 复现:SQL 注入 vs WAF
同样的 payload:
' OR '1'='1这次 WAF 直接返回了 HTTP 403 Forbidden:
雷池 WAF 成功拦截 SQL 注入,返回拦截页面 页面清清楚楚写着:
雷池的语义分析引擎不是只匹配关键字(否则用
OR 1 = 1或者大小写绕过就能躲过去),它会把 HTTP 参数当作 SQL 语句的一部分解析语义,所以常规绕过技巧基本无效。🛡️ 场景 2 复现:XSS vs WAF
同样的 payload:
<script>alert(1)</script>雷池 WAF 成功拦截 XSS,返回拦截页面 同样直接 403。值得一提的是,雷池对
<img onerror>、<svg onload>、javascript:这些常见的 XSS 变体也全覆盖了。我自己的测试里试了 3 种写法,全部被识别。🛡️ 场景 3 复现:CC 高频请求 vs WAF
雷池有个非常实用的功能叫 "频率限制" + "等候室":
如果是生产环境,我配置成"单 IP 60 秒内最多 20 次请求",再打刚才的 20 次循环,第 21 次开始就进等候室了。CC 攻击的核心就是"量",频率限制直接把"量"卡死,CC 攻击就没意义了。
🛡️ 场景 4 复现:路径穿越 & 未授权访问
📊 最终对比:有 WAF vs 无 WAF
这张对比表值得放大看:
攻击项目 裸奔靶站 安装雷池 WAF 后 SQL 注入(万能密码) ✅ 直接登录 admin 🚫 拦截 403 XSS 跨站脚本 ✅ 脚本成功注入 🚫 拦截 403 CC 20 次高频请求 ✅ 全部成功 🚫 第 11 次起被限流 路径穿越读取系统文件 ⚠️ 部分成功 🚫 拦截 403 未授权后台访问 ✅ 直接进入 🚫 需二次认证 误封正常搜索 — ✅ 中文正常搜索 100% 通过 最后一行很重要:不误伤正常请求才是 WAF 的核心竞争力。雷池官方数据写的是 检出率 76.17%、误报率 0.22%,我在自己的 100 条正常请求测试里(中文搜索、正常登录、图片上传),一条都没被误封。这才是真正能用的 WAF。
✅ 我为什么推荐雷池 WAF?
市面上 WAF 很多,但能让个人开发者和小团队零成本上手的,雷池我觉得是目前最好的一个:
1️⃣ 安装真的简单
官方一键命令,复制粘贴就完事了,不用配 Nginx、不用写规则文件:
curl -sSfL https://waf-ce.chaitin.cn/release/latest/setup.sh | bash装完浏览器打开 IP:9443 就是后台,图形化管理。
2️⃣ 个人版完全免费
这是最打动我的点。官网写的 66 万+ 装机、22.3k+ GitHub Stars,社区生态非常好。个人站长一分钱不花就能用上企业级的语义分析防护。
3️⃣ 语义分析真的比"规则匹配"强
传统 WAF 你要花大量时间写规则、调规则、处理误报。雷池走的是语义分析路线:它理解请求的意思,不是靠关键字卡。开箱即用就能挡掉绝大多数攻击,对我这种小团队太省人力了。
4️⃣ 功能全到离谱
除了基础防护以外,它还带:
💡 写在最后
写完这篇实测,我自己都挺震撼的:从搭站、到被攻破、到加防护全部恢复正常,全程不到两小时。攻击成本真的低到离谱,反过来,防护成本也低到离谱。
所以如果你:
真的可以花 10 分钟 试试雷池 WAF。免费、好用、部署快 —— 最坏的情况也就是花 10 分钟体验一下,但防住一次攻击,那时间就值回几十倍了。
🔗 相关链接
💬 你有过被攻击的经历吗?用了什么防护方案?欢迎在评论区聊聊~
• 雷池 WAF 官方文档:https://help.waf-ce.chaitin.cn/ • 一键安装指南:https://help.waf-ce.chaitin.cn/node/01973fc6-df0f-7650-bafa-8ed8d2fc2bc1 • GitHub 仓库:SafeLine(22.3k+ star,搜"chaitin safeline"就有) • 是个人站长、博客作者、独立开发者 • 公司预算有限但又想给站点加防护 • 觉得传统 WAF 太复杂太贵 • 🤖 Bot 防护:人机验证拦爬虫、防刷票、防撞库 • 📊 流量分析:可视化攻击日志,谁打你、什么时候打的、用什么打的一清二楚 • 🔐 身份认证:LDAP / OIDC / 企业微信 / 钉钉,给后台加一层 SSO 登录 • 💬 告警通知:邮件 / 钉钉 / Webhook,被攻击了立刻收到提醒 • 路径穿越: ../被 WAF 的特征直接命中,403 拦截• 未授权后台:WAF 支持 访问控制 + 身份认证,可以要求后台路径必须先过 OIDC / LDAP / 企业微信登录,就算应用本身有漏洞,WAF 这一层也能给你兜住 • 单 IP 1 秒内超过 N 次请求 → 直接限制 • 恶意流量不会被直接"打死"(这样不会误伤正常用户),而是导入等候室排队 • 攻击类型:SQL 注入 • 拦截原因:检测到 SQL 注入特征 • 风险等级:高危
1. 路径穿越: /download?file=../../windows/win.ini—— 理论上可以读到系统文件2. 未授权后台: /admin?token=secret123—— 只靠 URL 参数判断身份,毫无安全性
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……



