yenesyilmaz/sen2008-sqli-tool

GitHub: yenesyilmaz/sen2008-sqli-tool

一个集输入分析、SAST引擎和Mini WAF于一体的SQL注入检测与预防工具。

Stars: 0 | Forks: 0

# SEN 2008 - SQL注入检测与预防工具 小组成员: - Yusuf Enes Yilmaz - 2200515 - Yazan Ghais - 2473651 - Belal Baalbaki - 2362025 - Kerem Percin - 2484083 一个小型的Python工具包,在三层中检测和预防SQL注入(SQLi),因此它不依赖于单一技术(深度防御): - **输入分析器** (`core/`): 评估单个输入。它解码输入,匹配已知的攻击模式,计算危险关键词并保持一个小型白名单,以便正常输入不会被标记。 - **SAST 引擎** (`sast/`): 读取Python源代码并报告以不安全方式构建的查询(连接、`%`、f-strings、`.format()`)。 - **Mini WAF** (`waf/`): 一个HTTP服务器,检查每个请求,并在发现SQL注入尝试时返回403。 ## 要求 仅支持Python 3.8或更高版本。无外部库。 ## 如何运行 ``` python main.py # interactive analyzer (type 'demo' for test cases) python main.py demo # runs all three modules once python main.py sast samples/vulnerable_app.py # analyze one file python main.py sast samples/ # analyze a folder python main.py waf # start the WAF on 127.0.0.1:8080 python main.py waf-demo # start the WAF and send it sample requests python main.py web # start the browser-based web UI (http://127.0.0.1:8080) ``` `python main.py demo` 是最简单的方法;它一次性运行所有内容。 在Windows上,您也可以双击 `run_web.bat`(Web UI)、`run.bat`(交互式分析器)或 `run_demo.bat`(自动演示)来代替使用终端。 ## 项目结构 ``` sqli_tool/ main.py entry point / menu core/ console.py colored output that also works on Windows detector.py the detection engine payloads.py patterns, keywords, whitelist, scoring weights sast/ analyzer.py AST-based static analyzer waf/ firewall.py mini web application firewall web/ server.py browser-based web UI (same detection engine) samples/ vulnerable_app.py test file with deliberate SQLi bugs ``` ## 检测工作原理 1. **白名单:** 如果整个输入与安全模式(如 `O'Connor`)匹配,则允许。这是标准的误报案例:一个合法的值,其中包含一个撇号,一个简单的引号过滤器会错误地将其阻止。 2. **解码:** URL、双URL、HTML、十六进制和 `CHAR()` 解码。行内注释(`/* */`)被转换为空格,匹配MySQL的处理方式,因此 `UNION/**/SELECT` 变为 `UNION SELECT` 并仍然被捕获。 3. **模式:** 用于布尔型、UNION、基于错误、基于时间和堆叠查询注入的正则表达式签名。注释标记(`--`、`#`)只有在它紧跟引号之后时才被视为危险(例如 `admin'--`),因此 `C#` 不会被标记。 4. **关键词:** 危险SQL关键词的数量。 5. **评分:** 上述步骤给出0-100的评分(安全 / 低 / 中 / 高 / 严重)。超过25分被视为攻击。 ## 测试结果 我们使用30个案例集(15个真实攻击 + 15个安全输入)检查了分析器: | 指标 | 结果 | |--------|--------| | 检测到的攻击 | 15 / 15 | | 假阳性 | 0 / 15 | 攻击涵盖了布尔型、UNION、堆叠、基于时间、基于错误和编码(URL / 十六进制 / `CHAR()` / `/**/`)变体。在安全方面,如 `C#`、`O'Connor`、句子 `SELECT a book from the shelf` 和颜色代码 `0xFF00AA` 等棘手输入都正确允许。 ## 局限性 - 检测基于模式和评分,因此正常开发者的SQL可能会得到一个较低的评分而不会被阻止,并且一个全新的技巧仍然可能通过。 - SAST污染检查仅在单个函数内部工作,不能跨函数。 - 清理功能仅作为演示的回退;真正的修复始终是参数化查询。 ## 基于 此工具基于已知的SQLi工作:Halfond、Viegas和Orso(2006)的攻击分类,AMNESIA(Halfond和Orso,2005)的静态加运行时想法,SQLrand想法(Boyd和Keromytis,2004),以及OWASP指南(SQL注入预防作弊表单,ModSecurity核心规则集)。完整参考文献见报告。
标签:CSP, DOE合作, Golang, Python开发, SQL注入检测, SQL注入防御, TLS抓取, Web界面, XML 请求, 反取证, 安全专业人员, 安全产品, 安全产品工具, 安全产品工具工具, 安全合规, 安全合规工具, 安全合规工具工具, 安全响应, 安全响应工具, 安全响应工具工具, 安全培训, 安全培训工具, 安全培训工具工具, 安全开发, 安全开发工具, 安全开发工具工具, 安全意识, 安全意识工具, 安全意识工具工具, 安全服务, 安全服务工具, 安全服务工具工具, 安全架构, 安全标准, 安全标准工具, 安全标准工具工具, 安全测试, 安全测试工具工具, 安全漏洞, 安全漏洞扫描, 安全监控工具, 安全监控工具工具, 安全研究工具, 安全研究工具工具, 安全策略, 安全编程, 安全解决方案, 安全解决方案工具, 安全解决方案工具工具, 安全认证, 安全认证工具, 安全认证工具工具, 安全评估, 安全防护, 安全防护工具, 安全防护工具工具, 提示词设计, 攻击性安全, 教育项目, 数据管道, 网络代理, 软件安全, 软件工程, 输入分析, 迷你WAF, 逆向工具, 防御深度, 静态应用安全测试