开源|一款支持SQL注入、XSS、命令注入、SSRF、XXE、路径遍历、暴力破解、CC攻击、Bot爬虫的Web应用

admin 2025-12-25 02:42:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍开源WAF雷池SafeLine,主打轻量免费防护。该工具基于语义分析技术,能防御SQL注入、XSS、CC攻击及爬虫等多种Web威胁。文章展示了其微服务架构及Docker部署方式,并验证了在拦截暴力破解和路径遍历上的有效性。建议开发者在面临代码漏洞整改压力时,将其作为快速部署的防护盾以争取修复时间。 综合评分: 78 文章分类: 软文广告,产品介绍,安全工具,WEB安全,解决方案


cover_image

开源|一款支持SQL 注入、XSS、命令注入、SSRF、XXE、路径遍历、暴力破解、CC 攻击、Bot 爬虫的Web 应用

刘哥聊技术

天億网络安全

2025年12月24日 11:21 北京

前言

点击下方 “天億网络安全公众号关注, 设为星标。有用的话请点赞、收藏备查。

作者:刘哥聊技术

前言

作为负责企业 SRM 和 CRM 系统的开发负责人,担心的不是需求变更,也不是线上故障,而是项目收到来自某安-全中心的漏洞通报邮-件

“检测到越权访问”、“存在 SQL 注入风险”、“登录接口可被暴力破解”……这些词几乎成了固定模板。系统是五年前搭的,有些接口用的是拼接 SQL,有些权限校验靠前端“藏按钮”,当时赶上线,没人顾得上安-全。现在业务跑起来了,反而成了定时的bug。

每次整改都要拉测试、走流程、协调资源,严重时还得临时停服。客户那边催功能,安-全这边卡上线,夹在中间的滋味,只有经历过的人才懂。

有没有一种方式,不用立刻改代码,也能先挡住攻击,给我们争取修复时间?

我在gitee 上面找了一下相关需求的开源软件,发现了这款开源项目,可以满足需求,那就是 雷池 WAF(SafeLine)。我用的是社区版本,一些免费的功能。

介绍

雷池是一个开源 Web 应用防火墙,主打为开发者提供一道轻量、自托管、免费但专业的防护层。它不是替代代码安-全,而是在代码还没来得及完善前,先替你守住底线。一款足够简单、好用、强大的免费WAF。基于业界领先的语义分析检测技术,保护你的网站不受黑客攻击。

前端

管理界面比较简约,给用户耳目一新的感觉。打开仪表盘,你能一眼看到:

  • • 今天拦截了多少次攻击;
  • • 哪些 IP 在高频请求;
  • • 哪些 URL 被频繁试探。

实用的是攻击详情页,它会展示原始请求、攻击类型、拦截规则、时间戳,甚至能告诉你这是“SQL 注入”还是“路径遍历”。这些信息直接对应到你的业务接口,排查起来不用翻日志,效率翻倍。

后端

雷池的检测引擎不是简单匹配关键词,而是结合语义分析 + 行为识别。比如一个请求里没有 UNION SELECT,但参数结构异常,它仍可能判断为注入尝试。测试数据显示,雷池在平衡模式下对 Web 攻击的检出率超 71%,误报率仅 0.07%,远优于传统规则引擎。

它支持的防护类型也全:SQL 注入、XSS、命令注入、SSRF、XXE、路径遍历、暴力破解、CC 攻击、Bot 爬虫……甚至能防“后门文件”上传。

技术架构

雷池采用模块化微服务架构,核心组件包括:

  • • Tengine:流量入口,基于 Nginx 深度定制;
  • • Detector:检测引擎,负责分析攻击;
  • • MGT:管理后台,提供配置和日志;
  • • Chaos:人机验证与动态防护模块;
  • • Luigi/FVM:规则与策略管理。

各组件通过内部通信协同工作,但对用户透明。

部署方式

团队喜欢 Windows + Docker 开发环境,雷池完全兼容。提供 docker-compose.yml 和 .env 模板。

docker-compose.yml 文件

# 移除了顶层的 networks 配置,Docker会自动创建一个默认网络

