wapiti-scanner/wapiti
GitHub: wapiti-scanner/wapiti
基于 Python 的黑盒 Web 漏洞扫描器,通过爬取目标页面并自动注入 payload 来检测常见 Web 安全漏洞。
Stars: 1794 | Forks: 264
# Wapiti - Web 漏洞扫描器
.. image:: https://img.shields.io/pypi/v/wapiti3?label=PyPI&logo=PyPI&logoColor=white&color=blue
:alt: PyPI 版本
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://img.shields.io/pypi/pyversions/wapiti3
:alt: 支持的 Python 版本
:target: https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md
.. image:: https://img.shields.io/github/license/wapiti-scanner/wapiti
:alt: License: GPL-2.0
:target: https://github.com/wapiti-scanner/wapiti/blob/master/LICENSE
.. image:: https://img.shields.io/pypi/dd/wapiti3
:alt: PyPi 每日下载量
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://codecov.io/gh/wapiti-scanner/wapiti/branch/master/graph/badge.svg?token=GFEIORAFB8
:target: https://codecov.io/gh/wapiti-scanner/wapiti
Wapiti 是一个用 Python 编写的 Web 漏洞扫描器。
http://wapiti-scanner.github.io/
# 环境要求
为了正常工作,Wapiti 需要 Python 3.12、3.13 或 3.14。
如果您使用 setup.py 脚本或 `pip install wapiti3`,所有 Python 模块依赖项将被自动安装。
有关安装的更多详细信息,请参见 `INSTALL.md `__。
可以通过使用 `WSL `__ 在 Windows 上运行 Wapiti。
# 工作原理
Wapiti 作为一个“黑盒”漏洞扫描器运行,这意味着它不会
研究 Web 应用程序的源代码,而是像 fuzzer 一样工作,
扫描已部署 Web 应用程序的页面,提取链接和
表单,并攻击这些脚本,发送 payload 并寻找错误
消息、特殊字符串或异常行为。
# 常规功能
+ 生成多种格式的漏洞报告 (HTML, XML, JSON, TXT, CSV, Markdown)。
+ 可以暂停和恢复扫描或攻击(使用 sqlite3 数据库的会话机制)。
+ 可以在终端中为您提供颜色以突出显示漏洞。
+ 不同级别的详细程度。
+ 快速简便地激活/停用攻击模块的方法。
+ 添加 payload 就像在文本文件中添加一行一样简单。
+ 可配置执行 HTTP 请求的并发任务数。
# 浏览功能
+ 支持 HTTP、HTTPS 和 SOCKS5 代理。
+ 目标上的 HTTP 认证 (Basic, Digest, NTLM)
+ 通过填写登录表单进行认证。
+ 能够限制扫描的范围(域名、文件夹、页面、URL)。
+ 自动移除 URL 中的一个或多个参数。
+ 防止扫描无限循环的多重保护措施(例如,参数值的限制)。
+ 可以设置首先探索的 URL(即使不在范围内)。
+ 可以排除扫描和攻击中的某些 URL(例如:登出 URL)。
+ 从您的 Chrome 或 Firefox 浏览器导入 cookies,或使用 `wapiti-getcookie` 工具。
+ 可以激活/停用 SSL 证书验证。
+ 尝试从 javascript 中提取 URL(非常基础的 JS 解释器)。
+ 支持 HTML5(理解最新的 HTML 标签)。
+ 用于控制爬虫行为和限制的几个选项。
+ 在攻击期间跳过某些参数名称。
+ 为扫描过程设置最长运行时间。
+ 添加一些自定义 HTTP 请求头或设置自定义 User-Agent。
+ 使用 Firefox 无头浏览器进行抓取
+ 加载您自己的 Python 代码以处理复杂的身份验证情况(参见 `--form-script` 选项)
+ 添加自定义 URL 或路径以更新 Wappalyzer 数据库
+ 在给定 OpenAPI (swagger) 文件的情况下扫描 REST API
# 支持的攻击
+ SQL 注入(基于错误、基于布尔、基于时间)和 XPath 注入
+ LDAP 注入(基于错误和基于布尔)
+ 反射型和持久型跨站脚本攻击 (XSS)
+ 文件泄露检测(本地和远程 include、require、fopen、readfile...)
+ 命令执行检测(eval()、system()、passtru()...)
+ XXE (Xml eXternal Entity) 注入
+ CRLF 注入
+ 搜索服务器上潜在的危险文件(感谢 Nikto db)
+ 绕过薄弱的 htaccess 配置
+ 搜索服务器上脚本的副本(备份)
+ Shellshock
+ 目录和文件枚举(类似 DirBuster)
+ 服务端请求伪造(通过使用外部的 Wapiti 网站实现)
+ 开放重定向
+ 检测不常见的 HTTP 方法(如 PUT)
+ 基础的 CSP 评估器
+ 暴力破解登录表单(使用字典列表)
+ 检查 HTTP 安全头
+ 检查 cookie 安全标志(secure 和 httponly 标志)
+ 跨站请求伪造 (CSRF) 基础检测
+ 使用 Wappalyzer 数据库对 Web 应用程序进行指纹识别,提供相关的 CVE 信息
+ 枚举 Wordpress, Drupal, Joomla, Magento, SPIP, Typo3 等的 CMS 模块
+ 子域名接管检测
+ Log4Shell (CVE-2021-44228) 检测
+ Spring4Shell (CVE-2022-22965) 检测
+ 检查 https 重定向
+ 检查文件上传漏洞
+ 检测网络设备
+ 同样支持在 JSON body 中注入 payload
Wapiti 支持使用 GET 和 POST HTTP 方法进行攻击。
它还支持 multipart,并可以在文件名(上传)中注入 payload。
当发现异常时显示警告(例如 500 错误和超时)。
区分持久型和反射型 XSS 漏洞。
# 模块名称
上述攻击与以下模块名称相关联:
+ backup (搜索 Web 服务器上脚本和存档的副本)
+ brute_login_form (使用字典列表暴力破解登录表单)
+ buster (类似 DirBuster 的模块)
+ cms (扫描以检测 CMS 及其版本)
+ cookieflags (检查 Secure 和 HttpOnly 标志)
+ crlf (HTTP 头中的 CR-LF 注入)
+ csp (检测缺乏 CSP 或 CSP 配置薄弱)
+ csrf (检测未受 CSRF 保护或使用弱反 CSRF token 的表单)
+ exec (代码执行或命令注入)
+ file (路径遍历、文件包含等)
+ htaccess (配置错误的 htaccess 限制)
+ htp (使用 HashThePlanet 数据库识别 Web 技术)
+ http_headers (检查 HTTP 安全头)
+ https_redirect (检查 https 重定向)
+ ldap (基于错误和基于布尔的 LDAP 注入检测)
+ log4shell (检测存在 CVE-2021-44228 漏洞的网站)
+ methods (寻找不常见的可用 HTTP 方法,如 PUT)
+ network_device (寻找常见文件以检测网络设备)
+ nikto (通过测试 URL 存在性并检查响应来查找已知漏洞)
+ permanentxss (在 xss 模块执行后重新扫描整个目标,寻找先前植入的 payload)
+ printer (检测网络打印机,检索型号和固件信息)
+ redirect (开放重定向)
+ shellshock (测试 Shellshock 攻击,参见 `Wikipedia `__)
+ spring4shell (检测存在 CVE-2020-5398 漏洞的网站)
+ sql (基于错误和基于布尔的 SQL 注入检测)
+ ssl (评估 SSL/TLS 证书配置的安全性,需要 `sslscan `__)
+ ssrf (服务端请求伪造)
+ takeover (子域名接管)
+ timesql (使用基于时间的方法检测 SQL 注入漏洞)
+ upload (文件上传漏洞)
+ wapp (不是攻击模块,检索目标上使用的带有版本和类别的 Web 技术,查找对应的 CVE)
+ wp_enum (枚举 Wordpress 网站上的插件和主题)
+ xss (XSS 注入模块)
+ xxe (XML 外部实体攻击)
模块名称可以使用 "-m" 或 "--module" 选项以逗号分隔的列表形式给出。
# 如何获得最佳结果
为了发现更多漏洞(因为某些攻击是基于错误的),您可以修改
您的 Web 服务器配置。
例如,您可以在您的 PHP 配置中设置以下值:
.. code-block::
```
safe_mode = Off
display_errors = On (recommended)
magic_quotes_gpc = Off
allow_url_fopen = On
mysql.trace_mode = On
```
# 从哪里获取帮助
在命令提示符下,只需键入以下命令即可获取基本用法:
```
wapiti -h
```
您也可以查看手册页 (wapiti.1 或 wapiti.1.html) 以获取有关每个选项的更多详细信息。
我们还有一个更详尽的官方 wiki:https://github.com/wapiti-scanner/wapiti/wiki
如果您有其他问题,请首先查看 `FAQ `__
如果您发现了一个 bug,请提交一个 issue:https://github.com/wapiti-scanner/wapiti/issues
# 如何帮助 Wapiti 项目
您可以:
# 许可
Wapiti 是在 GNU 通用公共许可证第二版 (the GPL) 下发布的。
源代码可在 `Github `__ 上获取。
由 Nicolas SURRIBAS 创建。
# 免责声明
Wapiti 是一款网络安全软件。它对提供的目标执行安全评估,这可能导致目标出现故障和崩溃,以及潜在的数据丢失。
在未事先获得目标所有者同意的情况下使用 Wapiti 攻击目标是非法的。最终用户有责任遵守所有适用的地方法律。
Wapiti 项目的开发者和相关人员不承担任何责任,也不对因滥用或使用本程序造成的任何损害负责。
标签:DOE合作, Fuzzer, Python3, SQLite, SQL注入检测, Wapiti, Web安全, Web漏洞扫描器, XSS检测, 安全扫描, 密码管理, 开源安全工具, 插件系统, 时序注入, 网络安全, 蓝队分析, 逆向工程平台, 隐私保护, 黑盒测试