《Nginx文件类型错误解析漏洞--攻击演练》 (转)
今天看书看到其中提到的一个漏洞,那就是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文件类型错误解析漏洞--攻击演练》 (转)相关推荐
- 18个实时音视频开发中会用到开源项目
实时音视频的开发学习有很多可以参考的开源项目.一个实时音视频应用共包括几个环节:采集.编码.前后处理.传输.解码.缓冲.渲染等很多环节.每一个细分环节,还有更细分的技术模块.比如,前后处理环节有美颜. ...
- 技术福利:最全实时音视频开发要用到的开源工程汇总
[转自] https://my.oschina.net/jb2011/blog/1619628 1.前言 实时音视频的开发学习有很多可以参考的开源项目.一个实时音视频应用共包括几个环节:采集.编码.前 ...
- 福利贴:最全实时音视频开发要用到的开源工程汇总
1.前言 实时音视频的开发学习有很多可以参考的开源项目.一个实时音视频应用共包括几个环节:采集.编码.前后处理.传输.解码.缓冲.渲染等很多环节.每一个细分环节,还有更细分的技术模块.比如,前后处理环 ...
- 实时音视频聊天中超低延迟架构的思考与技术实践
1.前言 从直播在线上抓娃娃,不断变化的是玩法的创新,始终不变的是对超低延迟的苛求.实时架构是超低延迟的基石,如何在信源编码.信道编码和实时传输整个链条来构建实时架构?在实时架构的基础之上,如果通过优 ...
- 实时音视频开发理论必备:如何省流量?视频高度压缩背后的预测技术
本文引用了"拍乐云Pano"的"深入浅出理解视频编解码技术"和"揭秘视频千倍压缩背后的技术原理之本文引用了"拍乐云Pano"的&q ...
- 直播软件搭建音视频开发中的视频采集
直播软件搭建音视频开发中的视频采集 前言 在直播和短视频行业日益火热的发展形势下,音视频开发(采集.编解码.传输.播放.美颜)等技术也随之成为开发者们关注的重点,本系列文章就音视频开发过程中所运用到的 ...
- 如何测试你的即时通讯实时音视频开发方案
真正了解过实时音视频开发的同行都知道,实时音视频开发所需的技术储备和技能要求都是比较高的,当我们历尽折腾,自已捣鼓出的方案出声出图后,离产品化还有多远呢?为了避免出现测试不充分盲目上线导致用户体验不佳 ...
- 【新知实验室 三步完成Windows下实时音视频开发】
三步完成Windows下实时音视频开发 第一步:开通产品 第二步:下载源码 第三步:编译源码 第四部:运行测试 背景介绍 实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度 ...
- Android端实时音视频开发指南
简介 yun2win-sdk-Android提供Android端实时音视频完整解决方案,方便客户快速集成实时音视频功能. SDK 提供的能力如下: 发起 加入 AVClient Channel AVM ...
- 顶级技术大咖,揭秘实时音视频开发的超级风口
2021年初因为Elon Musk"带货"而走红的音频社交App Clubhouse,又以肉眼可见的速度跌落神坛,下载量从2月的960 万/月跌至4月的92万/月.不过在5月,Cl ...
最新文章
- 排序算法---希尔排序(java版)
- (0020)iOS 开发之-设计模式-懒加载解惑
- js foreach用法_使用 nodejs 写爬虫(一): 常用模块和 js 语法
- KubeCon + CloudNativeCon北美2018年会议透明度报告:一项破纪录的CNCF活动
- 浏览器自动化的一些体会8 访问angular页面的一个问题
- 一次搞懂WCF 配置文件
- 忽略已检查的异常,所有出色的开发人员都在这样做–基于600,000个Java项目
- 全选文字的快捷键_如果我是一个快捷键,我希望是?为什么?
- Python爬虫_Cookie
- 2021-10-07
- 【Spark】Spark 报错 error writing stream metadata exitcode=1073741515
- Linux 命令(62)—— ar 命令
- springboot starter的一个问题
- 夏普SHARP-10-80cm红外测距传感器-GP2Y0A21YK0F-性能测试
- Ubuntu 20.04 美化教程
- 【零代码工具】15 款企业级零代码开发平台推荐,总有一款是你心仪的
- 关于过期更换ssl证书的相关问题
- IBM Spectrum LSF-手册
- 阿里云对象存储OSS服务——上传/删除/获取图片
- 安卓工具类1——像素PX和dp互相转换的方法(获取手机屏幕尺寸PX)