利用docker搭漏洞环境并复现案例(crlf、目录穿越)

2023-11-20

准备

1.安装docker

2.导入漏洞环境文

3.配置漏洞文件

CRLF

原理

复现

目录穿越漏洞


准备

1.安装docker

1. 更新系统软件包:
sudo yum update 
2. 安装 Docker 的依赖软件包:
   sudo yum install -y yum-utils device-mapper-persistent-data lvm2
   
3. 添加 Docker 的官方存储库:
   sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
   
4. 安装 Docker 社区版:
   sudo yum install -y docker-ce
   
5. 启动 Docker 服务:
   sudo systemctl start docker
   
6. 将 Docker 服务设置为开机自启动:
   sudo systemctl enable docker
   
7. 验证 Docker 是否成功安装:
   docker --version
   

2.导入漏洞环境文件

链接:https://pan.baidu.com/s/1gL4_ZUbY5mA-qo6sG5-yWQ?pwd=s6l9 
提取码:s6l9

3.配置漏洞文件

找到文件,进入

 然后看到一大堆目录,进入nginx目录下的insecure-configuration

 

主要是看的yml文件,包括端口映射、文件位置、镜像的使用

然后启动docker:

docker compose up -d

用docker ps -a查看运行的容器

CRLF

原理

用户访问网站的时候浏览器有事会自动将http补全成https,或者baidu.com补成www.baidu.com

,第二种情况是为了统一用户访问的域名

为了实现这两种情况,就要从nginx获取用户请求的文件路径

有三个变量入手

  1. $uri

  2. $document_uri   前两个变量是表示的是解码以后的请求路径,不带参数

  3. $request_uri   表示的是完整的URI(没有解码)

所以在nginx配置文件中有这样一个配置:

location / {
    return 302 https://$host$uri;
}

当使用前两个变量的时候就会自动解码,那么思路就是将payload编码,然后让他自动解码

复现

根据docker的配置,这里省去了nginx配置的步骤,就可以直接访问网站,这里直接抓包来看

 可以看到payload中利用urlcode编码了/r/n来实现了换行,然后就成功了

解决方法也很简单,就不要解码,可以使用第三个变量

目录穿越漏洞

这个漏洞很简单,但是属于习惯了操作一不小心就会犯的漏洞

原理:

        常见于nginx做反向代理的情况,动态文件被传给后端端口了,静态文件通常就要nginx来处理

例子:

        静态文件在home目录下,该文件名为files,所以用alias设置一个别名

location /files/{
    alias /home/;
}

这样设置没有问题,

当用户访问http://example.com/files/readme.txt,就可以获取/home/readme.txt文件了

但是如果写成这样:

#情况1:
location /files{
    alias /home/;
}        
#情况2:
location /files/{
    alias /home;
}

 可以看到要么files少了/要么home少了/

再加上 ..是返回上一级目录,那么用户在输入的时候加上..就变成了home/..了

所以就会执行并返回上一级目录

 进而可以获取服务器上的其他信息了

解决方法:

      就按照第一种写法即可:

