目录
1、docker的安装
1)更新系统软件包:
yum update
2)安装 Docker 的依赖软件包:
yum install -y yum-utils device-mapper-persistent-data lvm2
3)添加 Docker 的官方存储库:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4)安装 Docker 社区版:
yum install -y docker-ce
5)启动 Docker 服务:
systemctl start docker
6)运行 docker version,查看docker ce是否安装成功:
7)查看状态,active为running则启动成功:
2、nginx配置漏洞
环境搭建:
查看运行的容器:
2.1 $uri
导致的CRLF注入漏洞
查看Nginx文档,可以发现有三个表示uri的变量:
-
$uri:解码后请求路径
-
$document_uri:解码后请求路劲
$request_uri:完整的URI(没有解码)
因为$uri
是解码以后的请求路径,所以可能就会包含换行符,也就造成了一个CRLF注入漏洞。
使用burp抓包复现:
在左侧的头部加入换行符,在右侧箭头处我们可以很清楚的看见了换行。
实际上是控制了http的head头,可以自由添加数据。
我们可以换一种 js的实现:
即这里可以执行js的代码,危险系数就增高
解决方案:
在nginx.conf中修改配置文件
location / {
return 302 https://$host$request_uri;
}
因为$uri
和$document_uri
表示的是解码以后的请求路径,不带参数;$request_uri
表示的是完整的URI(没有解码),故就不存在了。
2.2 目录穿越漏洞
这个常见于Nginx做反向代理的情况,动态的部分被proxy_pass传递给后端端口,而静态文件需要Nginx来处理。
配置文件为:
location /files{
alias /home/;
}
如果访问files…相当于访问/home/…即访问到根目录下。造成如下结果:
进而我们获得了一个任意文件下载漏洞。
解决方案:
只需要保证location和alias的值都有后缀/
或都没有这个后缀,例如:
location /files/{
alias /home/;
}