赞
踩
1. 更新系统软件包:2. 安装 Docker 的依赖软件包:
sudo yum update
3. 添加 Docker 的官方存储库:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4. 安装 Docker 社区版:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5. 启动 Docker 服务:sudo yum install -y docker-ce
6. 将 Docker 服务设置为开机自启动:
sudo systemctl start docker
7. 验证 Docker 是否成功安装:
sudo systemctl enable docker
docker --version
链接:https://pan.baidu.com/s/1gL4_ZUbY5mA-qo6sG5-yWQ?pwd=s6l9
提取码:s6l9
找到文件,进入
然后看到一大堆目录,进入nginx目录下的insecure-configuration
主要是看的yml文件,包括端口映射、文件位置、镜像的使用
然后启动docker:
docker compose up -d
用docker ps -a查看运行的容器
用户访问网站的时候浏览器有事会自动将http补全成https,或者baidu.com补成www.baidu.com
,第二种情况是为了统一用户访问的域名
为了实现这两种情况,就要从nginx获取用户请求的文件路径
有三个变量入手
$uri
$document_uri 前两个变量是表示的是
解码以后的请求路径,不带参数
$request_uri
表示的是完整的URI(没有解码)
所以在nginx配置文件中有这样一个配置:
- location / {
- return 302 https://$host$uri;
- }
当使用前两个变量的时候就会自动解码,那么思路就是将payload编码,然后让他自动解码
根据docker的配置,这里省去了nginx配置的步骤,就可以直接访问网站,这里直接抓包来看
可以看到payload中利用urlcode编码了/r/n来实现了换行,然后就成功了
解决方法也很简单,就不要解码,可以使用第三个变量
这个漏洞很简单,但是属于习惯了操作一不小心就会犯的漏洞
原理:
常见于nginx做反向代理的情况,动态文件被传给后端端口了,静态文件通常就要nginx来处理
例子:
静态文件在home目录下,该文件名为files,所以用alias设置一个别名
- location /files/{
- alias /home/;
- }
这样设置没有问题,
当用户访问http://example.com/files/readme.txt
,就可以获取/home/readme.txt
文件了
但是如果写成这样:
- #情况1:
- location /files{
- alias /home/;
- }
- #情况2:
- location /files/{
- alias /home;
- }
可以看到要么files少了/要么home少了/
再加上 ..是返回上一级目录,那么用户在输入的时候加上..就变成了home/..了
所以就会执行并返回上一级目录
进而可以获取服务器上的其他信息了
解决方法:
就按照第一种写法即可:
- location /files/{
- alias /home/;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。