在Kali下安装w4af软件
音乐FM:Paradise
一、简介
w4af是一款Web高级应用程序攻击和审计python 3框架。主要帮助开发人员和渗透测试人员识别和利用他们的web应用程序中的漏洞。
w4af最初基于w3af开发,由于w3af依赖于较为老旧的Python模块,kali系统在迭代版本的过程中逐渐移除了对老旧python模块的支持,所以在较新的kali上并不能运行成功。由此产生基于Python 3的w4af并将开发重心转移到该项目上,老旧的w3af已经没有进行维护。
二、前置配置
在本教程中会安装许多特定的软件,大多数服务部署在国外,在安装的过程中存在下载速度慢、无法访问链接、安装失败的情况,所以本教程会提供特定软件的镜像地址及安装包。
在此教程中会通过在段前加注“【必须】”以提示您需要注意该段内容必须阅读、命令必须执行。
大致流程:
(一)、kali镜像
在网上一直存在需要更换xx源的教程,其本质上就是将国外的下载地址通过镜像(数据“克隆”)的方式替换为国内服务地址,使其国外低速下载服务能够通过国内CDN进行高速访问。这里所述的kali镜像指的是kali下的apt软件管理服务镜像。在kali中,大多数软件的下载、更新、删除都需要借助apt软件管理器,通过对apt软件管理器源地址的修改,使得能够通过国内CDN加速下载(更新)软件。
kali系统在之前提供了国内官方源,但后续已经关闭,所以我们必须借助其他国内镜像站。
现在的kali国内镜像站主要有:中科大、清华、浙大、东软、重庆、阿里巴巴等,这里我们统一使用清华的镜像。
1、更新源
- 【必须】首先我们需要打开
sources.list
文件,修改系统官方源。
sudo vim /etc/apt/sources.list # 使用vim访问文件,当然也可以使用其他文本编辑软件,例如:nano
- 【必须】将官方源进行“#”注释。
# See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/
# deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware # 注释该条语句,并在后续添加国内源
# Additional line for source packages
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware
- 【必须】在
sources.list
文件中添加国内源
#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free # 该语句用于添加源码源。一般我们并不需要,可以选择注释掉。
- 【必须】按
ESC
键并输入:x
退出vim
- 当然,您也可以通过
sed
命令直接进行源替换(注意:会删除kali官方源)
sudo sed -i "s@http://http.kali.org/kali@https://mirrors.tuna.tsinghua.edu.cn/kali@g" /etc/apt/sources.list
2、更新源
【必须】对sources.list
文件进行修改后并不会自动进行源更换,需要手动进行:
sudo apt-get update # 更新索引
除了更新索引外,您还可以进行:
sudo apt-get upgrade # 更新软件
sudo apt-get dist-upgrade # 全局全盘升级
sudo apt-get clean # 删除缓存
sudo apt-get autoclean # 自动化删除缓存
当然,这些操作并不是强制的,特别是进行更新软件操作。您可能许久没有更新,那么更新过程将会持续较长时间。
(二)、Python 3安装
w4af基于Python 3框架开发,所以您需要具有python 3环境,注意:在最新(24/4/23)的w4af中您需要Python 3版本大于或等于3.11。
【必须】您可以通过
python3 --version
检查您的python 3版本。
【必须】如果您已经完成上述更新apt源步骤,那么您仅需要执行:
sudo apt install python3
(三)、pip软件包安装
pip作为Python中的标准库管理器,其用于安装、管理不属于Python标准库的其他软件包。您可以将它类比于apt管理器。
1. pip换源
【必须】同样,pip的官方源在国内访问速度较慢,需要将其替换为国内源。
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip # 临时使用镜像升级pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 设置默认源地址
如果您仅希望临时使用该源地址,则可以
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip也可以配置多个镜像源,源地址间需要空格
pip config set global.extra-index-url "<url1> <url2>..."
2. pipenv&wheel安装
Pipenv是Python依赖管理工具,您可以将其看作是pip和virtualenv的组合体。wheel是Python的一种构件包格式,用于替代Python传统的egg文件。
【必须】安装命令
python -m pip install --upgrade pipenv wheel
【必须】安装完成,您可以通过
pipenv --version
检查您是否安装成功。
注意:如果您并没有安装成功,那么可能是pip管理器与apt管理器出现冲突,这个时候我们需要采用apt方式安装。
sudo apt install pipenv
(四)、npm软件包安装
npm是JavaScript运行时Node.js的默认程序包管理器,作为Node.js的开放式模块登记和管理系统,主要用于发布、下载Node.js包。
1. npm安装
【必须】在安装之前,您需要先安装Node.js
sudo apt install nodejs
【必须】之后,您再安装npm
sudo apt install npm
2. npm换源
【必须】换源同样一步完成
npm config set registry https://registry.npmmirror.com
如果您希望恢复官方源,则
npm config set registry https://registry.npmjs.org
ok,您成功完成前置步骤!
三、w4af安装
(一)、下载w4af
【必须】首先,我们需要克隆w4af的仓库文件或者下载库zip压缩包
git clone git@github.com:w4af/w4af.git
注意:如果您并没有将ssh公开密钥上传至您的github仓库,那么您并不能直接通过克隆方式,需要采用下载zip包方式,链接地址:w4af zip。
【必须】克隆或下载zip包并解压后,进入w4af的目录下
cd w4af # 如果您是通过git克隆获取
cd w4af-main # 如果您是通过zip包解压获取
注意:通过zip包解压缩可能会存在嵌套w4af-master,请仔细查看。
(二)、依赖安装
【必须】w4af使用了Node.js库中的一些功能,所以需要使用npm安装依赖
npm install
【必须】同样,w4af项目依赖于python 3.11,所以需要通过pipenv来安装项目的Python依赖
pipenv install --pypi-mirror https://pypi.tuna.tsinghua.edu.cn/simple/ # 临时添加清华源
pipenv安装过程中持续时间较长,请耐性等待。
(三)、运行w4af
当完成pipenv的安装后,会提示到
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
【必须】那么这个时候,我们需要运行pipenv shell
命令,开启一个独立shell以采用虚拟化方式运行w4af。
当执行完上述命令,会提示类似于
Launching subshell in virtual environment...
. /home/ak/.local/share/virtualenvs/w4af-main-PNImuV0A/bin/activate
的提示。那么这个时候其实已经进入专为w4af创建的shell。
运行w4af终端命令
./w4af_console
启动w4af。
完成w4af的安装与启动!
四、补充工具
(一)、 DVWA
本节主要安装DVWA作为w4af的测试对象,如果您并没有该需求,则无需安装。
DVWA是一个简单且脆弱的PHP/MySQL应用程序,主要作为安全人员用于测试其技能和工具。在其中包含一些常见的不同难度的Web漏洞,主要用于练习使用。
1. 安装
【必须】同样的,安装方式有git克隆和zip包两种方式
git clone git@github.com:digininja/DVWA.git
zip包地址:DVWA zip。
【必须】将DVMA移动到/var/www/html/
下,该目录作为apache2
网站的根目录,可以通过http://ip/folder
访问资源
sudo mv DVWA /var/www/html # 如果通过git克隆获得
sudo mv DVWA-master /var/www/html/DVWA # 如果下载zip包获取
注意:重命名DVWA目录并不是必须的,这主要取决于您采用输入何种url链接。
2. 启动服务
DVWA主要需要两个服务:Apache 2和MySQL。前者提供网站服务,后者提供数据库支持。
kali默认不会启动上述服务,您可以通过
service apache2 status
查看该服务的状态。
【必须】启动二者服务
service apache2 start # 启动Apache 2服务
service mariadb start # 启动数据库服务
后,您可以通过在浏览器输入http://127.0.0.1
查看是否启动Apache 2成功。
3. 配置数据库
在完成上述服务启动后,您可以在root账户下成功启动MySQL服务(默认没有密码)。
如果您并没有配置root账户,则需要
sudo passwd # 配置root账户密码
【必须】转为root账户,并进入MySQL终端
su # 输入root密码,转为root账户
mysql # 默认无需密码
如果存在类似提示
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.11.6-MariaDB-2 Debian n/a
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
则证明您已经成功进入MySQL终端。
【必须】在MySQL下创建DVWA独立用户,以此单独存储DVWA数据。请依次输入下述SQL语句
-- 创建数据库dvwa
CREATE DATABASE dvwa;
-- 创建数据库用户dvwa,密码为p@ssw0rd
CREATE user dvwa@localhost IDENTIFIED BY 'p@ssw0rd';
-- 分配权限,实现远程登录
GRANT ALL ON dvwa.* TO dvwa@localhost;
-- 刷新权限
FLUSH PRIVILEGES;
注意:
-
请务必小心:在语句输入完后记得添加“;”,如果忘记添加便执行,依旧添加“;”结束语句输入。
-
创建数据库名、用户名和密码并不是强制要求一致,上述仅为DVWA默认配置的账户,如果您选择自定义用户,则需要
# 修改DVWA配置项 vim /var/www/html/DVWA/config/config.inc.php.dist # 将以下三项修改为您自定义的MySQL数据库名、账户名和密码 $_DVWA[ 'dk_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = 'p@ssw0rd';
-
当配置完成后请退出
root
账户。
4. 启动DVWA
这一部分相对简单。
【必须】修改DVWA配置文件名
# 跳转到/var/www/html/DVWA目录下
cd /var/www/html/DVWA
# 复制并重命名配置文件
cp config/config.inc.php.dist config/config.inc.php
在浏览器输入urlhttp://127.0.0.1/DVWA/setup.php
后,您应该能够看到DVWA的数据库配置界面,点击页面最下方的Create/Reset Database
即可完成初始化DVWA数据库。
【必须】此时会跳转到DVWA的登陆界面,输入
# 账户
admin
# 密码
password
完成登陆。