php黑名单绕过,文件上传漏洞之黑名单检测绕过
0x00 前言
文件上传是一个很常见的功能,文件上传漏洞也比较普遍,原理简单,造成的危害却很大,是一个入门级别的漏洞。这篇文章主要针对文件上传漏洞中的 黑名单检测绕过 这个点,结合upload-labs,做一个较为全面的总结。
upload-labs
upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。
黑名单思想
利用黑名单的思想来防御文件上传漏洞是一种很常见的做法,比如upload-labs的第三关
但是黑名单思想很难把所有可能引发漏洞的威胁给过滤掉,而且随着时代发展还有可能有新的攻击方式产生,所以黑名单思想是一种不够安全的思想。
Secure By Default 原则
在设计安全方案时,最基本也就是最重要的原则就是“Secure by Default” 。在做任何安全设计时,都要牢牢记住这个原则。一个方案设计得是否足够安全,与有没有应用这个原则有很大的关系。实际上,“Secure by Default” 原则,也可归纳为白名单、黑名单的思想。如果更多地使用白名单,那么系统会变得更安全。
——《白帽子讲Web安全》
0x01 换用文件后缀(Pass-03)
能被Web容器解析的文件后缀(简单来说就是能被当做php文件来执行),除了我们最常见的 .php以外还有很多,比如php1、php2、php3、php4、php5、phtml。
以 upload-labs 第3关为例:
本pass禁止上传.asp|.aspx|.php|.jsp后缀文件!可以看到这关禁用了4种文件,但是这是远远不够的......
可以看看 upload-labs 第4关,体会一下这两关的区别:
所以思路就很明确了,我们先创建一个文件,取名为phpinfo.php3(php1、php2、php3、php4、php5、phtml),内容如下:
把这个文件上传,然后查看图像
可以看到我们上传的文件成功被当成php文件来解析,文件内容被成功执行
当然,如果文件内容是一句话木马,我们就可以成功地利用工具连接、控制目标网站。操作也比较简单,这里就不演示了。
0x02 .htaccess文件的利用(Pass-04)
.htaccess文件
htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。仅限于Apache服务器
简单来说,我们如果上传了 .htaccess 这样一个配置文件到了upload目录里,那么这个文件里的一些可以人为操作的指令就可以控制upload这个目录以及子目录的一些功能。
第4关和第3关的相比之下禁用了更多的后缀名,真是让人头疼,这时候我们灵光一闪,想到了.htaccess文件的利用,然后我们上传一个以下内容的.htaccess文件。它的作用是 让这个文件所在的目录里的所有文件都以php来解析
.htaccess
这时再上传一个内容为 <?php phpinfo(); ?> 的文件,文件名为 phpinfo.jpg,这时的文件名后缀就不用那么讲究了,就算是phpinfo.xxx 也是可行的,结果被成功执行。
0x03 大写绕过(Pass-05)
这关相比上一关增加了禁止 .htaccess 文件的上传
但是我们还有一个简单的小思路,那就是利用其过滤的不严谨性,没有顾及到后缀的大小写检测,以及windows对大小写不敏感,从而简单的绕过
上传一个文件名为 phpinfo.PHP的文件,内容为 <?php phpinfo(); ?>,结果被成功执行。
0x04 加空格绕过(Pass-06)
查看本关的源码可以看到没有对文件后缀进行去空操作
所以可以利用 BurpSuite 截断 给文件名 phpinfo.php 尾部加一个空格后,将绕过服务器端的检测
访问
0x05 加点绕过(Pass-07)
利用 BurpSuite 截断 给文件名 phpinfo.php 尾部加一个点后,可以绕过服务器端的检测
根据windows的特性,会自动去除文件尾部的点,从而让文件被web容器解析执行
0x06 ::$DATA绕过(Pass-08)
根据ntfs文件系统的特性,可以在后缀中加::$DATA绕过
查看图片发现禁止访问,原因我也说不上来。 ps:关于::$DATA绕过我还不是很懂,要是有dalao看到希望能教教我。
然后把URL框的::$DATA去掉就可以以php的形式解析执行了。
0x07 点空点绕过(Pass-09)
可以看一下这一关的源码,把之前讲的绕过方式都给禁用了
这时候我们给后缀加点加空再加点,去了一个点和去空之后就和前面加点绕过效果一样了
文件被成功解析执行:
0x08 双写绕过(Pass-10)
这关把所有和黑名单匹配的后缀名都替换为空,但是只替换一次,源码如下
遇到这种情况我们可以双写后缀来上传一个php文件,比如文件名为phpinfo.pphphp即可成功上传,最后访问的是info.php文件,文件内容成功被web容器解析
0x09 总结与心得
文件上传之黑名单检测绕过这个点就说完了,欢迎纠错、补充。当然,这只是文件上传漏洞非常小的一部分,文件上传漏洞还有很多姿势等着我去学习。一开始我用的是 buu 的 upload-labs,但是可能是环境问题(那里的php版本是7点多的,官方建议的是5.2.17),导致一些关卡也存在问题。所以推荐大家自己动手搭一个环境,下载一个集成环境,只要7.7M,非常方便 https://github.com/c0ny1/upload-labs
php黑名单绕过,文件上传漏洞之黑名单检测绕过相关推荐
- 01文件上传漏洞(黑名单检测篇)
本篇文章将会从文件上传漏洞的基本概念讲起,然后去了解在文件上传中我们的网站都有哪些检测机制,如何去绕过这些检测机制,最后是如何去修复文件上传漏洞. 参考靶场:upload在github上搜索即可在本地 ...
- 致远OA文件上传漏洞(含批量检测POC)
文章目录 文件上传 wpsAssistServlet 任意文件上传 漏洞描述 漏洞影响 网络测绘 批量检测POC ajax.do 任意文件上传 CNVD-2021-01627漏洞 漏洞描述 漏洞影响 ...
- 文件上传漏洞及常见的利用方式
文章目录 概述 "文件上传"漏洞与"WebShell" 文件上传漏洞的原理 "文件上传漏洞"被利用植入"WebShell" ...
- 文件上传漏洞利用介绍
目录 文件上传漏洞利用介绍 1.绕过js验证 2.绕过MIME-TYPE验证 3.绕过基于黑名单验证 基于文件后缀名验证介绍 基于文件后缀名验证方式的分类 基于黑名单验证代码分析 利用apache配置 ...
- php 绕过扩展名检查,文件上传漏洞---后缀名绕过原理
0x00 前言 今天来讨论文件上传漏洞之后缀名绕过.通常在实际生产过程中,并不会有直接可以上传.php等明显的可直接执行的文件,所以在这里我记录下后缀名绕过的原理和方法. 0x01 绕过方法 首先准备 ...
- 文件上传漏洞——upload-labs(1-10)
前言:文件上传漏洞有很多种绕过技巧,这次就通过upload-labs进行学习 第一关 上传有限制,只让上传JPEG或PNG格式的图片,就先尝试一下抓包修改上传格式的方法看看是否可行 先将一句话木马PH ...
- Web安全—文件上传漏洞
文件上传漏洞 提要:文件上传漏洞属于服务端漏洞,可归纳为文件操作类型中的漏洞. 漏洞简介:文件上传漏洞是Web安全中对数据与代码分离原理的一种攻击方法,顾名思义,攻击者上传了一个可执行文件(木马,病毒 ...
- 文件上传漏洞-原理篇
目录 第1章 文件上传漏洞基础 1.1 漏洞概述 1.2 漏洞成因 1.3 漏洞危害 1.4 漏洞利用姿势 第2章 文件上传漏洞检测与绕过 2.1 前端检测和绕过 2.2 服务器端检测和绕过 第3章 ...
- 文件上传漏洞-解析、验证、伪造1
文章目录 文件上传漏洞: webshell: 文件上传漏洞的原因: 文件上传常见检测: 靶场实战 1.前端验证绕过 2.Content-Type方式绕过 3.黑名单绕过 4. .htaccess文件绕 ...
最新文章
- 关于z-index介绍
- 文巾解题 190. 颠倒二进制位
- spring mvc 提示_Spring BootHibernate提示
- 【faster rcnn 实现via的自动框人】使用detectron2中faster rcnn 算法生成人的坐标,将坐标导入via(VGG Image Annotator)中,实现自动框选出人的区域
- 过程 线 多线程 并发 同步异步
- QQ帐号注销功能灰度体验中:预计下周发布!
- oracle数据字典(2.说明)
- python求平均工资_python如何求列表平均值?
- simulink怎么生成vxworks的执行程序_让天下没有难改的Simulink模型
- 走进start_kernel尾声
- 使用c#访问access数据库
- ubuntu 18.04 鼠标多功能键绑定键盘按键
- PayPal怎么提现结汇,美金一直在PayPal压着?
- 【云原生 | 34】Docker快速部署主流编程语言Java
- Mac怎么玩Windows游戏
- win10误删的注册表能还原吗_教你手动还原Win10注册表?
- pytorch股票预测
- 现货黄金投资的鳄鱼法则
- OpenBmc开发1:openbmc简介
- Wi-Fi MAC 地址随机化与人群监控