NginxDeny绕过-玄武杯2025-眼见不为实

一、附件代码

# pylint: disable=missing-module-docstring,missing-function-docstring import os from flask import Flask, render_template app = Flask(__name__, template_folder="templates") @app.route("/") def index(): return render_template("index.html") @app.route("/secret") def secret(): return os.getenv("FLAG", "NSSCTF{default}") if __name__ == "__main__": app.run("0.0.0.0", 8080, debug=False)

这是一个简单的 Flask 应用,定义了两个路由:

● 根路径/:返回首页

● /secret路径:返回环境变量中的 flag 值,这显然是我们需要获取的目标

应用运行在本地 8080 端口,而 Nginx 作为反向代理监听 80 端口,将请求转发给这个 Flask 应用。

Nginx 配置:

server { listen 80; server_name localhost; location ~* ^/secret/?$ { deny all; return 403; } location ~* ^/secret/ { deny all; return 403; } location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }


● 第一个 location 块:~* ^/secret/?$ 匹配/secret或/secret/路径,使用deny all禁止访问

● 第二个 location 块:~* ^/secret/ 匹配以/secret/开头的路径,同样禁止访问

● 其他所有请求都通过proxy_pass转发到本地 8080 端口的 Flask 应用

二、漏洞分析

这个 Nginx 配置存在路径解析绕过漏洞,主要原因在于 Nginx 的正则匹配规则与后端flask实际路径处理逻辑之间存在不一致性。

1. 正则匹配的局限性:配置中使用的正则表达式^/secret/?$和^/secret/看似能覆盖所有与/secret相关的路径,但没有考虑到特殊 Unicode 字符的情况。

2. Nginx 的 Unicode 字符处理机制:Nginx 在处理 URL 中的某些 Unicode 字符时,会将其规范化或忽略,而正则匹配则是基于原始字符进行的。这种差异导致攻击者可以构造特殊 URL,既能够绕过 Nginx 的正则匹配,又能被正确解析为/secret路径。

3. 关键漏洞点:当请求中包含某些特殊 Unicode 字符时,例如 U+2026(水平省略号…)、U+0085(下一行字符)等,Nginx 的正则匹配会认为这不是/secret路径而允许访问,但其内部路径解析机制会忽略这些特殊字符,最终仍然将请求转发到/secret路径。

也就是说,Nginx 使用正则表达式匹配 URL。如果我们在 /secret 后面加上特定的 Unicode 字符(如 \x85),Nginx 会认为 /secret\x85 不匹配 ^/secret/?$(因为多了一个字符),也不匹配 ^/secret/(因为 \x85 不是 /),从而放行请求。当请求转发到后端的 Python Flask应用时,Python 的 WSGI 层或 Flask 框架在处理 URL 时,会将 \x85 (Next Line) 或 \xa0 (Non-breaking space) 等字符视为空白符或无效字符进行“标准化”处理,最终将其解析为 /secret,从而成功执行代码并返回 Flag。

三、漏洞利用

带上路径/secret访问,bp抓包拦截。改成a0也行

四、总结

考点:Nginx 路径解析差异绕过 / Unicode 标准化漏洞。
• 核心机制:
• Nginx 是基于正则 (Regex) 匹配字符串的,对特殊字符非常敏感。
• Python (Flask/Werkzeug) 是基于语义解析 URL 的,会在路由匹配前进行解码和清理。
• 利用 \x85 (Next Line) 或 \xa0 (NBSP) 等高位 Unicode 字符,可以骗过 Nginx 的正则拦截,同时让后端应用将 \x85 (Next Line) 或 \xa0 (Non-breaking space) 等字符视为空白符或无效字符进行“标准化”处理,“视而不见”地解析出正确路径。

不同版本的Nginx搭配后端做反代时的deny绕过参考:

http://missmoon.cn/archives/nnginx-deny

https://xz.aliyun.com/news/14403

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1119529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DRIS】颠覆隐蔽通信!DRIS技术实现同步检测与无源干扰,无需信道知识和额外功耗【附MATLAB代码】

颠覆隐蔽通信!DRIS技术实现同步检测与无源干扰,无需信道知识和额外功耗 文章来源 微信公众号 EW Frontier 一、文章题目 基于迪斯科可重构智能表面(DRIS)的隐蔽通信同步检测与干扰技术 二、摘要 隐蔽通信相比密码学和物理层…

不同就业方向(如AI、网络安全、前端开发)的具体学习路径和技能要求是什么?

了解不同就业方向的具体要求,确实是做好职业规划的关键一步。下面这个表格汇总了AI、网络安全和前端开发这三个热门方向的概况,帮你快速建立整体印象。对比维度​AI(人工智能)​网络安全​前端开发​核心岗位举例​算法工程师、数…

引领企业发展:走进标杆企业参观游学考察的好处

在当前瞬息万变的商业环境中,企业面临着一个挑战:如何在快速发展的行业发展中保持竞争力,持续创新,同时还能提高员工的技能和才能?答案可能比您想象的要简单——标杆研学游学。标杆研学游学,一种通过实地考…

信创云渲染:助力数字时代自主创新与高效协作

在信息技术应用创新发展的浪潮下,各行各业正加速推进数字化、智能化转型。其中,图形图像处理与实时交互的高负载需求日益凸显,特别是在工业设计、建筑设计、仿真培训、数字孪生、互动媒体等领域。传统的本地渲染模式受限于终端算力、部署成本…

