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

这篇具有很好参考价值的文章主要介绍了Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

访问界面
Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)

漏洞复现

构建上传文件内容

<?php phpinfo();?>

对上传文件进行抓包,在文件名后面添加空格
Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)
成功上传
Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)
抓取访问1.gif.php文件的数据包,发送至repeater模块
Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)
在访问路径gif后通过十六进制视角右键点击添加字节添加空格和'\0'的十六进制数
Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)
发送数据包查看回显内容,1.gif[0x20]中的代码已被执行,将phpinfo()代码换成后门代码即可连接后门。
Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)

漏洞总结

利用该漏洞需要满足

  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服务漏洞详解

以上内容仅作学习,如有瑕疵或错误,欢迎指正,感谢阅读。文章来源地址https://www.toymoban.com/news/detail-644967.html

到了这里,关于Nginx 文件名逻辑漏洞(CVE-2013-4547)(Vulhub)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 批量修改文件名-txt_word_ppt批量修改文件名

    word/excel/ppt等等批量修改文件名 批量修改文件名的方法有N多种,我的这种是比较简单的,小白也可以使用 使用windows自带的批处理脚本进行批量重命名 什么类型的文件批量修改原理都一样,这里以txt修改为例 通过py脚本快速创建文件测试,这步是创建100个txt文件,这步不重要,因为我

    2024年01月16日
    浏览(95)
  • linux根据文件名查找文件路径

     举个例子:

    2024年02月17日
    浏览(61)
  • Ubuntu知道文件名查找文件路径

    1.whereis 文件名 特点:快速,但是是模糊查找,例如找#whereismysql它会把mysql,mysql.ini,mysql.*所在的目录都找出来。 2.find /-name文件名 特点:准确,但速度慢,消耗资源大。 3.locate 文件名 强力推荐的方法,最快,最好的方法。 注意:第一次使用该命令,可能需要更新数据库,按

    2024年02月15日
    浏览(64)
  • MultipartFile获取文件名,文件大小,文件后缀等方法

    获取文件名及后缀信息: 获取文件名: 获取文件后缀:这个后缀带‘.’如:.zip,如果不想带‘.’这样即可lastIndexOf(\\\".\\\")+1 获取文件类型: 获取文件大小:

    2024年02月16日
    浏览(69)
  • 【嵌入式开发 Linux 常用命令系列 7.4 -- awk 处理文件名,去除后缀只保留文件名】

    请阅读 【嵌入式开发学习必备专栏 】 在 shell 中, 可以使用 awk 来处理文件名,去除其后缀。下面是一个示例命令,它会将带有后缀的文件名作为输入,并输出没有后缀的文件名: 这个命令片段做了以下几件事情: -F\\\".\\\" 设置了输入字段的分隔符为点号( . ),这是文件后缀

    2024年04月08日
    浏览(62)
  • MultipartFile获取文件名、文件后缀等方法

    获取文件名及后缀信息 获取文件名 获取文件后缀 获取文件类型 获取文件大小 输出结果:

    2024年02月11日
    浏览(62)
  • 如何批量修改文件名

    此文章仅记录博主遇到的问题想到的解决方案,并不代表最优解。         在工作中遇到要 批量 修改文件名,并且文件名具有 一定命名格式 ,如:要将abc_name_20230223.txt 修改为 name.txt , name的长度一致 。这种情况下需要将文件名批量提取,裁剪再重命名。如何操作更加方便

    2024年02月08日
    浏览(77)
  • Python获取文件名

    在进行日常程序开发过程中,获取文件名是一个普遍的需求。本篇文章将演示如何用Python获取文件名,以及获取文件路径和拓展名。 Python的os模块提供了一系列用于操作操作系统功能的方法。其中一个方法就是 os.listdir() ,它可以返回指定目录下的所有文件和文件夹的名称。

    2024年02月08日
    浏览(40)
  • Git修改文件名

    使用Git管理matlab代码,在matlab下直接修改文件名会提示 其实这是因为Git 追踪文件是根据文件名来的,把文件名改了,它就不知道那文件跑哪去了,以为你删掉了!!!所以你在本地直接改名一个文件之后,git status 发现的就是 deleted 和 untracked 1 。 所以要在git里进行文件名的

    2024年02月12日
    浏览(47)
  • java获取文件夹下所有文件名

      在进行 Java编程的过程中,我们会经常使用到文件夹下的所有文件名。有时候可能不太熟悉 Java编程的小伙伴们会发现,在代码中没有获取到所有的文件名,那么这个时候我们应该怎么去获取到这些文件呢?在进行 Java编程的过程中,我们会经常使用到 Java里面的 JDBC数据库连

    2024年02月10日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包