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的安装:
1. 上传安装包:
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
4. 配置Docker的镜像加速器:
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://w2plr83n.mirror.aliyuncs.com"]
}
5. 刷新守护进程:
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 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
访问: http://192.168.188.135:91/
2. 列举正在运行的容器:
docker ps
列举所有的容器(包括停止的)
docker ps -a
3. 停止、启动、重启容器:
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(容器的名称)
CRLF注入漏洞
CRLF简介
CRLF指的就是回车符(CR,ASCII-13,\r,%0d)和换行符(LF,ASCII-10,\n,%0a),操作系统就是通过这个标识进行换行的,相当于我们键盘的回车键。
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<script>alert('xss')</script>
,那么服务端返回界面将会如下图: