Wapiti - 自行检查站点是否存在漏洞

Wapiti - 自行检查站点是否存在漏洞
在最后 文章 我们谈过的 Nemesida WAF 免费 - 一款用于保护网站和 API 免受黑客攻击的免费工具,在本工具中,我们决定回顾一款流行的漏洞扫描程序 麋鹿.

扫描网站是否存在漏洞是一项必要措施,结合对源代码的分析,您可以评估其针对危害威胁的安全级别。 您可以使用专门的工具扫描网络资源。

Nikto、W3af(用 Python 2.7 编写,不再受支持)或 Arachni(自 XNUMX 月份起不再受支持)是免费部分中最受欢迎的解决方案。 当然,还有其他的,例如马鹿,我们决定重点关注它。

Wapiti 可处理以下类型的漏洞:

  • 文件扩展(本地和远程、fopen、readfile);
  • 注入(PHP / JSP / ASP / SQL注入和XPath注入);
  • XSS(跨站脚本)(反射性和持久性);
  • 命令的检测和执行(eval()、system()、passtru());
  • CRLF 注入(HTTP 响应分割、会话固定);
  • XXE(XML外部实体)嵌入;
  • SSRF(服务器端请求伪造);
  • 使用已知的潜在危险文件(感谢 Nikto 数据库);
  • 可以绕过的弱 .htaccess 配置;
  • 存在泄露机密信息的备份文件(泄露源代码);
  • 炮弹休克;
  • 打开重定向;
  • 可解析 (PUT) 的非标准 HTTP 方法。

特点:

  • HTTP、HTTPS 和 SOCKS5 代理支持;
  • 使用多种方法进行身份验证:Basic、Digest、Kerberos 或 NTLM;
  • 限制扫描区域(域、文件夹、页面、URL)的能力;
  • 自动删除 URL 中的参数之一;
  • 针对无限扫描循环的多重预防措施(例如:ifor、参数的限制值);
  • 能够设置检查 URL 的优先级(即使它们不在扫描区域中);
  • 能够从扫描和攻击中排除某些 URL(例如:URL 注销);
  • 导入 cookie(使用 wapiti-getcookie 工具获取它们);
  • 能够激活/停用 SSL 证书验证;
  • 从 JavaScript 中提取 URL 的能力(一个非常简单的 JS 解释器);
  • 与 HTML5 交互;
  • 用于管理爬虫行为和限制的多个选项;
  • 设置扫描过程的最长时间;
  • 添加一些自定义 HTTP 标头或设置自定义用户代理。

附加功能:

  • 创建各种格式的漏洞报告(HTML、XML、JSON、TXT);
  • 暂停和恢复扫描或攻击(使用 SQLite3 数据库的会话机制);
  • 终端背光突出显示漏洞;
  • 不同级别的日志记录;
  • 一种激活/停用攻击模块的快速简便的方法。

安装

当前版本的 Wapiti 可以通过两种方式安装:

  • 从官方下载源码 сайта 并运行安装脚本,之前已经安装了Python3;
  • 使用 pip3 install wapiti3 命令。

之后,马鹿就可以出发了。

使用该工具

为了展示Wapiti的工作,我们将使用专门准备的站点sites.vulns.pentestit.ru(内部资源),其中包含各种漏洞(注入、XSS、LFI/RFI)和Web应用程序的其他缺点。

该信息仅供参考。 不要违法!

启动扫描仪的基本命令:

# wapiti -u <target> <options>

同时,还有大量启动选项的相当详细的帮助,例如:

- 范围 - 应用领域
如果您与爬网 URL 一起指定范围参数,则可以通过指定单个页面和可在网站上找到的所有页面来调整网站的爬网区域。

-s и -x — 添加或删除特定 URL 的选项。 当您需要在爬网过程中添加或删除特定 URL 时,这些选项非常有用。

- 跳过 — 使用该键指定的参数将被扫描,但不会被攻击。 如果在扫描期间最好排除任何危险参数,则非常有用。

--验证-ssl — 启用或禁用证书验证。
Wapiti 扫描仪是模块化的。 但是,要启动特定模块(包括扫描仪运行时自动连接的模块),您需要使用 -m 开关并列出所需的模块,并用逗号分隔。 如果不使用该密钥,则所有模块将默认工作。 在最简单的版本中,它看起来像这样:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

