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

从开始配置漏洞环境到漏洞复现流程

从开始配置漏洞环境到漏洞复现流程

今天举的例子是https://github.com/FeMiner/wms/issues#7

一、环境搭建

1.安装docker

curl -fsSL https://get.docker.com | bash
sudo systemctl start docker

或者直接去官网下载所需版本

https://www.docker.com/
image

2.配置php5.6环境

进入到项目文件夹后在项目外层新建 Dockerfile文件,不需要加后缀

image

FROM php:5.6-apacheRUN a2enmod rewrite \&& docker-php-ext-install mysql mysqliWORKDIR /var/www/html

把以上信息添加进去意思是:

php:5.6-apache 这个现成基础镜像为底座

在里面再装这个老项目需要的 PHP 扩展

把默认工作目录放到网站目录

image

然后再新建 docker-compose.yml,建在同一层目录下

因为当 build: . 时,Compose 会把当前目录当作 build context,并在这个目录根部找 Dockerfiledocker compose up --build 会先构建再启动服务

web:跑 PHP 网站

db:跑 MySQL 数据库

services:web:build: .container_name: wms_webports:- "8081:80"volumes:- ./src:/var/www/htmldepends_on:db:condition: service_healthydb:image: mysql:5.7container_name: wms_dbrestart: unless-stoppedenvironment:MYSQL_ROOT_PASSWORD: hustMYSQL_DATABASE: db_wmsports:- "3306:3306"command: --default-authentication-plugin=mysql_native_passwordvolumes:- dbdata:/var/lib/mysql- ./src/system/uploads/db_wms.sql:/docker-entrypoint-initdb.d/01-db_wms.sql:rohealthcheck:test: ["CMD-SHELL", "mysqladmin ping -h localhost -phust --silent"]interval: 5stimeout: 3sretries: 20volumes:dbdata:

可以先单独拉两个镜像

docker pull php:5.6-apache
docker pull mysql:5.7

我在复现这个漏洞的时候把wms-master/src/conn/conn.php中的文件中的把 localhost 改成 db,单纯为了方便我的数据库连结

然后重启服务

docker compose down -v
image

docker compose up -d --build
image

查看状态(可以忽略)

docker compose ps

image

在本地打开

http://localhost:8081

如果不成的话说明Apache没有配成

image

phpstudy可以运行php环境代码

一共需要的服务

Apache

PHP 5.6

MySQL 5.7

二、漏洞复现

1.打开漏洞文件的位置,打开editinout.php进行代码审计

image

发现直接拼接的$_get['id']的sql语句

确定注入点

2.进入到漏洞出现的本地网址

http://localhost:8081/vms/basic/editinout.php

判断注入点:

http://localhost:8081/vms/basic/editinout.php?id=1

image

发现并无报错,漏洞成立

直接上sqlmap扫描

sqlmap -u "http://localhost:8081/vms/basic/editinout.php?id=1" --batch

image

得到数据库,成功复现

http://www.jsqmd.com/news/631063/

相关文章:

  • 网钛CMS:经典PHP内容管理系统的源码解析与博客搭建指南
  • GoCodingInMyWay俜
  • 最强麒麟芯+自研风冷 华为Mate80 Pro MAX 风驰版全面评测:涡轮散热封神 性能稳到骨子里
  • 扩散模型对抗样本经典baselines特
  • 别再死记硬背公式了!用Excel和一张散点图,5分钟搞懂最小二乘法在干啥
  • 2026届毕业生推荐的五大AI论文方案推荐
  • GB/T28181设备接入WVP平台保姆级教程:从海康到大华的配置避坑指南
  • gitru:一个由 Rust 打造的零依赖 Git 提交信息校验工具挡
  • Nginx 学习总结泛
  • 《物联网识别技术》期末速成复习笔记
  • MyBatis中CONCAT函数的5个实战技巧:从模糊查询到动态SQL拼接
  • 统计学实战指南——指数在商业决策中的应用
  • 实时行情系统设计:从协议选择到高可用架构,再到数据源选型拓
  • 别再乱删DLL了!深入解析PyInstaller打包Pyside2的依赖树与正确瘦身姿势
  • 大模型RAG流水线混沌演练实录:向Embedding服务注入17ms延迟后,召回率断崖式下跌43%!
  • 深度解析DXVK:Linux游戏生态的Vulkan翻译层革命
  • Talebook个人书库系统完整指南:如何快速搭建专属在线图书馆
  • CSS如何利用Flex实现两层结构的嵌套布局_掌握父子容器的Flex属性继承
  • 【机器视觉】Halcon 授权密钥获取、更新与版本适配全攻略
  • 从ChatGPT到文心一言:5个国内大模型产品实测对比(附使用指南)
  • AI 时代:祛魅、适应与重新定义仍
  • Google 迎来「DeepSeek 时刻」:TurboQuant算法实现bit无损、×加速、×压缩、零预处理背
  • 雀魂AI助手Akagi:从麻将新手到高手的终极完整指南
  • ViGEmBus虚拟游戏控制器驱动:终极解决方案与完整使用教程
  • Qwen All-in-One完整教程:从原理到代码实现多任务AI引擎
  • 网站反爬机制的技术架构与演进
  • ISE Timing Report 深度解析与优化实践
  • 2025届必备的五大降AI率神器解析与推荐
  • 终极游戏模组管理神器:XXMI启动器完整使用指南
  • 【Hot 100 刷题计划】 LeetCode 75. 颜色分类 | C++ 两次遍历双指针法