Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)

漏洞简介

在Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7版本中存在错误解析用户请求的url信息,从而导致文件代码执行,权限绕过等问题。

适用环境

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7版本

漏洞成因

漏洞成因大概为Nginx本身并不能解析PHP代码,只能通过加载PHP模块来进行解析代码。通过正则表达式来匹配以.php结尾的请求路径交给PHP模块去解析,但是Nginx在加载文件名时遇到‘\0’便会停止读取‘\0’后面的内容,于是通过以上思路,我们在进行文件上传的时候,文件名应该设置为1.gif,在进行访问时,访问文件应为1.gif'\0'.php,通过正则表达式匹配.php后缀将请求路径交给PHP模块,PHP模块在读取文件名时遇到\0便不会读取后面的.php,从而解析文件为1.gif,但是在实际过程中,Nginx在读取文件名碰到'\0'便会出现报错并停止执行,当我们在'\0'前面加入空格后,Nginx便会跳过报错处理,这样便可以成功利用'\0'进行截断,因此我们的请求路径应该为1.gif[0x20][0x00].php,Nginx在读取文件名为1.gif[0x20],因此我们在上传文件时应该上传文件名1.gif[0x20]

具体解释可查看参考文章

  • '\0'为字符串结束标志,十六进制表示为0x00
  • 空格字符,十六进制表示为0x20

环境搭建

环境路径

/vulhub/nginx/CVE-2013-4547

启动命令

docker-compose up -d

查看环境配置

docker-compose up -d

访问界面

漏洞复现

构建上传文件内容

<?php phpinfo();?>

对上传文件进行抓包,在文件名后面添加空格



成功上传



抓取访问1.gif.php文件的数据包,发送至repeater模块



在访问路径gif后通过十六进制视角右键点击添加字节添加空格和'\0'的十六进制数



发送数据包查看回显内容,1.gif[0x20]中的代码已被执行,将phpinfo()代码换成后门代码即可连接后门。

漏洞总结

利用该漏洞需要满足

  1. Nginx版本满足0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7版本
  2. 文件上传点
  3. 可以上传带空格文件名的文件
  4. 服务器没有做文件重命名

修复建议

  1. 升级最新版Nginx
  2. 过滤空格
  3. 文件重命名
  4. 取消文件目录执行权限
  5. 云存储

参考文献

[1]Nginx 文件名逻辑漏洞(CVE-2013-4547)

[2]Nginx 文件名逻辑漏洞(CVE-2013-4547)漏洞复现

[3]Nginx服务漏洞详解

