安全基础第十二天:nginx相关配置和nginx-host绕过

目录

一、nginx的动静分离

1.动静分离的原理

 2.动静分离实验(centos做为放置静态资源的服务器,ubuntu做为请求的web服务器)

(1)在centos的/usr/local/nginx/html下创建一个静态文件static

(2)进入到static创建一个style.css文件,编辑以下内容

(3)进入到nginx的配置文件下

(4)配置nginx.conf文件,配置内容如下

(5)进入到ubuntu的/usr/local/nginx/html,编辑index.html编辑以下内容

(6)分别启动centos和ubuntu的nginx

(7)测试:在物理机的浏览器上访问我们的代理服务器(192.168.191.129),如果字体变红证明成功

 二、nginx的缓存

1.原理

2.实验过程

(1)进入到我们的/usr/local/nginx/conf/下

(2)编辑我们的nginx.conf文件,内容如下

(3)进入到html下创建一个huancun文件夹

(4)启动我们的centos和ubuntu的nginx

(5)测试:访问我们的centos(192.168.191.129)查看头部,我们发现cache-status:hit证明已缓存

(6)当上述完成后在我们的的服务器查看我们缓存的文件内容

 三、缓存投毒(2022年机场的缓存投毒漏洞靶场)

1.原理

2.漏洞复现

(1)在/usr/local/下创建一个v2board文件夹

(2)进入到v2board后,编辑一个docker-compose.yml文件,内容如下

(3)编辑entrypoint.sh,内容如下

(4)运行该环境

(5)查看docker环境是否起来

(6)在浏览器输入192.168.191.128:9090,进入到我们搭建的环境

(7)注册

(8)进入到我们的docker的mysql查看我们注册的数据

(9)查看到我们注册的用户数据

(10)用自己注册的用户进行登陆

(11)打开burpsuit抓取我们的登陆页面信息

(12)修改我们的头部信息,以及我们登陆信息,为了让我们服务器授权保存redis缓存

(13)结果如下

(14)检查我们的redis是否存储我们的用户信息,如果有证明我们成功获取到了后台的管理

(5)我们访问http://192.168.191.128:9090/api/v1/admin/user/fetch,成功获取到了管理的api

 四、在centos下复现缓存投毒漏洞遇到的问题(前提是docker安装完成)

1.当我们在centos下复现出现了docker-compose up -d 拉不起来,出现以下问题

2.我们先安装依赖源

3.下载docker-compase 

4.当我们在运行docker-compose up -d的时候,出现了以下问题

5.以上问题是我们没给其权限,我们只需要给他添加权限就可以

6.再次运行,发现报一下错误

7.我们只需要开启docker就可以了

8.再次运行docker-compose up -d,成功拉取

9.个人认为原因是centos不存在docker-compose这个模块

五、总结



一、nginx的动静分离

注意: 本实验是基础反向代理基础上配置

1.动静分离的原理

当我们去访问www.baidu.com,我们的百度的web服务器会进行处理,当用户人数比较多的时候我们的请求会很多,就会造成我们的web服务器压力过大,导致性服务器超负荷运动,这些请求大部分是静态文件,一般在我们的resources/static/下,我们可以利用动静分离来缓解我们web服务器的压力,在我们的web服务器上放置我们的访问页面,在我们的代理服务器上放置我们的静态文件,通过访问我们的代理我们的服务器,就会将其转发请求我们的web服务器,请求页面资源,web服务器访问我们代理服务器上的静态资源,就完成我们的动静分离。

 2.动静分离实验(centos做为放置静态资源的服务器,ubuntu做为请求的web服务器)

(1)在centos的/usr/local/nginx/html下创建一个静态文件static

cd /usr/local/nginx/html/

mkdir static

(2)进入到static创建一个style.css文件,编辑以下内容

cd static

vim style.css

 p {color:red}

(3)进入到nginx的配置文件下

cd  ../../conf

(4)配置nginx.conf文件,配置内容如下

location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css){
    root   html/static;
    expires 7d;
}

(5)进入到ubuntu的/usr/local/nginx/html,编辑index.html编辑以下内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <p>ubuntu 192.168.191.128</p>
</body>
</html>

(6)分别启动centos和ubuntu的nginx

(7)测试:在物理机的浏览器上访问我们的代理服务器(192.168.191.129),如果字体变红证明成功

 二、nginx的缓存

1.原理

当我们访问某个服务器资源的时候,我们需要请求一段时间,服务器才会给我们响应,利用缓存机制,不仅可以缓解我们的服务器的压力,还可以加快我们对页面资源的快速获取,当我们第一次访问某个页面的时候,我么利用缓存机制将我们的页面资源缓存到本地,当我们第二次访问我们的页面的时候,我们会先访问我们的本地资源。

2.实验过程

(1)进入到我们的/usr/local/nginx/conf/下

cd /usr/local/nginx/conf/

(2)编辑我们的nginx.conf文件,内容如下

    proxy_cache_path /usr/local/nginx/html/huancun levels=1:2 keys_zone=hot_cache:128m inactive=3d max_size=2g;

# 使用名为nginx_cache的缓存空间
            proxy_cache hot_cache;
            # 对于200、206、304、301、302状态码的数据缓存1天
            proxy_cache_valid 200 206 304 301 302 1d;
            # 对于其他状态的数据缓存30分钟
            proxy_cache_valid any 30m;
            # 定义生成缓存键的规则(请求的url+参数作为key)
            proxy_cache_key $host$uri$is_args$args;
            # 资源至少被重复访问三次后再加入缓存
            proxy_cache_min_uses 3;
            # 出现重复请求时,只让一个去后端读数据,其他的从缓存中读取
            proxy_cache_lock on;
            # 上面的锁超时时间为3s,超过3s未获取数据,其他请求直接去后端
            proxy_cache_lock_timeout 3s;
            # 对于请求参数或cookie中声明了不缓存的数据,不再加入缓存
            proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
            # 在响应头中添加一个缓存是否命中的状态(便于调试)
            add_header Cache-status $upstream_cache_status;

(3)进入到html下创建一个huancun文件夹

cd ../html

mkdir huancun

(4)启动我们的centos和ubuntu的nginx

(5)测试:访问我们的centos(192.168.191.129)查看头部,我们发现cache-status:hit证明已缓存

(6)当上述完成后在我们的的服务器查看我们缓存的文件内容

cd /usr/local/nginx/html/huancun/

ls -al

 三、缓存投毒(2022年机场的缓存投毒漏洞靶场

1.原理

在后台就建全了一个api接口,我们先注册一个普通的用户,我们这个普通用户的身份存储到了我们的redis中,之后我们将这个认证信息的普通用户接口拿出来,之后我们利用这个认证信息去链接我们后台管理系统,之所以我们能进入到后台,是因为我们的redis是按照后端的认证信息进行建全的,当我们去访问它的时候他是按照是否有这个认证信息,并不去检查他是不是管理员,之后他就为我们的普通用户开放管理后台,从而导致的漏洞。

2.漏洞复现

该复现漏洞环境是在ubuntu上搭建的

(1)在/usr/local/下创建一个v2board文件夹

cd /usr/local/

mkdir v2board

(2)进入到v2board后,编辑一个docker-compose.yml文件,内容如下

version: '2'
services:
  web:
    image: vulhub/v2board:1.6.1
    ports:
     - "9090:80"
    depends_on:
     - db
     - redis
    entrypoint:
     - bash
     - /entrypoint.sh
    volumes:
     - ./entrypoint.sh:/entrypoint.sh
    command: apache2-foreground
  db:
   image: mysql:5.7
   environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=v2board
  redis:
   image: redis:7-alpine

 

(3)编辑entrypoint.sh,内容如下

#!/bin/bash
set -ex

wait-for-it db:3306 -t 300 -- echo "database is connected"
if [[ ! -e ".env" ]]; then
    echo -e "db\nv2board\nroot\nroot\nadmin@example.com\nexample123" | php artisan v2board:install
    sed -i 's/REDIS_HOST=.*/REDIS_HOST=redis/g' .env
fi

chown www-data:www-data -R /var/www/html
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
        set -- apache2-foreground "$@"
fi

exec "$@"

(4)运行该环境

docker-compose up -d

(5)查看docker环境是否起来

docker ps -a

(6)在浏览器输入192.168.191.128:9090,进入到我们搭建的环境

(7)注册

(8)进入到我们的docker的mysql查看我们注册的数据

docker exec -it abb37671d3a3 /bin/bash

mysql -uroot -proot

show databases;

use v2board;

show tables;

select * from v2_user \G

 

(9)查看到我们注册的用户数据

(10)用自己注册的用户进行登陆

curl -i -s -k -XPOST --data-binary "email=test%40qq.com&password=a123123123" http://localhost:9090/api/v1/passport/auth/login

(11)打开burpsuit抓取我们的登陆页面信息

(12)修改我们的头部信息,以及我们登陆信息,为了让我们服务器授权保存redis缓存

(13)结果如下

 

(14)检查我们的redis是否存储我们的用户信息,如果有证明我们成功获取到了后台的管理

docker exec -it 188ca92883cd /bin/sh

redis-cli

select 1

keys *

(5)我们访问http://192.168.191.128:9090/api/v1/admin/user/fetch,成功获取到了管理的api

 四、在centos下复现缓存投毒漏洞遇到的问题(前提是docker安装完成)

1.当我们在centos下复现出现了docker-compose up -d 拉不起来,出现以下问题

2.我们先安装依赖源

yum install epel-release -y

3.下载docker-compase 

sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

4.当我们在运行docker-compose up -d的时候,出现了以下问题

5.以上问题是我们没给其权限,我们只需要给他添加权限就可以

chmod +x /usr/local/bin/docker-compose

6.再次运行,发现报一下错误

7.我们只需要开启docker就可以了

systemctl restart docker

8.再次运行docker-compose up -d,成功拉取

9.个人认为原因是centos不存在docker-compose这个模块

五、总结

该漏洞可结合缓存投毒进行讲解

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值