Nginx 配置错误导致漏洞

2023-09-19 08:00:00

Nginx 配置错误导致漏洞

运行成功后,Nginx将会监听8080/8081/8082三个端口,分别对应三种漏洞。

在这里插入图片描述

Mistake 1. CRLF注入漏洞

漏洞描述

CRLF是”回车 + 换行”(\r\n)的简称,,其十六进制编码分别为0x0d和0x0a。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码。CRLF漏洞常出现在Location与Set-cookie消息头中,可造成固定会话漏洞和反射型xss漏洞。

漏洞原理
Nginx会将$uri进行解码,导致传入%0d%0a即可引入换行符,造成CRLF注入漏洞。
错误的配置文件示例:
location / {
    return 302 https://$host$uri;
}
漏洞复现
访问页面,并抓包
http://10.9.75.198:8080/%0d%0aSet-Cookie:%20a=1

在这里插入图片描述

再次注入:
%0d%0a%0d%0a<script>alter(1)</script>
http://10.9.75.198:8080/%0d%0a%0d%0a<script>alter(1)</script>

在这里插入图片描述

漏洞修复

过滤\r 、\n之类的换行符,避免输入的数据污染到其他HTTP头

Mistake 2. 目录穿越漏洞

漏洞描述

目录穿越漏洞常见于Nginx做反向代理的情况,动态的部分被proxy_pass传递给后端端口,而静态文件需要Nginx来处理。假设静态文件存储在/home/目录下,而该目录在url中名字为files,那么就需要用alias设置目录的别名。

漏洞原理
Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。

错误的配置文件示例(原本的目的是为了让用户访问到/home/目录下的文件):

location /files {
    alias /home/;
}
漏洞复现
http://10.9.75.198:8081/files../

在这里插入图片描述

漏洞修复
使用/闭合/files,形成/files/

在这里插入图片描述

在这里插入图片描述

重启nginx服务,再次访问http://10.9.75.198/files../,提示404,说明该漏洞不存在。

在这里插入图片描述

更多推荐

VMware vCenter 从6.7跨版本升级至7.0U3N

本文尝试使用vCenterServerAppliance管理界面(VAMI)进行对vCenterServerAppliance7应用进行小版本升级,从6.7.0.47000升级到7.0.3.01600(7.0U3N)。一、升级前的准备工作1、检查当前运行环境(当前为6.7.0.47000)2、核实当前ESXi版本均在兼

提高接口自动化测试效率:使用 JMESPath 实现断言和数据提取!

前言做接口自动化,断言是比不可少的。如何快速巧妙的提取断言数据就成了关键,当然也可以提高用例的编写效率。笔者在工作中接触到了JMESPath,那到底该如何使用呢?带着疑惑一起往下看。JMESPath是啥?JMESPath是一种用于查询和转换JSON数据的简洁、强大的查询语言。它提供了一种灵活的方式来从复杂的JSON结构

思腾云计算

近年来,游戏行业发展迅猛,市场容量不断扩大。从游戏产业发展来看,玩家对于游戏内容和体验的需求不断攀升。那如何在同质化的游戏市场,通过AI来提高游戏探索和交互的趣味度?行业存在以下痛点:1、游戏迭代速度加快,如何加速研发创新,提供多元化的游戏体验;2、在线多人竞技类游戏因玩家能力不均,均衡对局匹配耗时长,对局质量差,再加

Spring注解家族介绍: @RequestMapping

前言:今天我们来介绍@RequestMapping这个注解,这个注解的内容相对来讲比较少,篇幅会比较短。目录前言:@RequestMapping应用场景:总结:@RequestMapping@RequestMapping是一个用于映射HTTP请求到处理方法的注解,它可以用在控制器类和处理方法上。当请求到达服务器时,根据

lv4 嵌入式开发-9 静态库与动态库的使用

目录1库的概念2库的知识3静态库特点4静态库4.1静态库创建4.2编译生成目标文件4.3创建静态库hello4.4查看库中符号信息4.5链接静态库5共享库特点6共享库6.1共享库创建6.2编译生成目标文件6.3创建共享库common6.4为共享库文件创建链接文件6.5编写应用程序6.6编译test.c并链接共享库lib

Java基于SpringBoot的漫画网站,附源码,教程

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌今天为大家带来的是基于SpringBoot+Vue的漫画之家系统,亲测可用,可以作为课程设计,毕业设计适用。文章目录1、前言介绍2.技术栈3系统分析3.

爬虫获取接口数据

上一讲讲的是获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获得,下面我就来讲讲如何爬取这类数据。以巨潮资讯网爬取比亚迪企业年报为例。正常人的操作打开巨潮资讯网官网找到比亚迪的公告在分类里面选择筛选信息,找到自己想要的信息爬虫的思路获取请求

Vue 使用vue-pdf 显示pdf文件 切换页面 缩放 全屏 自动播放等

<template><divid="container"><!--上一页、下一页--><divclass="right-btn"><div@click="toFullOrExit"class="turn-btn"><span>{{isFull==1?"取消全屏":"全屏"}}</span></div><div@clic

ubuntu 22.04运行opencv4的c++程序遇到的问题

摘要:本文介绍一下在ubuntu系统中,运行一个最简单的opencv4程序都出问题的解决方法,并对其基本原理作简单阐述。解决问题的方法有很多,本文只提供其中一种。opencv版本是4.2.0,ubuntu版本是20.04查询opencv版本的指令是pkg-config--modversionopencv4,pkg-co

CRM客户管理系统主要用途

对于大多数企业而言业绩就是生命线,因此销售环节在企业管理过程中意义重大。面对愈发内卷的市场竞争企业就要借助CRM销售管理系统改善各个环节存在的漏洞,占据优势。那么,销售管理系统的用途有哪些,接下来我们从下面3个功能来介绍。1.客户管理通过销售管理系统中的商机管理等功能可以将系统中的客户信息关联整合,一方面保证客户数据安

性能测试知多少?怎样开展性能测试

看到好多新手,在性能需求模糊的情况下,随便找一个性能测试工具,然后就开始进行性能测试了,在这种情况下得到的性能测试结果很难体现系统真实的能力,或者可能与系统真实的性能相距甚远。与功能测试相比,性能测试在技术层面具有更大的复杂性。在以往的测试流程中,性能测试只是测试流程的一部分,是系统或验收测试的一个可选项。但随着测试技

热文推荐