如何从搭建漏洞环境到复现漏洞的完整流程进行详细配置?

摘要:从开始配置漏洞环境到漏洞复现流程 今天举的例子是https:github.comFeMinerwmsissues#7 一、环境搭建 1.安装docker curl -fsSL https:get.docker.com | ba
从开始配置漏洞环境到漏洞复现流程 今天举的例子是https://github.com/FeMiner/wms/issues#7 一、环境搭建 1.安装docker curl -fsSL https://get.docker.com | bash sudo systemctl start docker 或者直接去官网下载所需版本 https://www.docker.com/ 2.配置php5.6环境 进入到项目文件夹后在项目外层新建 Dockerfile文件,不需要加后缀 FROM php:5.6-apache RUN a2enmod rewrite \ && docker-php-ext-install mysql mysqli WORKDIR /var/www/html 把以上信息添加进去意思是: 以 php:5.6-apache 这个现成基础镜像为底座 在里面再装这个老项目需要的 PHP 扩展 把默认工作目录放到网站目录 然后再新建 docker-compose.yml,建在同一层目录下 因为当 build: . 时,Compose 会把当前目录当作 build context,并在这个目录根部找 Dockerfile;docker compose up --build 会先构建再启动服务 web:跑 PHP 网站 db:跑 MySQL 数据库 services: web: build: . container_name: wms_web ports: - "8081:80" volumes: - ./src:/var/www/html depends_on: db: condition: service_healthy db: image: mysql:5.7 container_name: wms_db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: hust MYSQL_DATABASE: db_wms ports: - "3306:3306" command: --default-authentication-plugin=mysql_native_password volumes: - dbdata:/var/lib/mysql - ./src/system/uploads/db_wms.sql:/docker-entrypoint-initdb.d/01-db_wms.sql:ro healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h localhost -phust --silent"] interval: 5s timeout: 3s retries: 20 volumes: dbdata: 可以先单独拉两个镜像 docker pull php:5.6-apache docker pull mysql:5.7 我在复现这个漏洞的时候把wms-master/src/conn/conn.php中的文件中的把 localhost 改成 db,单纯为了方便我的数据库连结 然后重启服务 docker compose down -v docker compose up -d --build 查看状态(可以忽略) docker compose ps 在本地打开 http://localhost:8081 如果不成的话说明Apache没有配成 phpstudy可以运行php环境代码 一共需要的服务 Apache PHP 5.6 MySQL 5.7 二、漏洞复现 1.打开漏洞文件的位置,打开editinout.php进行代码审计 发现直接拼接的$_get['id']的sql语句 确定注入点 2.进入到漏洞出现的本地网址 http://localhost:8081/vms/basic/editinout.php 判断注入点: http://localhost:8081/vms/basic/editinout.php?id=1 发现并无报错,漏洞成立 直接上sqlmap扫描 sqlmap -u "http://localhost:8081/vms/basic/editinout.php?id=1"
阅读全文