docker下载和案例

文章目录

  • Docker安装
    • 一,根据官方文档安装
    • 二,根据我以下方式
  • Docker配置错误导致漏洞
    • 一,CRLF注入漏洞
        • 介绍
        • 在nginx中该漏洞例子
        • 解决方法
      • 目录穿越漏洞
        • 介绍
        • 解决方法

Docker安装

一,根据官方文档安装

官方文档
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二,根据我以下方式

docker安装要求:

Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker。

在这里插入图片描述

  • 安装yum-utils

    [root@localhost yum.repos.d]# yum install -y yum-utils
    Updating Subscription Management repositories.
    Unable to read consumer identityThis system is not registered with an entitlement server. You can use subscription-manager to register.Last metadata expiration check: 0:07:17 ago on Tue 08 Aug 2023 11:11:02 AM EDT.
    Package yum-utils-4.0.21-19.el8_8.noarch is already installed.
    Dependencies resolved.
    Nothing to do.
    Complete!
    
  • 第二条命令

    [root@localhost yum.repos.d]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    Updating Subscription Management repositories.
    Unable to read consumer identityThis system is not registered with an entitlement server. You can use subscription-manager to register.Adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
  • 第三条命令

    [root@localhost yum.repos.d]# yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    Updating Subscription Management repositories.
    Unable to read consumer identityThis system is not registered with an entitlement server. You can use subscription-manager to register.Docker CE Stable - x86_64                            12 kB/s | 3.5 kB     00:00    
    Package docker-ce-3:24.0.2-1.el8.x86_64 is already installed.
    Package docker-ce-cli-1:24.0.2-1.el8.x86_64 is already installed.
    
  • 启动docker

    [root@localhost yum.repos.d]# systemctl start docker
    
  • 查看docker version

    [root@localhost yum.repos.d]# docker version 
    Client: Docker Engine - CommunityVersion:           24.0.5API version:       1.43Go version:        go1.20.6Git commit:        ced0996Built:             Fri Jul 21 20:36:32 2023OS/Arch:           linux/amd64Context:           defaultServer: Docker Engine - CommunityEngine:Version:          24.0.5API version:      1.43 (minimum version 1.12)Go version:       go1.20.6Git commit:       a61e2b4Built:            Fri Jul 21 20:35:32 2023OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.22GitCommit:        8165feabfdfe38c65b599c4993d227328c231fcarunc:Version:          1.1.8GitCommit:        v1.1.8-0-g82f18fedocker-init:Version:          0.19.0GitCommit:        de40ad0
    

安装成功

Docker配置错误导致漏洞

一,CRLF注入漏洞

介绍

CRLF是“回车+换行”(\r\n)的简称,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP header与HTTP Body是用两个CRLF分隔的, 里面的内容也是用CRLF分隔。所有, 当我们控制了HTTP头部字符时, 就可以利用该漏洞写入恶意代码

在nginx中该漏洞例子

在跳转的过程中,我们需要保证用户访问的页面不变,所以需要从Nginx获取用户请求的文件路径。查看Nginx文档,可以发现有三个表示uri的变量:

  1. $uri : 这个变量包含了与浏览器请求中的URI部分相对应的值,并且不包括任何查询参数。例如,对于请求http://example.com/page?param=value$uri的值将是/page
  2. $document_uri : 这个变量包含了当前请求的URI,但是会被内部重定向修改(如果有)。换句话说,它会显示处理完重写规则后的最终URI。
  3. $request_uri : 这个变量包含了整个浏览器请求的URI,包括所有的查询参数。例如,对于请求http://example.com/page?param=value$request_uri的值将是/page?param=value

简单来说1和2表示的是解码以后的请求路径,不带参数;3表示的是完整的URI(没有解码)。

那么, 如果运维配置了下列的代码:

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

因为$uri是解码以后的请求路径,所以可能就会包含换行符,也就造成了一个CRLF注入漏洞。