20260106给荣品RD-RK3588S-AHD开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配hdmi0输出

20260106给荣品RD-RK3588S-AHD开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配hdmi0输出 2026/1/6 17:44缘起:荣品PRO-RK3566开发板适配Rockchip原厂的Buildroot【linux-5.10】系统时,eth0是默认隐藏的。 查询/询问DeepSeek之后,可…

Instagram账号风控全解:深度剖析封号原因、申诉流程与长效预防策略

近年来,Instagram的风控系统日趋严格,账号被封成为许多用户,无论是个人用户、多账号运营者还是跨境电商与广告投手,都可能突然面临的困扰:明明正常操作,却突然收到账号禁用通知?新注册的账号毫无…

2026必备!专科生毕业论文必备!10个AI论文平台深度测评

2026必备!专科生毕业论文必备!10个AI论文平台深度测评 2026年专科生论文写作新选择:AI平台测评指南 随着人工智能技术的不断进步,越来越多的专科生开始借助AI工具辅助毕业论文的撰写。然而,面对市场上琳琅满目的AI论文…

基于微信小程序的毕业设计项目:个性化英语学习小程序+毕业论文+答辩ppt全套

博主介绍: CSDN毕设辅导第一人、靠谱第一人、csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客优秀创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:…

2026年最佳替代数据提供商(顶级平台对比)

TLDR: 另类数据市场由向合规性、人工智能驱动的分析和数据粒度的转变所定义。在2026年,最好的另类数据提供商是那些提供透明数据来源和专业领域专业知识的公司。我们的顶级平台——YipitData、FactSet和Eagle Alpha——根据其卓越的数据质量、实时交付和稳健的合规框…

2026研究生必备!10个降AI率工具测评榜单

2026研究生必备!10个降AI率工具测评榜单 研究生必备!2026年降AI率工具测评榜单出炉 随着学术规范日益严格,AI生成内容检测技术不断升级,越来越多的研究生在论文写作过程中面临“AI率过高”的问题。无论是初稿还是修改后的版本&am…

聚焦三大资源整合型发稿平台,深度测评其批量曝光效能

在信息粉尘化的营销环境下,企业品牌声音的突围愈发困难。单点、零散的媒体投放不仅效率低下,其不可控的成本与模糊的效果也令营销决策者却步。于是,能够提供“一键发布,多平台同步”的资源整合型软文发稿平台,已成为企…

SoulX-Podcast 本地部署与WebUI体验教程(支持方言播客生成)

SoulX-Podcast 本地部署与WebUI体验教程(支持方言播客生成) 关键词:SoulX-Podcast、AI播客生成、TTS、多说话人对话、方言支持、Gradio WebUI 一、项目简介 SoulX-Podcast 是 Soul AI Lab 团队开源的一个高保真播客生成推理代码库&#xff0c…

亲测好用!9款AI论文平台测评:研究生毕业论文必备

亲测好用!9款AI论文平台测评:研究生毕业论文必备 2026年AI论文平台测评:为何值得一看 在当前学术研究日益数字化的背景下,研究生群体对高效、可靠的论文辅助工具需求愈发迫切。无论是选题构思、文献检索,还是内容撰写与…

04.深入闭包和js函数的this指向跟规则

闭包的内存泄漏测试 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </…

04.深入闭包和js函数的this指向跟规则

闭包的内存泄漏测试 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </…

大模型面试 请分别说说你对 DeepSeek -V3和 DeepSeek -R1的理解,它们在架构或训练策略上有何关键差异?

1.请分别说说你对 DeepSeek -V3和 DeepSeek -R1的理解&#xff0c;它们在架构或训练策略上有何关键差异&#xff1f; 已思考 12s 下面按“我怎么理解它是什么 / 关键技术点 / 与另一者的差异”来分别讲 DeepSeek-V3 和 DeepSeek-R1&#xff0c;并总结它们在架构与训练策略上的…

java BIO、NIO、AIO用法样例

1. BIO (Blocking I/O) - 同步阻塞 I/O BIO 是传统的网络编程模型&#xff0c;每个连接对应一个线程&#xff0c;当线程执行读/写操作时会被阻塞&#xff0c;直到数据就绪。 示例&#xff1a;BIO 服务器 import java.net.*; import java.io.*;public class BioServer {publi…

java垃圾收集 minorgc majargc fullgc

核心概念总览 这三种 GC 类型的本质区别在于回收的堆内存区域和触发原因。GC 类型别名回收区域触发原因特点Minor GCYoung GC只回收年轻代 (Eden Survivor)Eden 区空间不足非常频繁&#xff0c;速度通常很快&#xff0c;使用复制算法Major GCOld GC只回收老年代老年代空间不足…

基于RK3399Pro与RK3568的车载防撞方案:为货车泥头车安全护航

rk3399pro&#xff0c;rk3568&#xff0c;车载方案设计&#xff0c;4路AHD-1080P摄像头输入&#xff0c;防撞识别&#xff0c;助力货车泥头车安全运输&#xff01;在货运行业中&#xff0c;货车与泥头车的安全运输至关重要。今天咱就聊聊基于RK3399Pro和RK3568芯片的车载方案设…