w3af 基于Python的Web应用扫描器

全称”Web Application Attack and Audit Framework“——Web应用程序攻击审计框架。W3af是一个 基于Python的Web应用扫描器。W3af 是一个基于Python编写的 Web 应用程序攻击和检查框架。该项目已超过 130 个插件,其中 检查 SQL 注入,跨站点脚本(XSS),本地和远程文件等。该项目的 目标是要建立一个框架,以寻找和利用 Web 应用安全漏洞,很容易使用和扩展。

一、插件简介

1.1、主要插件

1、Crawl(爬取)类
    职责:通过爬取网站站点来获取新的URL地址、表单、注入点。
    如果用户启用了Crawl类型的多个插件,此时将产生一个循环:A插件第一次运行时发现一个新的url,w3af会将其发送到插件B。如果B插件发现一个新的url则会发送到插件A,这个过程持续进行直到所有插件都已运行且无法找到更多的信息。
2、Audit(审计)类
    该类插件会向Crawl插件爬取出的注入点发送特制的POC数据以确认漏洞是否存在。
    
3、Attack(攻击)类
    如果Audit插件发现了漏洞,Attack将会进行攻击和利用,通常会在远程服务器上返回一个shell或者比如SQL注入则会获取数据库的数据。
    attck模块不能人为的进行配置的,所有的攻击的方法都是固定的,使用者无法修改。

1.2、其他插件

1、Infrastructure(基础)插件
    这类插件用来标识有关目标系统的信息,如安装的WAF,操作系统和HTTP守护进程等。
2、Grep(检索)插件
    这类插件会分析其他插件发送的HTTP请求和相应并识别漏洞
    
3、Output(输出)插件
    这类插件会将插件的数据保存到文本,xml或者是html文件中。调试的信息也会发送到输出Output插件并可保存和分析。
    如果启用了text_file和xml_file这两个Output插件,则这两个都会记录有Audit插件发现的任何漏洞。
4、Mangle插件
    允许修改基于正则表达式的请求和响应。
5、Broutforce插件
    在爬取阶段进行暴力登陆。
    用户、密码文件位于:w3af/w3af/core/controllers/bruteforce/下的users.txt、passwords.txt
6、Evasion(绕过)插件
    通过修改由其他插件生成的HTTP请求来绕过简单的入侵检测规则。
   
在大多数情况下,我们 建议 w3af 使用以下配置运行
  • crawl: web_spider
  • audit: Enable all
  • grep: Enable all

二、安装

先决条件:
  • Git 客户端: sudo apt-get install git
  • Python2.7,在大多数系统中默认安装apt-get install python2.7
  • python2.7对应的pip: sudo apt-get install python-pip  或者  curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py &&  python2 get-pip.py

2.1、在windows上安装

官网的最新版本已经不提供windows的安装方法,目前有一个旧版(1.1)的exe安装包,提供给大家下载。百度云地址如下:
链接:百度网盘 请输入提取码
密码:rpwl。
下载成功后,直接运行exe进行安装即可。
  
安装完成后,桌面上多了两个图标w3af Console和w3af GUI:
  
打开w3af GUI,会同时打开命令行界面和图形界面:
w3af 基于Python的Web应用扫描器_第1张图片
fast_scan:快速扫描模块
OWASP_TOP10:漏洞扫描器模块

2.2、在kali上安装

apt-get update
apt-get install -y w3af
这将安装最新的打包版本,该版本可能不是我们存储库中提供的最新版本。如果需要最新版本,建议执行以下步骤:
cd ~
apt-get update
apt-get install -y python-pip w3af
pip install --upgrade pip
git clone https://github.com/andresriancho/w3af.git
cd w3af
./w3af_console
. /tmp/w3af_dependency_install.sh

2.3、docker安装

允许用户运行 w3af 而无需安装任何依赖项
$ git clone https://github.com/andresriancho/w3af.git
$ cd w3af/extras/docker/scripts/
$ sudo ./w3af_console_docker   # 输入 w3af
w3af>>>
w3af 基于Python的Web应用扫描器_第2张图片
所有配置菜单均提供以下命令:
  • help
  • view
  • set
  • back

三、更新版本

3.1、手动更新

手动更新到最新 w3af 版本很简单,更新后,w3af 可能需要新的依赖项:
cd w3af/
git pull

3.2、自动更新

默认情况下会启用自动更新功能,并且可以使用该 ~/.w3af/startup.conf 文件来更改其配置。该文件在第一次运行后生成
w3af 基于Python的Web应用扫描器_第3张图片
通过将 auto-update 部分设置为 false,可以完全禁用该功能。并且更新频率有 D,W 和 M(每日,每周,每月)作为有效值。
也可以通过简单地为 w3af_console 或者 w3af_gui 脚本提供所需的选项来强制执行更新或不进行更新: --force-update--no-update

