一、CentOS7下的Docker容器安装
目前Docker是不错的安装方式。使用Docker安装MySQL,首先需要安装Docker容器,之后在拉去MySQL镜像。
docker简介
Docker CE 是免费的 Docker 产品的新名称,Docker CE 包含了完整的 Docker 平台,非常适合开发人员和运维团队构建容器 APP。
Docker的下载
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
Docker的安装:
- 上传安装包:
docker-ce-18.06.0.ce-3.el7.x86_64.rpm
2.安装:
yum install docker-ce-18.06.0.ce-3.el7.x86_64.rpm -y
3.启动docker
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
docker info
- 配置Docker的镜像加速器:
vi /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
- 刷新守护进程:
systemctl daemon-reload
6.重启docker:
systemctl restart docker
7.效验配置是否成功
docker info
Docker的镜像操作
1.搜索镜像
docker search tomcat
2.下载镜像:
docker pull tomcat
docker pull openjdk
3。列举本地仓库的所有镜像
docker images
4.导入或者加载镜像:
docker load -i [软件包]
#docker load -i centos7.tar
#docker load -i java8.tar
#docker load -i tomcat.tar
#docker load -i nginx.tar
docker load -i mysql.tar
5.保存镜像:
docker save -o tomcat3-22.rar tomcat:8.5.42-jdk8-adoptopenjdk-openj9
6.删除镜像:
docker rmi -f openjdk:latest
docker rmi -f 040bdb29ab37
docker rmi -f $(docker images)
容器的操作:
1.创建容器:
docker run centos:centos7 /bin/echo 'Hello World' 临时容器
docker run -it --name=mycentos centos:centos7 /bin/bash
docker run -d -p 91:80 nginx
访问服务器
- 列举正在运行的容器:
docker ps
列举所有的容器(包括停止的)
docker ps -a
- 停止、启动、重启容器:
docker stop 容器的id
docker start 容器的id
docker restart 容器的id
4.进入容器:
docker exec -it 5c0447c5d6ed /bin/bash
5.退出容器:
exit
6.删除容器:
docker rm -f 容器的id
docker rm -f $(docker ps -a -q)
7.过滤输出容器的ip地址:
docker inspect --format='{{.NetworkSettings.IPAddress}}' jdk1(容器的名称)
二、漏洞
$uri导致的CRLF注入漏洞
1、漏洞原理
CRLF注入漏洞又称HTTP响应拆分漏洞(HTTP Response Splitting),攻击方式是将回车符、换行符注入到HTTP的响应包中。
HTTP响应包通常以两个换行符,去划分响应头与响应正文两个部分。当用户的操作足以控制响应头的内容时,将会出现CRLF漏洞。
2、CRLF指的就是回车符和换行符,操作系统就是通过这个标识进行换行的。
回车符(CR,ASCII 13,\r,%0d)
换行符(LF,ASCII 10,\n,%0a)
3、HTTP协议中的CRLF
在HTTP协议报文中,CRLF随处可见,请求行与请求头通过一个CRLF(\r\n)隔开,请求头(header)和请求主题(body)之间通过两个CRLF(\r\n)隔开,如下图:
CRLF注入漏洞简介
由于服务端未对用户输入的参数进行过滤,攻击者可通过构造恶意的HTTP请求在其添加多余的CRLF(\r\n)来添加恶意参数和HTML代码,从而形成CRLF注入漏洞。
CRLF注入漏洞危害
1,Cookie会话固定
2,反射性XSS攻击(可过WAF)
漏洞利用(原理)
Cooki会话固定:
步骤一:在URL参数中构造%0d%0aSet-Cookie:crlf=ture
步骤二:查看HTTP响应包,发现HTTP响应头存在了Set-Cookie:crlf=true
原理分析:
查看源代码发现:当服务端对用户的输入不进行过滤和排查时,$_GET变量接受的URL会直接作为响应头中的Location字段返回,同时又因为我们在请求的URL中添加了一个CRLF,所以返回的响应头中会存在我们构造的Set-Cookie:crlf=ture参数
if(isset($_GET["url"])&&($_COOKIE["security_level"] != "1" && $_COOKIE["security_level"] != "2"))
{
//Debugging
//echo "Not sanitized:" .$_GET["url"];
header("Location:" .$_GET["url"]);
}
反射性XSS攻击:
如果此时我们在URL中将%0d%0aSet-Cookie:crlf=ture修改为%0d%0a,那么服务端返回界面将会如
CRLF注入漏洞简介
由于服务端未对用户输入的参数进行过滤,攻击者可通过构造恶意的HTTP请求在其添加多余的CRLF(\r\n)来添加恶意参数和HTML代码,从而形成CRLF注入漏洞。
CRLF注入漏洞危害
1,Cookie会话固定
2,反射性XSS攻击(可过WAF)
漏洞利用(原理)
Cooki会话固定:
步骤一:在URL参数中构造%0d%0aSet-Cookie:crlf=ture
步骤二:查看HTTP响应包,发现HTTP响应头存在了Set-Cookie:crlf=true
原理分析:
查看源代码发现:当服务端对用户的输入不进行过滤和排查时,$_GET变量接受的URL会直接作为响应头中的Location字段返回,同时又因为我们在请求的URL中添加了一个CRLF,所以返回的响应头中会存在我们构造的Set-Cookie:crlf=ture参数
if(isset(KaTeX parse error: Expected 'EOF', got '&' at position 13: _GET["url"])&̲&(_COOKIE[“security_level”] != “1” && KaTeX parse error: Expected '}', got 'EOF' at end of input: …t sanitized:" ._GET[“url”];
header("Location:" .$_GET["url"]);
}
反射性XSS攻击:
如果此时我们在URL中将%0d%0aSet-Cookie:crlf=ture修改为%0d%0a,那么服务端返回界面将会如下图:
"] != “1” && KaTeX parse error: Expected '}', got 'EOF' at end of input: …t sanitized:" ._GET[“url”];
header("Location:" .$_GET["url"]);
}
反射性XSS攻击:
如果此时我们在URL中将%0d%0aSet-Cookie:crlf=ture修改为%0d%0a,那么服务端返回界面将会如下图: