百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

中间件安全—Nginx常见漏洞_nginx算中间件吗

off999 2025-02-20 17:28 15 浏览 0 评论

1.前言

??在上篇中间件安全—Apache常见漏洞中,并未对中间件漏洞进行解释,这里补充一下。

中间件安全—Apache常见漏洞

1.1.中间件漏洞概念

??所谓的中间件漏洞就是并非是由于代码程序上设计存在缺陷而导致的漏洞,而是属于应用部署中环境配置不当或使用不当而导致的漏洞,同时这方面的漏洞也是最容易被管理员忽略的一部分。

??同时不单单存在中间件安全,比如web服务器安全、web容器安全等等,还有一些其它常见的组件,都可能存在相应的漏洞。

1.2.服务器、中间件、容器基本概念

??web服务器:web服务器用于提供http服务,即向客户端返回信息,其可以处理HTTP协议,响应针对静态页面或图片的请求,控制页面跳转,或者把动态请求委托其它程序(中间件程序)等。

??web中间件:web中间件用于提供系统软件和应用软件之间的连接,以便于软件各部件之间的沟通,其可以为一种或多种应用程序提供容器。

??web容器:web容器用于给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,是中间件的一个组成部分,它实现了对动态语言的解析。比如tomcat可以解析jsp,是因为其内部有一个jsp容器。

1.3.常见的组件

??web服务器:IIS、Apache、nginx、tomcat、weblogic、websphere等。

??web中间件:apache tomcat、BEA WebLogic、IBM WebSphere等。

??web容器:JSP容器、SERVLET容器、ASP容器等。

2.Nginx常见漏洞

??一下漏洞环境均使用Vulhub一键搭建漏洞测试靶场,在靶场中输入Nginx即可查询到相应的靶场。

2.1.CRLF注入漏洞

2.1.1.漏洞原理

??Nginx会将$uri进行解码,导致传入%0d%0a即可引入换行符,造成CRLF注入漏洞。

??错误的配置文件示例(原本的目的是为了让http的请求跳转到https上):

location / {
    return 302 https://$host$uri;
}

??我们一旦在请求路径内添加换行符的urlcode编码,就可以将其混到返回的数据包内起到修改返回数据的作用。甚至可以让恶意语句进入返回体内部引发更严重的XSS攻击。

2.1.2.漏洞复现

2.1.2.1.注入Set-Cookie头

??我们将请求中插入编码,就可以注入Set-Cookie头。

payload:http://your-ip:8080/%0d%0aSet-Cookie:%20a=1

2.1.2.2.XSS弹窗

??我们发送两个连续的换行\r\n后,可以直接修改返回报文的返回体。插入js代码引发xss。

payload:http://your-ip:8080/%0d%0a%0d%0a

2.2.目录穿越漏洞

2.2.1.漏洞原理

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

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

location /files {
    alias /home/;
}

??但我们注意到/files没有加后缀/,而alias设置的/home/是有后缀/的,这个/就导致我们可以从/home/目录穿越到他的上层目录。

2.2.2.漏洞复现

2.2.2.1.访问网页

http://your-ip:8081

2.2.2.2.目录穿越

??通过使用下列的payload就可以成功穿越到根目录。

payload:http://your-ip:8081/files../

2.3.add_header被覆盖

2.3.1.漏洞原理

??Nginx配置文件子块(server、location、if)中的add_header,将会覆盖父块中的add_header添加的HTTP头,造成一些安全隐患。

??如下列代码,整站(父块中)添加了CSP头:

add_header Content-Security-Policy "default-src 'self'";
add_header X-Frame-Options DENY;

location = /test1 {
    rewrite ^(.*)$ /xss.html break;
}

location = /test2 {
    add_header X-Content-Type-Options nosniff;
    rewrite ^(.*)$ /xss.html break;
}

??但/test2的location中又添加了X-Content-Type-Options头,导致父块中的add_header全部失效。

2.3.2.漏洞复现

2.3.2.1.访问网页

http://your-ip:8082

2.3.2.2.触发XSS漏洞

??这里由于新的一点的浏览器都进行了一些过滤,所以导致无法弹出。

payload:http://your-ip:8082/test2#

2.4.解析漏洞

2.4.1.漏洞原理

cgi.fix_pathinfo=1 #php.ini --- 在php.ini中开启路径修复功能
security.limit_extensions = .php .jpg #php-fpm.conf --- 在php-fpm模块中开启了.jpg的php解析

??这二者合在一起,在网页有文件上传功能时,就会触发上传漏洞,总结来说漏洞成因就是同时开启路径修复和图片后缀名解析

2.4.2.漏洞复现

2.4.2.1.访问图片

??目前来看我们看到还是一张图片。

http://your-ip/uploadfiles/nginx.png

2.4.2.2.添加后缀

??我们在图片的链接后面添加/.php来进行解析,通过添加后的解析效果来看,已经成功的将图片解析成php文件了。

http://your-ip/uploadfiles/nginx.png/.php

2.4.2.3.访问上传界面

http://your-ip/index.php

2.4.2.4.上传文件