以上内容仅作学习,如有瑕疵或错误,欢迎指正,感谢阅读。

Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)的更多相关文章

  1. nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现

    nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现 一.漏洞描述 这个漏洞其实和代码执行没有太大的关系,主要原因是错误地解析了请求的URL,错误地获取到用户请求的文件名,导致出现权限绕过.代 ...

  2. 14.Nginx 文件名逻辑漏洞(CVE-2013-4547)

    由于博主在渗透网站时发现现在Nginx搭建的网站是越来越多 所以对Nginx的漏洞来一个全面性的复习,本次从Nginx较早的漏洞开始分析. 2013年底,nginx再次爆出漏洞(CVE-2013-45 ...

  3. Nginx 文件名逻辑漏洞(CVE-2013-4547)

    影响版本 Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7 漏洞成因 这个漏洞其实和代码执行没有太大关系,其主要原因是错误地解析了请求的URI,错误地获取到用户请求的文件名,导 ...

  4. WEB安全--逻辑漏洞

    业务逻辑问题是一种设计缺陷.逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误.精明的攻击者会特别注意目标应用程序采用的逻辑方式,设法了解设计者与开发者做出的可能假设,然后考虑 ...

  5. 一个安邦逻辑漏洞爆破密码的py脚本

    漏洞地址: 安邦保险集团存在逻辑漏洞可遍历用户ID暴力破解用户原始密码进而重置用户密码(附脚本) http://www.wooyun.org/bugs/wooyun-2010-0119851 脚本PO ...

  6. IIS短文件名泄露漏洞危害及防范方法

    危害级别:轻微 IIS短文件名泄露漏洞 WASC Threat Classification 描述: Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件 ...

  7. [SRC初探]手持新手卡挖SRC逻辑漏洞心得分享

    文章来源i春秋 本文适合新手参阅,大牛笑笑就好了,嘿嘿末尾有彩蛋!!!!!!!!!!!!!!!!!本人参加了本次"i春秋部落守卫者联盟"活动,由于经验不足,首次挖SRC,排名不是那 ...

  8. IIS文件名解析漏洞扼要分析

    概括: 从技术角度分析IIS6文件名解析漏洞的原理与IIS7的相关情况. a.IIS6错误解析文件类型现象 1.当WEB目录下,文件名以 xxx.asp;xxx.xxx 来进行命名的时候,此文件将送交 ...

  9. WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  10. IIS短文件名泄露漏洞危害及防范方法(转)

    攻击方法(转自http://blog.sina.com.cn/s/blog_64a3795a01017xqt.html) 一直在寻找一种方法,如果我可以使用通配符"*" 和 &qu ...

随机推荐

  1. 2022-11-04:给定一个正数n,表示有多少个节点 给定一个二维数组edges,表示所有无向边 edges[i] = {a, b} 表示a到b有一条无向边 edges一定表示的是一个无环无向图,也

    2022-11-04:给定一个正数n,表示有多少个节点 给定一个二维数组edges,表示所有无向边 edges[i] = {a, b} 表示a到b有一条无向边 edges一定表示的是一个无环无向图,也 ...

  2. 2022-06-26:以下golang代码输出什么?A:true;B:false;C:编译错误。 package main import “fmt“ func main() { type

    2022-06-26:以下golang代码输出什么?A:true:B:false:C:编译错误. package main import "fmt" func main() { t ...

  3. 2021-12-09:二叉树展开为链表。 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左

    2021-12-09:二叉树展开为链表. 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左 ...

  4. 非AI文生图,献丑了

    多图预警! 大家好,我是 DOM哥 也许你会好奇上面的这几张图片是怎么生成的,接下来我就开始隆重介绍这款文生图工具 当然,并非 AI 的那个文生图啦 预览地址:https://dombro.site/ ...

  5. vscode 配置代码自动格式化加修复

    子曰:"工欲善其事,必先利其器", 编码必须的就是有一个顺手的ide,然而光有还不行,还要懂得配置,毕竟不同的团队代码规范不同,如目前用得较多的就是eslint,今天就顺便记录下v ...

  6. 最全的git操作命令(持续更新)

    当前使用git进行版本管理越来越频繁,但是难免还是有些命令记不全,曾当前闲暇记录一下,免得需要时漫天找寻 目录 一. 配置用户信息 1.git config [配置git 用户信息] 2.git co ...

  7. HTML入门笔记1

    一.HTML是谁发明的? 1990年Tim Berners Lee发明了www(world wide web万维网),为了方面人们于阅读网页,与此同时自己又发明了HTML.HTTP.URL:用自己写的 ...

  8. logging 模块因权限问题写入日志失败

    哈喽大家好,我是咸鱼 今天跟大家分享一个使用 Python 的 logging 模块写入日志文件时遇到的权限问题,不知道你们有没有遇到过 1.案例现象 今天上班的时候手机短信收到了 zabbix 告警 ...

  9. Python 中常见的 TypeError 是什么?

    翻译:BioIT 爱好者原文:TypeError: A Bytes-Like object Is Required, not 'str' | Finxter 简介 目标:在本教程中,我们的目标是修复以 ...

  10. Road

    首先进行端口扫描22 80 使用nmap进行vuln nmap -sS --script=vuln 10.10.236.244 10.10.236.244/v2/admin/login.html 随便 ...