这个使用示例意味着我们在扫描目标时只会使用SQL、XSS和XXE模块。 此外,您可以根据所需的方法过滤模块的操作。 例如 -m “xss:获取,blindsql:发布,xxe:发布”。 在这种情况下,模块 XSS 将适用于使用 GET 方法发送的请求,并且模块 数据库数据库 - POST 请求等顺便说一句,如果列表中包含的某些模块在扫描过程中不需要或需要很长时间,那么通过按 Ctrl+C 组合,您可以通过在交互菜单中选择相应的项目来跳过使用当前模块。

Wapiti 支持使用密钥通过代理传递请求 -p 并通过参数对目标站点进行身份验证 -a。 您还可以指定身份验证类型: 基本的, 消化, Kerberos的 и NTLM。 最后两个可能需要安装附加模块。 此外,您可以在请求中插入任何标头(包括任意标头) 用户代理) 以及更多。

要使用身份验证,您可以使用该工具 马鹿 getcookie。 在它的帮助下我们形成 饼干,Wapiti 在扫描时将使用它。 编队 饼干 使用命令完成:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

在交互工作时,我们回答问题并指出必要的信息,例如登录名、密码等:

Wapiti - 自行检查站点是否存在漏洞

输出是 JSON 格式的文件。 另一种选择是通过参数添加所有必要的信息 -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

结果将是类似的:

Wapiti - 自行检查站点是否存在漏洞

在考虑扫描仪的主要功能时,在我们的案例中测试 Web 应用程序的最终请求是:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

其中其他参数:

-f и -o ——报告保存的格式和路径;

-m — 不建议连接所有模块,因为会影响测试时间和报告大小;

-颜色 — 根据 Wapiti 本身的说法,根据其严重程度突出显示已发现的漏洞;

-c - 使用文件 饼干,使用生成 马鹿 getcookie;

- 范围 — 选择攻击目标。 选择一个选项 从基本 URL 开始,每个 URL 都会被抓取和攻击。 基本 URL 必须有正斜杠(无文件名);

--刷新会话 — 允许重复扫描,其中先前的结果将不被考虑;

-A - 自己的 用户代理;

-p — 代理服务器地址(如有必要)。

关于报告的一些内容

扫描结果以 HTML 页面格式详细报告所有发现的漏洞,清晰易读。 该报告将指出发现的漏洞的类别和数量、它们的描述、请求、命令 卷曲 以及如何关闭它们的提示。 为了便于导航,将在类别名称中添加一个链接,单击该链接即可转到该链接:

Wapiti - 自行检查站点是否存在漏洞

该报告的一个显着缺点是缺乏网络应用程序地图,如果没有网络应用程序地图,就不清楚是否所有地址和参数都已被分析。 也存在误报的可能性。 在我们的例子中,报告包括“备份文件”和“潜在危险文件”。 它们的数量与实际情况不符,因为服务器上没有这样的文件:

Wapiti - 自行检查站点是否存在漏洞

也许随着时间的推移,工作不正确的模块将会得到修复。 该报告的另一个缺点是缺乏对发现的漏洞的着色(取决于其严重性),或者至少将它们划分为类别。 我们能够间接了解所发现漏洞的严重性的唯一方法是使用参数 -颜色 扫描过程中,发现的漏洞会以不同的颜色显示:

Wapiti - 自行检查站点是否存在漏洞

但报告本身并没有提供这样的色彩。

漏洞

SQLi

扫描器部分地处理了 SQLi 搜索。 在不需要身份验证的页面上搜索SQL漏洞时,不会出现问题:

Wapiti - 自行检查站点是否存在漏洞

即使使用有效的方法,也不可能在仅经过身份验证后才能访问的页面上找到漏洞 饼干,因为很可能在成功验证后,他们的会话将被“注销”并且 饼干 将会失效。 如果将取消授权功能实现为负责处理此过程的单独脚本,则可以通过 -x 参数将其完全排除,从而阻止其触发。 否则,将无法排除其处理。 这不是特定模块的问题,而是整个工具的问题,但由于这种细微差别,不可能在封闭的资源区域中检测到多次注入。

XSS

扫描仪完美地应对了给定的任务,并发现了所有准备好的漏洞:

Wapiti - 自行检查站点是否存在漏洞

低频干扰/射频干扰

扫描仪发现了所有潜在的漏洞:

Wapiti - 自行检查站点是否存在漏洞

总的来说,尽管存在误报和缺失漏洞,Wapiti 作为一款免费工具,仍显示出相当不错的性能结果。 无论如何,值得认识到的是,该扫描仪非常强大、灵活且多功能,最重要的是,它是免费的,因此它有权用于帮助管理员和开发人员获取有关网络安全状态的基本信息应用。

保持健康并受到保护!

来源: habr.com

添加评论