location /files/{
    alias /home/;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用docker搭漏洞环境并复现案例(crlf、目录穿越) 的相关文章

随机推荐

  • PCL 法向量精细化处理

    目录 一 算法原理 1 概述 2 参考文献 二 代码实现 三 结果展示 一 算法原理 1 概述 class pcl NormalRefinement lt NormalT gt 这个类通过迭代的方式将每个点的法向量更新为其邻域内所有法向量的
  • Jenkins exec command java -jar 无法启动的问题

    看了一下午 网上讲的各种办法 都没起作用 前提 得先了解的知识 Disable exec 禁止在目标机上执行命令 勾选后将会忽略在Job配置中 Exec command 选项中设置的命令 Jenkins的说明文档中的 The Disable
  • 华为手机媒体音量自动静音_华为媒体音量自动静音

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 检查是否有APP与媒体音量冲突 只要打开软件 手机媒体音量就自动关闭 建议卸载冲突软件 华为手机 隶属于华为消费者业务 作为华为三大核心业务之一 华为消费者业务始于2003
  • PAT 7 加法变乘法

    加法变乘法 我们都知道 1 2 3 49 1225现在要求你把其中两个不相邻的加号变成乘号 使得结果为2015比如 1 2 3 1011 12 2728 29 49 2015就是符合要求的答案 请你寻找另外一个可能的答案 并把位置靠前的那个
  • Vue的响应式原理与diff算法的理解

    前端面试中主技术栈是vue的小伙伴应该都知道 这道题会被经常问到 也是老生常谈的一些题 下面简单说一下这些题 一 什么是vue的响应式原理 答 1 首次数据加载的时候 比如我data里面有age name 通过Object definePr
  • scarpy 爬虫

    基本指令 全局指令 scrapy fetch 直接爬取某个网页 scrapy runspider 运行某个爬虫 并且这个爬虫可以不属于项目里 scrapy settings 设置 scrapy shell 进入交互模式 D gt scrap
  • 缺陷报告—缺陷的状态

    缺陷状态 new 新的状态 open 激活 打开 的缺陷 开发方承认的缺陷 fixed 修改完成的缺陷 待返测的缺陷 close 关闭的缺陷 结束的缺陷 可归档的缺陷 rejected 被拒绝的缺陷 开发方没承认的缺陷 reopen 重新激
  • 【uniapp小程序】—— APP项目云打包(安卓)

    前言 之前小程序系列文章写了配置页面和封装自定义组件 这次写一下开发完成我们的项目后 如何进行打包安装 本文主要讲述的是使用 uniapp打包安卓 正文 第一步 查看自己的项目的基础配置 第二步 选择打包项目 选中我们要打包的项目 方式一
  • 可持久化线段树(主席树)【舰娘系列】【自编题】

    pixiv https www pixiv net member illust php mode medium illust id 60083619 向大 hei 佬 e 势力学 di 习 tou 前段时间做了一套大佬自己出的题 大佬竟然是
  • 利用Qt Assistant 修改帮助文档可能会出现的修改失败的问题

    关于利用Qt Assistant定制帮助文档 网络上已有相关教程 在使用该教程定制帮助文档时 初次创建没有问题 但是当我要修改文档结构时 会出现修改失败的情况 例如明明有些文件已经从qch中删除 但是生成qhc文件后使用assistant
  • BugkuCTF-WEB题文件上传

    启动场景 发现是文件上传 只能上传图像 不能上传PHP文件 那应该是寻找漏洞上传PHP文件 PHP文件里写入一句话木马 使用burp抓包 不断尝试发现发现需要修改的地方有三个 一个是http head里的Content Type multi
  • C语言中如何提取三位数的各个数字,怎样用C程序提取一个3位数的各个数位?

    如果简单点就int i 123 int k s k i 10 个位数s i 100 10 十位数i i 100 百位数 include void main int a int b c d 各个位数上的数字 printf 请输入一个三位数 s
  • C++ string获取文件路径文件名、文件路径、文件后缀(两种方式)

    windows路径有两种方式 一种正斜杠 一种反斜杠都可以表示路径 该方法可以支持这两种表达方法 方法一 采用substr 进行分割 string path1 D datas FusionTestData datas GF6 PMS E11
  • BigInteger详解

    java math BigInteger 表示任意大小的整数 当使用一个数超过了int型时就可以使用BigInteger 1 int型的范围 2 31 2 31 1 即 2147483648 2147483647 2 使用BigIntege
  • vector,list,deque区别

    http blog csdn net renkaihao article details 6803866 vector和built in数组类似 它拥有一段连续的内存空间 并且起始地址不变 因此它能非常好的支持随即存取 即 操作符 但由于它
  • python3如何使用matplotlib库_python3 的 matplotlib绘图库的使用

    1 绘制第一幅图表 1 figure函数 创建图表 2 subplot函数 创建子图 3 在多个图表中创建子图 4 plot 函数 画函数图像 5 sca 函数 选择子图 6 在 一张表中画多个曲线 2 直方图 3 散点图 4 饼图 5 图
  • 【Java基础知识 15】java反射机制原理详解

    Java学习路线 搬砖工逆袭Java架构师 简介 Java领域优质创作者 CSDN哪吒公众号作者 Java架构师奋斗者 扫描主页左侧二维码 加入群聊 一起学习 一起进步 欢迎点赞 收藏 留言 目录 一 类的加载与ClassLoader的理解
  • 干货分享

    对于数据分析师 建模工程师来说 将处理好的数据放在可视化的面板上进行呈现将更加有助于同事 领导来理解结果 今天小编就给大家来介绍一下如何用Python来制作一个数据可视化面板 使用的是Streamlit库 对于开发人员来说 只需几分钟就可以
  • Linux系统下如何修改主机名

    Linux系统安装好后 都会有默认的主机名 这里是用CentOS系统为例 默认的主机名是localhost localdomain 为了便于使用 我们常常需要修改主机名 下面演示是永久修改主机名的方法 第一步 更改 etc sysconfi
  • 利用docker搭漏洞环境并复现案例(crlf、目录穿越)

    准备 1 安装docker 2 导入漏洞环境文 3 配置漏洞文件 CRLF 原理 复现 目录穿越漏洞 准备 1 安装docker 1 更新系统软件包 sudo yum update 2 安装 Docker 的依赖软件包 sudo yum i