services:
  postgres:
    container_name: safeline-pg
    restart: always
    image: ${IMAGE_PREFIX}/safeline-postgres${ARCH_SUFFIX}:15.2
    volumes:
      - ${SAFELINE_DIR}/resources/postgres:/var/lib/postgresql/data
      - /etc/localtime:/etc/localtime:ro
    environment:
      - POSTGRES_USER=safeline-ce
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?postgres password required}
    # 移除了 ipv4_address,Docker会自动分配
    command: [postgres, -c, max_connections=600]
    healthcheck:
      test: pg_isready -U safeline-ce -d safeline-ce

  mgt:
    container_name: safeline-mgt
    restart: always
    image: ${IMAGE_PREFIX}/safeline-mgt${REGION}${ARCH_SUFFIX}:${IMAGE_TAG:?image tag required}
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ${SAFELINE_DIR}/resources/mgt:/app/data
      - ${SAFELINE_DIR}/logs/nginx:/app/log/nginx:z
      - ${SAFELINE_DIR}/resources/sock:/app/sock
      - /var/run:/app/run
    ports:
      - ${MGT_PORT:-9443}:1443
    healthcheck:
      test: curl -k -f https://localhost:1443/api/open/health
    environment:
      # 关键修改:使用容器名 'safeline-pg' 代替静态IP
      - MGT_PG=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable
      - MGT_PROXY=${MGT_PROXY}
    depends_on:
      - postgres
      - fvm
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"

  detect:
    container_name: safeline-detector
    restart: always
    image: ${IMAGE_PREFIX}/safeline-detector${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
    volumes:
      - ${SAFELINE_DIR}/resources/detector:/resources/detector
      - ${SAFELINE_DIR}/logs/detector:/logs/detector
      - /etc/localtime:/etc/localtime:ro
    environment:
      - LOG_DIR=/logs/detector

  tengine:
    container_name: safeline-tengine
    restart: always
    image: ${IMAGE_PREFIX}/safeline-tengine${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/resolv.conf:/etc/resolv.conf:ro
      - ${SAFELINE_DIR}/resources/nginx:/etc/nginx
      - ${SAFELINE_DIR}/resources/detector:/resources/detector
      - ${SAFELINE_DIR}/resources/chaos:/resources/chaos
      - ${SAFELINE_DIR}/logs/nginx:/var/log/nginx:z
      - ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache
      - ${SAFELINE_DIR}/resources/sock:/app/sock
    environment:
      # 关键修改:使用容器名 'safeline-mgt' 和 'safeline-detector' 代替静态IP
      - TCD_MGT_API=https://safeline-mgt:1443/api/open/publish/server
      - TCD_SNSERVER=safeline-detector:8000
      - SNSERVER_ADDR=safeline-detector:8000
      - CHAOS_ADDR=safeline-chaos
    ulimits:
      nofile: 131072
    # tengine 保持 host 模式,因为它需要直接监听宿主机端口
    network_mode: host

  luigi:
    container_name: safeline-luigi
    restart: always
    image: ${IMAGE_PREFIX}/safeline-luigi${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
    environment:
      # 关键修改:使用容器名 'safeline-mgt' 和 'safeline-pg' 代替静态IP
      - MGT_IP=safeline-mgt
      - LUIGI_PG=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ${SAFELINE_DIR}/resources/luigi:/app/data
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"
    depends_on:
      - detect
      - mgt

  fvm:
    container_name: safeline-fvm
    restart: always
    image: ${IMAGE_PREFIX}/safeline-fvm${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
    volumes:
      - /etc/localtime:/etc/localtime:ro
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "5"

  chaos:
    container_name: safeline-chaos
    restart: always
    image: ${IMAGE_PREFIX}/safeline-chaos${REGION}${ARCH_SUFFIX}:${IMAGE_TAG}
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"
    environment:
      # 关键修改:使用容器名 'safeline-pg' 代替静态IP
      - DB_ADDR=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-pg/safeline-ce?sslmode=disable
    volumes:
      - ${SAFELINE_DIR}/resources/sock:/app/sock
      - ${SAFELINE_DIR}/resources/chaos:/app/chaos

.env 文件

# 配置用于数据持久化的 Volumes 数据卷目录(相对路径,相对于 docker-compose.yml 所在目录)
SAFELINE_DIR=./safeline-data

# 雷池的 POSTGRES 数据库密码(使用大小写字母 + 数字,无特殊字符)
POSTGRES_PASSWORD=cZyWWw3uJhswF393BG3N

# 雷池控制台端口号
MGT_PORT=9443

# 雷池更新通道(LTS)
RELEASE=-lts
CHANNEL=-lts

# 镜像区域后缀(中国大陆用户留空)
REGION=

# 镜像源(中国大陆推荐华为云)
IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline

# 雷池版本(LTS)
IMAGE_TAG=9.1.0-lts

# 自定义子网前缀(避免与其他项目冲突)
# SUBNET_PREFIX=172.25.0 &nbsp;<-- 注释或删除这一行

# 架构后缀(x86_64 留空,ARM 可填 -arm64)
ARCH_SUFFIX=

# 代理配置(通常为 0)
MGT_PROXY=0

只需修改几个参数(比如端口、密码、镜像源),执行:

# 一键部署
docker-compose up -d

# 查看账号
docker&nbsp;exec&nbsp;safeline-mgt resetadmin

显示成功后,拿到账号就可以去使用了。

[INFO] Initial username:admin
[INFO] Initial password:EnmMTmah
[INFO] Done

不到五分钟,整套服务就跑起来了。我在一台 2 核 4G 的云服务器上部署,资源占用极低,日常 CPU 不到 10%。

对国内用户,建议使用华为云镜像源,我已在配置中默认设置,可以直接使用,避免国际网络拉取失败。

开源协议

雷池社区版遵循 GPLv3 开源协议,全球已有超 18 万次安装,保护着上百万个网站。如果有更高级的需求,可以升级到商业版,有更多的防护。

即刻体验一波

上周,CRM 的登录接口又被扫出“暴力破解”风险。正常流程要加验证码、限流、IP 封禁,至少两天。当天在预发环境部署雷池,开启:

  • • CC 防护:单 IP 每分钟超过 20 次请求自动限流;
  • • 人机验证:可疑流量弹出验证码,真人用户无感。

第二天,攻击 IP 被自动拦截,日志里清清楚楚记录了每一次尝试。我把截图附在整改报告里,某安中心认可为“有效临时缓解措施”,系统照常上线。

还有一次,SRM 的文件下载接口被人传参 ?path=../../../etc/passwd,雷池直接识别为“路径遍历”,返回统一拦截页,后端服务毫发无损。

业务场景

让我意外的是“动态防护”功能。它能对网页中的 HTML 和 JS 代码进行动态混淆,每次访问的结构都不同,让爬虫无法稳定解析。

我们有个给供应商用的报价查询页,之前总被竞对爬走价格。启用动态防护后,对方的脚本抓到的全是乱码,三天后流量归零。

朋友的在线教育平台也用了类似方案:人机验证 + IP 黑名单 + 频率限制三重组合,恶意请求下降 98%,服务器负载从 90% 降到 20%。

结语

雷池没让我变成安-全专家,但它让我在面对漏洞通报时,从“慌”变成了“稳”

它不是万能药,但它是开发者值得信赖的协作者,不打扰正常业务,默默挡住恶意流量,给你争取修复代码的时间和空间。

如果你也在维护对安-全性要求高的企业系统,不妨试试它。至少下次收到红标邮-件时,你能多一份底气。

「天億网络安全」 知识星球一个网络安全学习的星球!星球主要分享、整理、原创编辑等网络安全相关学习资料,一个真实有料的网络安全学习平台,大家共同学习、共同进步!

知识星球定价:199元/年,(服务时间为一年,自加入日期顺延一年)。

如何加入:扫描下方二维码,扫码付费即可加入。

加入知识星球的同学,请加我微信,拉您进VIP交流群!

朋友都在看

▶️3保1评 | 分保、等保、关保、密评联系与区别

▶️等保2.0丨2021 必须了解的40个问题

▶️等保2.0 三级 拓扑图+设备套餐+详解

▶️等保2.0 二级 拓扑图+设备套餐+详解

▶️等保2.0 测评  二级系统和三级系统多长时间测评一次?

▶️等保2.0系列安全计算环境之数据完整性、保密性测评

▶️等保医疗|全国二级、三乙、三甲医院信息系统安全防护设备汇总

▶️国务院:不符合网络安全要求的政务信息系统未来将不给经费

▶️等级保护、风险评估和安全测评三者的区别

▶️分保、等保、关保、密码应用对比详解

▶️汇总 | 2020年发布的最重要网络安全标准(下载)

▶️2022版 | 全国网络安全常用标准(下载)

欢迎扫描关注【天億网络安全】公众号,及时了解更多网络安全知识

点分享

点点赞

点在看


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:天億网络安全 刘哥聊技术《开源|一款支持SQL 注入、XSS、命令注入、SSRF、XXE、路径遍历、暴力破解、CC 攻击、Bot 爬虫的Web 应用》

评论:0   参与:  0