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检测, 安全扫描, 密码管理, 开源安全工具, 插件系统, 时序注入, 网络安全, 蓝队分析, 逆向工程平台, 隐私保护, 黑盒测试