??这里我准备了一个图片马,当然图片马有很多,将代码写入图片马中即可,然后上传。

??这里可以看到,上传后系统将我的图片重命名为:
f47454d1d3644127f42070181a8b9afc.jpg那么到时候访问的时候就使用新的名字来访问。

2.4.2.5.访问上传的图片

??可以看到目前我上传的就是一张百度的图片,但是在图片中插入了图片马,我们对其进行解析试试

http://your-ip/uploadfiles/f47454d1d3644127f42070181a8b9afc.jpg

2.4.2.6.解析图片马

??可以看到成功解析了图片,这里我之前上传的图片马一点小问题,所以修改了一些,整体不影响效果。

http://your-ip/uploadfiles/f47454d1d3644127f42070181a8b9afc.jpg.php

相关推荐

Python钩子函数实现事件驱动系统(created钩子函数)

钩子函数(HookFunction)是现代软件开发中一个重要的设计模式,它允许开发者在特定事件发生时自动执行预定义的代码。在Python生态系统中,钩子函数广泛应用于框架开发、插件系统、事件处理和中...

Python函数(python函数题库及答案)

定义和基本内容def函数名(传入参数):函数体return返回值注意:参数、返回值如果不需要,可以省略。函数必须先定义后使用。参数之间使用逗号进行分割,传入的时候,按照顺序传入...

Python技能:Pathlib面向对象操作路径,比os.path更现代!

在Python编程中,文件和目录的操作是日常中不可或缺的一部分。虽然,这么久以来,钢铁老豆也还是习惯性地使用os、shutil模块的函数式API,这两个模块虽然功能强大,但在某些情况下还是显得笨重,不...

使用Python实现智能物流系统优化与路径规划

阅读文章前辛苦您点下“关注”,方便讨论和分享,为了回馈您的支持,我将每日更新优质内容。在现代物流系统中,优化运输路径和提高配送效率是至关重要的。本文将介绍如何使用Python实现智能物流系统的优化与路...

Python if 语句的系统化学习路径(python里的if语句案例)

以下是针对Pythonif语句的系统化学习路径,从零基础到灵活应用分为4个阶段,包含具体练习项目和避坑指南:一、基础认知阶段(1-2天)目标:理解条件判断的逻辑本质核心语法结构if条件:...

[Python] FastAPI基础:Path路径参数用法解析与实例

查询query参数(上一篇)路径path参数(本篇)请求体body参数(下一篇)请求头header参数本篇项目目录结构:1.路径参数路径参数是URL地址的一部分,是必填的。路径参...

Python小案例55- os模块执行文件路径

在Python中,我们可以使用os模块来执行文件路径操作。os模块提供了许多函数,用于处理文件和目录路径。获取当前工作目录(CurrentWorkingDirectory,CWD):使用os....

python:os.path - 常用路径操作模块

应该是所有程序都需要用到的路径操作,不废话,直接开始以下是常用总结,当你想做路径相关时,首先应该想到的是这个模块,并知道这个模块有哪些主要功能,获取、分割、拼接、判断、获取文件属性。1、路径获取2、路...

原来如此:Python居然有6种模块路径搜索方式

点赞、收藏、加关注,下次找我不迷路当我们使用import语句导入模块时,Python是怎么找到这些模块的呢?今天我就带大家深入了解Python的6种模块路径搜索方式。一、Python模块...

每天10分钟,python进阶(25)(python进阶视频)

首先明确学习目标,今天的目标是继续python中实例开发项目--飞机大战今天任务进行面向对象版的飞机大战开发--游戏代码整编目标:完善整串代码,提供完整游戏代码历时25天,首先要看成品,坚持才有收获i...

python 打地鼠小游戏(打地鼠python程序设计说明)

给大家分享一段AI自动生成的代码(在这个游戏中,玩家需要在有限时间内打中尽可能多的出现在地图上的地鼠),由于我现在用的这个电脑没有安装sublime或pycharm等工具,所以还没有测试,有兴趣的朋友...

python线程之十:线程 threading 最终总结

小伙伴们,到今天threading模块彻底讲完。现在全面总结threading模块1、threading模块有自己的方法详细点击【threading模块的方法】threading模块:较低级...

Python信号处理实战:使用signal模块响应系统事件

信号是操作系统用来通知进程发生了某个事件的一种异步通信方式。在Python中,标准库的signal模块提供了处理这些系统信号的机制。信号通常由外部事件触发,例如用户按下Ctrl+C、子进程终止或系统资...

Python多线程:让程序 “多线作战” 的秘密武器

一、什么是多线程?在日常生活中,我们可以一边听音乐一边浏览新闻,这就是“多任务处理”。在Python编程里,多线程同样允许程序同时执行多个任务,从而提升程序的执行效率和响应速度。不过,Python...

用python写游戏之200行代码写个数字华容道

今天来分析一个益智游戏,数字华容道。当初对这个游戏颇有印象还是在最强大脑节目上面,何猷君以几十秒就完成了这个游戏。前几天写2048的时候,又想起了这个游戏,想着来研究一下。游戏玩法用尽量少的步数,尽量...

取消回复欢迎 发表评论: