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,一经查实,立即删除!

相关文章

扑克牌(二分)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 你有n种牌,第i种牌的数目为ci。另外有一种特殊的牌:joker,它的数目是m。你可以用每种牌各一张来组成一套牌,也可以用一张joker和除了某…

用户数据报协议UDP

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

BIO、NIO、AIO 有什么区别

在Java中,BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O)都是用于处理I/O(输入/输出)操作的不同方式。它们在处理I/O时具有不同的特点和适用场景。 B…

【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最简单的服务端和客户端代码…

SpringBoot集成websocket(3)|(websocket调用websocket采用回调方式实现数据互传)

SpringBoot集成websocket(3)|(websocket调用websocket采用回调方式实现数据互传) 文章目录 SpringBoot集成websocket(3)|(websocket调用websocket采用回调方式实现数据互传)[TOC] 前…

Vue引入外部js文件中的变量,方法

写法一&#xff1a; vue文件 <template><div class"index"><div>{{zuopin}}</div><h2>{{content.name}}</h2><h2>{{content.title}}</h2><div class"box" v-for"item in info" :key"…

Java技术整理(6)—— 微服务篇

1、服务注册发现 服务注册就是维护一个服务列表&#xff0c;它在管理系统内所有的服务地址&#xff0c;当新的服务启动后&#xff0c;它会向服务列表提交自己的服务地址&#xff0c;服务的调用法可以直接向服务列表发送服务列表获取请求&#xff0c;就能获得所有的服务地址&am…

【LangChain】Prompts之示例选择器

LangChain学习文档 【LangChain】向量存储(Vector stores)【LangChain】向量存储之FAISS【LangChain】Prompts之Prompt templates【LangChain】Prompts之自定义提示模板【LangChain】Prompts之示例选择器 概要 如果您有大量示例&#xff0c;您可能需要选择要包含在提示中的哪…

pytest功能特性介绍

前言 学pytest就不得不说fixture&#xff0c;fixture是pytest的精髓所在&#xff0c;就像unittest中的setup和teardown一样&#xff0c;如果不学fixture那么使用pytest和使用unittest是没什么区别的(个人理解)。 fixture用途 1.做测试前后的初始化设置&#xff0c;如测试数据…

【AI】《动手学-深度学习-PyTorch版》笔记(十七):卷积神经网络入门

AI学习目录汇总 1、从全链接层到卷积 1.1 卷积 我们在前面学习的多层感知机中,已经认识了全链接层,缺点很明显,在稍微大点的网络模型中,参数成指数级别增长。参数量很快就达到数十亿,这样的量级几乎无法计算。为此科学家们想出一个减少参数的方法:卷积。 从全链接层到…

Android Monkey测试

1.直接使用 当配置好一切环境的前提下&#xff0c;仅需套用以下基础语法&#xff0c;即可简单使用(更多的命令可以去Android的官网查询) adb shell monkey -p [包名] -v [需要点击的次数] 举例&#xff0c;如我这里的包名是 com.test.chj233 &#xff0c;需要随机生成 1万次…

linux 关机和重启

关机和重启 关机和重启之前最好先数据数据同步一下 # 将数据由内存同步到硬盘sync 关机 #shutdown [选项] 时间#立即进入维护模式shutdown now#立即重启shutdown -r now#20:00 重新启动计算机shutdown -r 20:00& #立即关机shutdown -h now# 20:00 关闭计算机shutdown -h 20…

K8S系列文章之 Shell批处理脚本应用

一、简要说明 1、批处理脚本介绍 命令批处理脚本&#xff1a;/usr/shell/all.sh文件批量分发脚本&#xff1a;/usr/shell/scp.sh 2、批处理命令脚本原理 读取/usr/shell/hosts文件中的ip列表使用$*接收脚本所有参数for循环遍历hosts文件中的ip地址通过ssh host cmd 实现目的…

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

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

wangEditor5实现@评论功能

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

谈谈对Spring MVC的理解

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

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

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

软件测试基础篇——MySQL

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