今天看书看到其中提到的一个漏洞,那就是Nginx+PHP的服务器中,如果PHP的配置里 cgi.fix_pathinfo=1 那么就会产生一个漏洞。这个配置默认是1的,设为0会导致很多MVC框架(如Thinkphp)都无法运行。这个漏洞就是比如 localhost/img/1.jpg 是正常地访问一张图片,而 localhost/img/1.jpg/1.php 却会把这张图片作为PHP文件来执行!如下图,应该是404 NotFound 才对的,它却显示说是有语法错误。

好家伙,既然有漏洞那就尝试怎么攻击吧。先看思路:首先弄一个很小的JPG文件方便修改,然后在JPG文件中插入代码,再上传,最后在浏览器打开。

第一步,小的JPG文件当然是直接用Photoshop做一个了;

几个像素就够了。样子随便,你喜欢就好。

第二步,在JPG中插入代码,这个要用到二进制编辑器;

JPG图片如何修改成为可以执行PHP代码?这里以实验目的,以成功执行一个输出PHP运行环境信息的函数 phpinfo() 为例。

首先这里编辑图片的话并不是说用画图或者Phtoshop之类的图形软件,这次要用到的软件叫做 二进制编辑器,其中我用的这款名叫 Bz.exe,打开图片文件如下图

不要被吓到,就是16进制的数而已,右边显示的是对应的ASCII码,我们直接改右边就可以了。通过几个JPG文件的对比发现,从第二行开始就可以自行修改了,于是开工修改,注意不要使用退格删除导致长度缩短,要用字符替换的,否则会造成文件格式损坏。修改成如下图,保存到本地的图片文件夹中,在本地测试。

!注意不要使用退格删除导致长度缩短,图片损坏,比如像下图第一个的那种改了之后不显示缩略图的就已经是损坏了,损坏的图片可能会在上传的时候被拦截掉。

改好之后再本地测试,

似乎还不行,看起来应该是后面有一些PHP语法错误,那就简单粗暴,修改成下图这样,即是把后面的内容全部使用/* 来注释掉 结尾用 */ 闭合注释,当然结尾的注释不加也可以,只会多显示一个“Unterminated comment starting”的警告而已。建议不需要改成*/结尾,否则修改后的图片在Photoshop中会打不开(因为FF D9是jpg文件的标准结尾)。

可以看到,已经可以执行PHP代码了。本地攻击演练成功!

第三步,上传,因为上传的确实是jpg格式的文件,网站几乎无法识别和拦截;

第四步,在浏览器打开,Hello World!

这一步成功需要两个条件:

1)服务器是Nginx+PHP并且配置里是cgi.fix_pathinfo=1;

2)网站没有屏蔽上传目录的脚本执行权限;

所以,慢慢找吧,也许可遇而不可求;

|++ 此漏洞的功击效果与“文件上传漏洞”相当

∞、防御建议

1)使用Apache、IIS等成熟久经考验的服务器软件,在动态语言的支持上,Nginx还是太年经了。

2)上传目录、静态资源目录,都设置好屏蔽脚本执行权限。例如使用Apache服务器的在相应目录下放一个 .htaccess 文件,里面写上

RewriteEngine On
RewriteRule (?i:\.php)$ - [F]

http://www.cnblogs.com/batsing/p/nginx_bug1_attack.html

转载于:https://www.cnblogs.com/softidea/p/5350828.html