四、使用

4.1、插件配置

w3af 基于Python的Web应用扫描器_第4张图片
可以在此菜单中配置除 attack 插件以外的所有插件。让我们列出所有 audit 类型的插件:
w3af 基于Python的Web应用扫描器_第5张图片
启用 xss 和 sqli 插件,然后验证框架是否理解该命令,我们发出以下命令集
w3af 基于Python的Web应用扫描器_第6张图片
了解插件的功能,那么也可以运行以下 desc 命令:
w3af 基于Python的Web应用扫描器_第7张图片
查看插件的配置:
w3af 基于Python的Web应用扫描器_第8张图片
插件的配置菜单还具有 set 命令,它用于更改参数值;还有 view 命令用于列出现有值。在前面的示例中,我们禁用了 xss 插件中的持久性跨站点脚本检查。

4.2、保存配置

一旦设置了插件和框架配置,就可以将该信息保存到配置文件中:
配置文件:~/.w3af/profiles/路径下
w3af 基于Python的Web应用扫描器_第9张图片
   
可以加载保存的配置以运行新的扫描:
    
共享配置:
与其他用户共享配置文件可能会出现问题,因为它们包含插件配置引用的文件的完整路径,这将要求用户共享配置文件,引用的文件并手动编辑配置文件以匹配当前环境。为了解决这个问题, self-contained 添加了标志( 一个自包含的概要文件在内部捆绑了所有的引用文件,并且可以很容易地与其他用户共享):

4.3、开始扫描

配置完所有所需的插件后,用户必须设置目标 URL,最后开始扫描。
在扫描过程中,您可以随时点击 以获取 w3af 内核的实时状态。状态行如下所示:
w3af 基于Python的Web应用扫描器_第10张图片

4.4、脚本实现自动化

脚本可以反复执行相同的步骤。w3af可以使用参数-s运行脚本文件脚本文件是每行有一个w3af_console命令的文本文件。示例脚本文件如下所示:
w3af 基于Python的Web应用扫描器_第11张图片
脚本非常适合使用 cron 对您的网站进行定期扫描!
示例脚本文件可以在 w3af/scripts/ 目录内找。

五、身份认证

w3af 身份验证_「w3af 中文使用教程」 - 网安 (wangan.com)
w3af如何进行身份认证扫描_「w3af 中文使用教程」 - 网安 (wangan.com)
  
w3af 支持以下类型的身份验证方案:
  • HTTP 基本认证
  • NTLM 身份验证
  • 表格认证
  • 设置 HTTP cookie

5.1、HTTP 基本认证 与 NTLM 身份验证

要配置HTTP基本 或 NTLM凭据,请打开 HTTP 设置菜单。这 将影响所有插件和其他核心库
w3af 基于Python的Web应用扫描器_第12张图片
配置完成后,选择 save保存。扫描程序现在准备开始经过身份验证的扫描,下一步是启用特定插件并开始扫描。

5.1.1、HTTP基本认证

w3af 基于Python的Web应用扫描器_第13张图片

5.1.2、NTML身份认证

NTML 身份认证是 微软一家才有的身份认证方式。
开启 NTML 的认证功能需要使用到 IIS 的集成身份认证摸块。NTML 也是windows 下的默认身份认证方式。
w3af 基于Python的Web应用扫描器_第14张图片

5.2、表格认证

从版本 1.6 开始, 使用 auth 插件配置表单身份验证。框架中有两个可用的身份验证插件,detailed 相比于 generic的信息更加详细:
  • detailed
  • generic
身份验证插件是一种特殊类型的插件,它负责在整个扫描过程中使会话保持活动状态。在开始扫描之前(为了获得新的会话)以及在扫描运行时 每 5 秒钟调用一次这些插件(以验证当前会话是否仍然存在并在需要时创建一个新会话)。
   
选择 W3f 下的 auth 插件在的 detailed 选择,配置要提交的From信息:
GUI:
w3af 基于Python的Web应用扫描器_第15张图片
console:
w3af 基于Python的Web应用扫描器_第16张图片
说明如何配置具有以下选项的 generic 身份验证插件:
  • username:web应用程序的用户名
  • password:web应用程序的密码
  • username_field:可以在登陆HTML源代码中找到的用户名表单输入的名称
  • password_field:可以在登陆HTML源代码中知道到的密码表单输入的名称
  • auth_url:将用户名和密码发布到的网址。
  • check_url:用于检查会话是否仍处于活动状态的 URL,通常将其设置为 Web 应用程序用户的设置页面 或者 登陆成功后跳转的界面。
  • check_string:一个字符串,如果在 check_url 的 HTTP 响应正文中发现该字符串证明该会话仍处于活动状态,通常将其设置为只能在用户的设置页面中找到的字符串,例如他的姓氏。
