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黑名单绕过,文件上传漏洞之黑名单检测绕过相关推荐

  1. 01文件上传漏洞(黑名单检测篇)

    本篇文章将会从文件上传漏洞的基本概念讲起,然后去了解在文件上传中我们的网站都有哪些检测机制,如何去绕过这些检测机制,最后是如何去修复文件上传漏洞. 参考靶场:upload在github上搜索即可在本地 ...

  2. 致远OA文件上传漏洞(含批量检测POC)

    文章目录 文件上传 wpsAssistServlet 任意文件上传 漏洞描述 漏洞影响 网络测绘 批量检测POC ajax.do 任意文件上传 CNVD-2021-01627漏洞 漏洞描述 漏洞影响 ...

  3. 文件上传漏洞及常见的利用方式

    文章目录 概述 "文件上传"漏洞与"WebShell" 文件上传漏洞的原理 "文件上传漏洞"被利用植入"WebShell" ...

  4. 文件上传漏洞利用介绍

    目录 文件上传漏洞利用介绍 1.绕过js验证 2.绕过MIME-TYPE验证 3.绕过基于黑名单验证 基于文件后缀名验证介绍 基于文件后缀名验证方式的分类 基于黑名单验证代码分析 利用apache配置 ...

  5. php 绕过扩展名检查,文件上传漏洞---后缀名绕过原理

    0x00 前言 今天来讨论文件上传漏洞之后缀名绕过.通常在实际生产过程中,并不会有直接可以上传.php等明显的可直接执行的文件,所以在这里我记录下后缀名绕过的原理和方法. 0x01 绕过方法 首先准备 ...

  6. 文件上传漏洞——upload-labs(1-10)

    前言:文件上传漏洞有很多种绕过技巧,这次就通过upload-labs进行学习 第一关 上传有限制,只让上传JPEG或PNG格式的图片,就先尝试一下抓包修改上传格式的方法看看是否可行 先将一句话木马PH ...

  7. Web安全—文件上传漏洞

    文件上传漏洞 提要:文件上传漏洞属于服务端漏洞,可归纳为文件操作类型中的漏洞. 漏洞简介:文件上传漏洞是Web安全中对数据与代码分离原理的一种攻击方法,顾名思义,攻击者上传了一个可执行文件(木马,病毒 ...

  8. 文件上传漏洞-原理篇

    目录 第1章 文件上传漏洞基础 1.1 漏洞概述 1.2 漏洞成因 1.3 漏洞危害 1.4 漏洞利用姿势 第2章 文件上传漏洞检测与绕过 2.1 前端检测和绕过 2.2 服务器端检测和绕过 第3章 ...

  9. 文件上传漏洞-解析、验证、伪造1

    文章目录 文件上传漏洞: webshell: 文件上传漏洞的原因: 文件上传常见检测: 靶场实战 1.前端验证绕过 2.Content-Type方式绕过 3.黑名单绕过 4. .htaccess文件绕 ...

最新文章

  1. 关于z-index介绍
  2. 文巾解题 190. 颠倒二进制位
  3. spring mvc 提示_Spring BootHibernate提示
  4. 【faster rcnn 实现via的自动框人】使用detectron2中faster rcnn 算法生成人的坐标,将坐标导入via(VGG Image Annotator)中,实现自动框选出人的区域
  5. 过程 线 多线程 并发 同步异步
  6. QQ帐号注销功能灰度体验中:预计下周发布!
  7. oracle数据字典(2.说明)
  8. python求平均工资_python如何求列表平均值?
  9. simulink怎么生成vxworks的执行程序_让天下没有难改的Simulink模型
  10. 走进start_kernel尾声
  11. 使用c#访问access数据库
  12. ubuntu 18.04 鼠标多功能键绑定键盘按键
  13. PayPal怎么提现结汇,美金一直在PayPal压着?
  14. 【云原生 | 34】Docker快速部署主流编程语言Java
  15. Mac怎么玩Windows游戏
  16. win10误删的注册表能还原吗_教你手动还原Win10注册表?
  17. pytorch股票预测
  18. 现货黄金投资的鳄鱼法则
  19. OpenBmc开发1:openbmc简介
  20. Wi-Fi MAC 地址随机化与人群监控

热门文章

  1. macOS 和 Linux 有什么区别?
  2. Python之自制二维码
  3. 嵌入式菜单LCD简单版
  4. matlab 期权图,如何使用matlab计算期权价格
  5. 加州大学圣地亚哥计算机硕士申请,多次催促 成功申请加州大学圣地亚哥分校计算机科学...
  6. 暖火柴打一数字_火柴里的天堂
  7. 搜索计算机无法输入法,Windows10左下角搜索框无法输入字符的两种解决方法
  8. Android基础面试题
  9. 低血压形成的原因和治疗方法
  10. dubbo的简单搭建