这个CRLF注入漏洞可以导致会话固定漏洞、设置Cookie引发的CSRF漏洞或者XSS漏洞。其中,我们通过注入两个\r\n即可控制HTTP体进行XSS,但因为浏览器认为这是一个301跳转,所以并不会显示我们注入的内容。

当我们访问http://localhost:8080/%0d%0aSet-Cookie:%20a=1

请求包就会

[root@localhost sbin]# curl -I http://localhost:8080/%0d%0aSet-Cookie:%20a=1
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.13.0
Date: Tue, 08 Aug 2023 16:21:38 GMT
Content-Type: text/html
Content-Length: 161
Connection: keep-alive
Location: http://localhost:8080/
Set-Cookie: a=1 --> CRLF注入进来的

则如果我们利用该漏洞注入恶意代码就会造成破坏

解决方法

如何修复这个CRLF漏洞?正确的做法应该是如下:

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

目录穿越漏洞

介绍

Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。

错误例子

location /files {alias /home/;
}

这样当我们访问http://192.168.182.136:8081/files../就会穿越到根目录

在系统的过程
[root@localhost nginx]# cd /bin/..
[root@localhost /]# 

则在浏览器上就会

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

解决方法

Nginx在配置别名(Alias)的时候,加上/

location /files/ {alias /home/;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/34297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户数据报协议UDP

UDP的格式 载荷存放的是:应用层完整的UDP数据报 报头结构: 源端口号:发出的信息的来源端口目的端口号:信息要到达的目的端口UDP长度:2个字节(16位),即UDP总长度为:2^16bit 2^10bit * 2^6bit 1KB * 64 64KB.所以一个UDP的最大长度为64KBUDP校验和:网络的传输并非稳定传输,…

【leetcode】前缀和

内容摘抄自: 小而美的算法技巧:前缀和数组 | labuladong 的算法小抄 一维数组的前缀和 看这个 preSum 数组,若想求索引区间 [1, 4] 内的所有元素之和, 就可以通过 preSum[5] - preSum[1] 得出。 class NumArray {private:// 前缀…

wordpress数据表中标签和分类如何区分?

wordpress中标签和分类是什么关系怎么区分?最后有一个群的网友告诉了我文章ID和标签ID的关系是放在了wp_term_relationships表中,然后我百度了下这个表的结构和相关介绍,发现果然如此,先把文章保存起来: wp_term_rela…

消息中间件 Asio (C++)

折腾了一上午,看到这个结果的时候泪目了兄弟闷,讲真。我的asio客户端成功收到服务端发来的消息了。虽然这确实是极其智障又简单的入门哈哈 下载独立版本 asio网络通信库新建cmake工程,CMakeLists.txt加载asioasio最简单的服务端和客户端代码…

【elasticSearch系】3.完整搭建详尽版elk

话不多说,我们先看下经典的elk 是由哪些组件搭建组合起来的 elasticSearch和kibana搭建 可以查看之前我搭建elasticsearch和kibana 的这篇文章 logstash搭建 为了和之前我搭建elasticsearch和kibana版本保持一致,这里我们还是选择7.17.3 下载地址 点击下载,这里为了方…

wangEditor5实现@评论功能

需求描述:在输入框输入后显示用户列表,实现人功能 当前环境:vue3viteelementPluswangEditor5 需要插件:wangeditor/plugin-mention 安装插件:npm i wangeditor/plugin-mention 输入框组件分两部分:1. wa…

谈谈对Spring MVC的理解

问题分析: SpringMVC 是一种基于 Java 语言开发,实现了 Web MVC 设计模式,请求驱动类型 的轻量级 Web 框架。 SpringMVC采用了 MVC 架构模式的思想,通过把 Model,View,Controller 分离,将 Web 层…

基于vue3+webpack5+qiankun实现微前端

一 主应用改造(又称基座改造) 1 在主应用中安装qiankun(npm i qiankun -S) 2 在src下新建micro-app.js文件,用于存放所有子应用。 const microApps [// 当匹配到activeRule 的时候,请求获取entry资源,渲染到containe…

软件测试基础篇——MySQL

MySQL 1、数据库技术概述 数据库database:存放和管理各种数据的仓库,操作的对象主要是【数据data】,科学的组织和存储数据,高效的获取和处理数据SQL:结构化查询语言,专为**关系型数据库而建立的操作语言&…

JavaScript类

JavaScript 类(class) 类是用于创建对象的模板。 我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。 每个类中包含了一个特殊的方法 constructor(),它是类…

vue3项目中引入dialog插件,支持最大最小化、还原、拖拽

效果图: 上图是layui-vue组件库中的layer插件,我的项目使用的是element-plus组件库,在用不上layui组件库的情况下,就单独引入layui/layer-vue这个弹层插件就可以了 npm地址:layui/layer-vue - npm layui-vue组件库地址…

UnrealEngine - 网络同步之连接篇

1 连接过程 - 握手 传统的 C/S 架构下,Client 和 Server 通常会建立一条抽象的 Connection,用来进行两端的通信。 UE 的官方文档中提供了 Client 连接到 Server 的示例 ,简单来说分为如下几步: 打包构建好 Client 和 Server 进程…

11-数据结构-栈和队列的应用(C语言)

栈和队列的应用 目录 栈和队列的应用 一、括号匹配(栈) 二、表达式的各种转换 (1)中缀转后缀(手工) (2)后缀转中缀表达式(手工) (3)中缀转后缀(栈) (4)中缀转后缀(树) (5)后缀表达式求值 (6)中缀表达式求值(栈…

jackson库收发json格式数据和ajax发送json格式的数据

一、jackson库收发json格式数据 jackson库是maven仓库中用来实现组织json数据功能的库。 json格式  json格式一个组织数据的字符文本格式,它用键值对的方式存贮数据,json数据都是有一对对键值对组成的,键只能是字符串,用双引号包…

时序预测 | Matlab实现基于GRNN广义回归神经网络的电力负荷预测模型

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 时序预测 | Matlab实现基于GRNN广义回归神经网络的电力负荷预测模型 1.Matlab实现基于GRNN广义回归神经网络的电力负荷预测模型 2.单变量时间序列预测; 3.多指标评价,评价指标包括:R2、MAE、MBE等,代码质量极高…

excel 之 VBA

1、excel和VBA 高效办公,把重复性的工作写成VBA代码(VB代码的衍生物,语法和VBA相同)。 首先打开开发工具模式,如果没有选显卡,需要手动打开 打开程序编辑界面 快捷键 altF11一般操作 程序调试&#xf…

概率论与数理统计:第二、三章:一维~n维随机变量及其分布

文章目录 Ch2. 一维随机变量及其分布1.一维随机变量1.随机变量2.分布函数 F ( x ) F(x) F(x)(1)定义(2)分布函数的性质 (充要条件)(3)分布函数的应用——求概率3.最大最小值函数 2.一维离散型随机变量及其概率分布(分布律)3.一维连续型随机变量及其概率分布(概率密度)4.一般类型…

深度学习关键要素:数据集汇总与分享

引言 在深度学习的应用中,数据被认为是最重要的因素之一。因此,选择一个好的数据集对于深度学习的成功至关重要。在选择数据集时,不仅需要关注数据量的大小、多样性以及质量,还要考虑数据集是否代表了所研究问题的真实情况。本文…

2023国赛数学建模B题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…

【Spring Boot】夺名连环问(持续更新ing)

Spring的了解与特性 简单介绍:快速开发Spring项目的脚手架。简化Spring应用的初始搭建以及开发过程。 特性 提供了很多内置的Starter结合自动配置,对主流框架的无配置集成、开箱即用。即不需要自己去引入很多依赖。 并且管理了常用的第三方依赖的版本&…