配置完所有这些设置后,建议仅用 crawl.web_spider 和 auth.generic 启动测试扫描,以验证是否标识了所有身份验证后的表单和链接。另外,请注意 w3af 的日志,因为如果身份验证过程有任何问题,身份验证插件将创建日志条目。

5.3、设置HTTP Cookie

对于表单身份验证不起作用的情况(可能与包含反 CSRF 令牌或两因素身份验证的登录表单有关), w3af 为用户提供了一种设置一个或多个 HTTP Cookie 的方法,以便在扫描期间使用。
您可以通过任何喜欢的方式 捕获这些 cookie:直接从浏览器中,使用 Web 代理,wireshark 等
  
w3af对cookie的身份认证规定严格一定要使用符合格式规定的cookie文件, 并且其各个数据字段之间 必需使用 TAB 制表符来进行分隔 ,而不是空格
格式: 以“# Netscape HTTP Cookie File”开头
cookie以下方式书写:
[域名] + [Flog(是否该域所有机器均可访问)] + [路径(cookie对应的路径)] + [Flog(是否需要安全链接域名才能通过)] + [时间(证明该cookie是否过期,是从1970.1.1 0时计算,以秒为单位,一般很大)] + [cookie名称] + [cookie的值]
   
Netscape cookies.txt - Just Solve the File Format Problem (archiveteam.org)
创建文件后,在 http-settings 菜单中进行设置 cookie_jar_file 以指向该文件。
>>> 比如:dvwa站点的cookie信息:
w3af 基于Python的Web应用扫描器_第17张图片
将其改成 w3af 的专用格式: 保存为cookie.txt
# Netscape HTTP Cookie File
192.168.11.135  FALSE   /   FALSE   1685956055  PHPSESSID   vt5ntpjhe6bvngrn3fuvonngh4
192.168.11.135  FALSE   /   FALSE   1685956055  security    low
>>> 也可以利用浏览器插件Cookie Editor将登陆网站的cookie直接导出为netscape格式:
w3af 基于Python的Web应用扫描器_第18张图片

   

回到  w3af  -->  HTTP Configuration  下选择  Cookies ,导入保存的本地 cookie 文件:
w3af 基于Python的Web应用扫描器_第19张图片
选择插件与设置target:
w3af 基于Python的Web应用扫描器_第20张图片
运行:

5.4、设置HTTP头

一些 Web 应用程序使用自定义 HTTP 标头进行身份验证,w3af 框架也支持此标头。
此方法将设置一个 HTTP 请求标头,该标头将添加到框架发送的每个 HTTP 请求中,请注意, 使用此方法时不会对会话状态进行验证,如果会话无效,则扫描将继续使用无效方法进行。会话(标头值)。
为了使用此方法,您首先必须:
  • 使用您喜欢的文本编辑器创建一个文本文件,其内容如下: Cookie: ,不带引号,并插入所需的会话 cookie。
  • 然后,在 w3af 的 http-settings 配置菜单中,将 headers_file 配置参数 设置为指向最近创建的文件。
  • save
w3af 基于Python的Web应用扫描器_第21张图片
复制到header.txt文件中,然后将header.txt添加到参数 headers_file。
现在将 w3af 扫描程序配置为对所有 HTTP 请求都使用 HTTP 会话 cookie。

六、常规配置

6.1、配置插件

常规扫描的话,我们建议使用以下的配置运行w3af:
  • crawl类插件使用web_spider插件
  • audit 类插件设置成Enable all
  • grep类插件设置成Enable all
配置命令如下:
插件状态:
w3af 基于Python的Web应用扫描器_第22张图片
w3af 基于Python的Web应用扫描器_第23张图片

6.2、输出扫描报告——output

不设置默认只会在console上输出扫描信息。
一般我们再加上输出csv_file(表格)和html_fiel(网页)两种格式的扫描报告。
w3af 基于Python的Web应用扫描器_第24张图片
扫描报告默认会保存在/root目录下,你可以使用out config命令去设置。
保存配置——profiles      /root/.w3af/profiles/
w3af 基于Python的Web应用扫描器_第25张图片

6.3、设置目标,开始扫描——target,start

w3af>>> target
w3af/config:target>>> set target http://ip/
w3af/config:target>>> back
w3af>>> start

七、参考

GitHub - andresriancho/w3af: w3af: web application attack and audit framework, the open source web vulnerability scanner.

Welcome to w3af’s documentation — w3af - Web application attack and audit framework 2019.1.2 documentation

「w3af 中文使用教程」 - 网安 (wangan.com)

【0x01】w3af工具的介绍-简单扫描_哔哩哔哩_bilibili

你可能感兴趣的:(安全,w3af)