《Nginx文件类型错误解析漏洞--攻击演练》 (转)相关推荐

  1. 18个实时音视频开发中会用到开源项目

    实时音视频的开发学习有很多可以参考的开源项目.一个实时音视频应用共包括几个环节:采集.编码.前后处理.传输.解码.缓冲.渲染等很多环节.每一个细分环节,还有更细分的技术模块.比如,前后处理环节有美颜. ...

  2. 技术福利:最全实时音视频开发要用到的开源工程汇总

    [转自] https://my.oschina.net/jb2011/blog/1619628 1.前言 实时音视频的开发学习有很多可以参考的开源项目.一个实时音视频应用共包括几个环节:采集.编码.前 ...

  3. 福利贴:最全实时音视频开发要用到的开源工程汇总

    1.前言 实时音视频的开发学习有很多可以参考的开源项目.一个实时音视频应用共包括几个环节:采集.编码.前后处理.传输.解码.缓冲.渲染等很多环节.每一个细分环节,还有更细分的技术模块.比如,前后处理环 ...

  4. 实时音视频聊天中超低延迟架构的思考与技术实践

    1.前言 从直播在线上抓娃娃,不断变化的是玩法的创新,始终不变的是对超低延迟的苛求.实时架构是超低延迟的基石,如何在信源编码.信道编码和实时传输整个链条来构建实时架构?在实时架构的基础之上,如果通过优 ...

  5. 实时音视频开发理论必备:如何省流量?视频高度压缩背后的预测技术

    本文引用了"拍乐云Pano"的"深入浅出理解视频编解码技术"和"揭秘视频千倍压缩背后的技术原理之本文引用了"拍乐云Pano"的&q ...

  6. 直播软件搭建音视频开发中的视频采集

    直播软件搭建音视频开发中的视频采集 前言 在直播和短视频行业日益火热的发展形势下,音视频开发(采集.编解码.传输.播放.美颜)等技术也随之成为开发者们关注的重点,本系列文章就音视频开发过程中所运用到的 ...

  7. 如何测试你的即时通讯实时音视频开发方案

    真正了解过实时音视频开发的同行都知道,实时音视频开发所需的技术储备和技能要求都是比较高的,当我们历尽折腾,自已捣鼓出的方案出声出图后,离产品化还有多远呢?为了避免出现测试不充分盲目上线导致用户体验不佳 ...

  8. 【新知实验室 三步完成Windows下实时音视频开发】

    三步完成Windows下实时音视频开发 第一步:开通产品 第二步:下载源码 第三步:编译源码 第四部:运行测试 背景介绍 实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度 ...

  9. Android端实时音视频开发指南

    简介 yun2win-sdk-Android提供Android端实时音视频完整解决方案,方便客户快速集成实时音视频功能. SDK 提供的能力如下: 发起 加入 AVClient Channel AVM ...

  10. 顶级技术大咖,揭秘实时音视频开发的超级风口

    2021年初因为Elon Musk"带货"而走红的音频社交App Clubhouse,又以肉眼可见的速度跌落神坛,下载量从2月的960 万/月跌至4月的92万/月.不过在5月,Cl ...

最新文章

  1. 排序算法---希尔排序(java版)
  2. (0020)iOS 开发之-设计模式-懒加载解惑
  3. js foreach用法_使用 nodejs 写爬虫(一): 常用模块和 js 语法
  4. KubeCon + CloudNativeCon北美2018年会议透明度报告:一项破纪录的CNCF活动
  5. 浏览器自动化的一些体会8 访问angular页面的一个问题
  6. 一次搞懂WCF 配置文件
  7. 忽略已检查的异常,所有出色的开发人员都在这样做–基于600,000个Java项目
  8. 全选文字的快捷键_如果我是一个快捷键,我希望是?为什么?
  9. Python爬虫_Cookie
  10. 2021-10-07
  11. 【Spark】Spark 报错 error writing stream metadata exitcode=1073741515
  12. Linux 命令(62)—— ar 命令
  13. springboot starter的一个问题
  14. 夏普SHARP-10-80cm红外测距传感器-GP2Y0A21YK0F-性能测试
  15. Ubuntu 20.04 美化教程
  16. 【零代码工具】15 款企业级零代码开发平台推荐,总有一款是你心仪的
  17. 关于过期更换ssl证书的相关问题
  18. IBM Spectrum LSF-手册
  19. 阿里云对象存储OSS服务——上传/删除/获取图片
  20. 安卓工具类1——像素PX和dp互相转换的方法(获取手机屏幕尺寸PX)

热门文章

  1. html5 head 标签
  2. Matlab subs函数的用法
  3. 关于redis的keys命令的性能问题
  4. kotlin学习笔记——类、函数、接口
  5. SDNU 1029.巧分整数(斯特林数(改)dp)
  6. 获取ini内容 GetPrivateProfileString GetPrivateProfileInt
  7. 如何将本地jar包放入本地maven仓库和远程私服仓库
  8. 重新上课,学习HTML的第一天
  9. Jmeter当获取正则表达式匹配数字为负数时获取所有匹配的值
  10. 安卓初学者必看实例,(手机GPS简单编程访问)