首页 > 系统相关 >Nginx的alias指令引发的漏洞

Nginx的alias指令引发的漏洞

时间:2023-01-08 23:44:06浏览次数:47  
标签:alias www 漏洞 upload Nginx html static var

前言

一开始看到alias都不知道是什么,我们先来学习一下

Nginx以其高性能著称,常用作前端反向代理服务器。同时nginx也是一个高性能的静态文件服务器。通常都会把应用的静态文件使用nginx处理。

配置nginx的静态文件有两个指令,一个root,另一个就是alias

配置用法

先看root的用法

location /request_path/image/ {
	root /local_path/image/;
}

这样配置的结果就是当客户端请求 /request_path/image/cat.png 的时候,

Nginx把请求映射为 /local_path/image/request_path/image/cat.png

再看alias的用法

location /request_path/image/ {
	alias /local_path/image/;
}

这时候,当客户端请求 /request_path/image/cat.png 的时候,Nginx把请求映射为/local_path/image/cat.png

我们接下来详细看一下区别,项目目录如下:

root:/var/www/html
./
├── 403.html
├── 404.html
├── index.html
├── static
│   │ 
│   └── stc.jpg
└── upload
    └── up.png

root指令

[root]
语法:root path
默认值:root html
配置段:http、server、location、if

root是指定项目的根目录,不仅可以用于location还可以用于server等,如果location没有指定,会往其外层的serverhttp中寻找继承

现在配置项如下:

location /static {
	root /var/www/html/static;
}

我们现在访问http://127.0.0.1/static/stc.jpg,发现并不能显示图片,通过查看error.log发现,我们最后访问的地址是/var/www/html/static/static/stc.jpg,根据一开始的说法,其实就是将访问的地址进行拼接了上去,即

127.0.0.1 == /var/www/html/static
url是/static/stc.jpg
拼接后就是/var/www/html/static/static/stc.jpg

所以我们只需要将最后的static删掉即可

location /static {
	root /var/www/html;
}

也就是

url:127.0.0.1/static/stc.jpg
127.0.0.1 == /var/www/html
url是/static/stc.jpg
拼接后就是/var/www/html/static/stc.jpg

这里要说明一下斜杠/的问题,如果我们多加一个斜杠/

location /static/ {
	root /var/www/html;
}

这样一来最后拼接后变成了这样/var/www/html/static//stc.jpg,这样并不会影响我们访问资源,因为在nginx中,多个斜杠/和一个斜杠/是等价的,所以无需多虑

但是如果我们这样改配置文件

location static/ {
	root /var/www/html;
}

我们如果不仔细想,访问http://127.0.0.1/static/stc.jpg

这个拼接后将会是/var/www/htmlstatic/stc.jpg,但是事实不是如此,实际上这里并不会匹配到static/

仔细观察知道url中的是/static,所以这里的配置相当于没有

alias指令

[alias]
语法:alias path
配置段:location

对于root操作上很简单,只需把root地址替换成host地址就是文件所在的真实地址了。对于alias,它并不是替换匹配后url地址,而是替换匹配部分url

location /upload {
	alias /var/www/html;
}

访问http://127.0.0.1/upload/up.png访问失败

查看error.log我们得知最后访问的是/var/www/html/up.png

可见alias模式并不是拼接,而是匹配后直接替换,alias这个词字面意思是别名,顾名思义就是换个名字,实际上就是替换了规则里匹配的url地址换成alias中的路径。例如:

url:127.0.0.1/upload/up.png
匹配:127.0.0.1/upload
=>替换为=> /var/www/html
最终访问:/var/www/html/up.png

我们需要修改配置为

location /upload {
	alias /var/www/html/upload;
}

这样我们就可以正常访问了

alias引发的漏洞

刚刚我们说了root中的斜杠并没有什么影响,但是我们尝试一下在alias中也多加一个斜杠/

例如:

location /upload/ {
	alias /var/www/html/upload;
}

这样我们继续访问http://127.0.0.1/upload/up.png,我们访问的将是

url:127.0.0.1/upload/up.png
匹配:127.0.0.1/upload/
=>替换为=> /var/www/html/upload
最终访问:/var/www/html/uploadup.png

我们并没有uploadup.png文件的存在,所以就导致没有访问成功

nginx目录穿越漏洞原理

如果 location 路径忘记加 / 结尾, 同时开启了 autoindex 目录共享功能,将造成一个目录穿越漏洞。

当配置为:

location /upload {
	attoindex on;
	alias /upload/;
}

image-20220107190026642

那么当我们访问 /upload../ 时,nginx实际处理的路径时 /upload/../ ,从而实现了穿越目录,要修复这个漏洞只需要把location使用/闭合就好

这里说一下autoindex配置项的作用

nginx的配置中autoindexon
访问目录
img
可以看到目录

nginx的配置中autoindexoff
再次访问就是403了,并不能看到所有的文件了。

标签:alias,www,漏洞,upload,Nginx,html,static,var
From: https://www.cnblogs.com/seizer/p/17035771.html

相关文章

  • Apache Log4j2 RCE漏洞复现
    看我看我,有没有大佬悄咪咪的给我个exp打自己过过瘾漏洞描述ApacheLog4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日......
  • XXE漏洞
    XXE漏洞的学习XXE:XMLExternalEntity即外部实体,从安全角度理解成XMLExternalEntityattack外部实体注入攻击(那为啥不叫XEE)。对于XXE想要真正的了解它,就需要先来了......
  • Phar反序列化漏洞
    前言通常我们在利用反序列化漏洞的时候,只能将序列化后的字符串传入unserialize(),随着代码安全性越来越高,利用难度也越来越大。但是利用phar文件会以反序列化的形式存......
  • Flask框架及其漏洞学习
    Flask是什么?Flask是一个相对于Django而言轻量级的Web框架,是Python开发的一个基于Werkzeug和Jinja2的web开发微框架,它的优势是极其简洁,但又非常灵活,而且容易学习和应用。......
  • nginx: [emerg] "auth_basic" directive is duplicate
    错误信息nginx:[emerg]"auth_basic"directiveisduplicateinphpmyadmin.conf:14nginx:configurationfilenginx.conftestfailed根原因phpmyadmin开启了ss......
  • Struts2系列漏洞复现汇总-持续更新中
    Struts2漏洞目录struts2漏洞S2-001(CVE-2007-4556)(已完成)struts2漏洞S2-003(已完成)struts2漏洞S2-005(已完成)struts2漏洞s2-007(已完成)struts2漏洞S2-008......
  • nginx 代理转发 传递真实 ip 地址
    一、实际问题在实际的项目开发和部署中,客户端并不是直接访问到服务器的服务的,而是通过反向代理的转发,发送到服务器端实现服务访问。比如通过反向代理实现路由/负载均衡等策......
  • Nginx代理配置只允许指定IP访问
    在使用Nginx时,有时只想要指定的IP进行访问,其余IP都需要禁止,今天就来说一下,Nginx如何配置允许、禁止指定Ip访问location/{indexindex.jsp;proxy_next_upstreamht......
  • 中间件漏洞——ngnix
    文件解析漏洞由php配置不当产生的漏洞,与nginx版本无关php.ini文件中的cgi.fix_pathinfo的值为1时,fastcgi不认识用户上传的畸形文件会修复路径再由php-fpm.conf中的secur......
  • keepalived+nginx二进制安装
    keepalived二进制安装1、下载keepalived安装包:keepalived下载地址:https://www.keepalived.org/download.htmlwgethttp://www.keepalived.org/software/keepalived-2.0......