Upload-Lab第三关:如何巧妙应对黑名单文件后缀检测?

安全
黑名单检测是一种常见的安全措施,它通过检查上传文件的后缀来阻止特定类型的文件(如 .php, .exe)被上传。

关卡介绍

在Pass03中,我们面临的挑战是绕过文件上传功能的黑名单检测机制。黑名单检测是一种常见的安全措施,它通过检查上传文件的后缀来阻止特定类型的文件(如 .php, .exe)被上传。在这一关,我们需要找到一种方法,上传一个可以执行的恶意文件,同时绕过黑名单检测。

Pass03的源码

解题思路

为了绕过黑名单检测,可以尝试以下几种方法:

  • 双重后缀名:利用系统只检测第一个后缀名,而实际执行第二个后缀名。
  • 大小写混淆:某些系统对后缀名的检测是大小写敏感的。
  • 文件名后缀添加特殊字符:在后缀名后添加一些特殊字符,可能会绕过检测。
  • 使用其他可执行后缀:如果服务器支持多种脚本语言,可以尝试其他语言的可执行文件后缀。

题目中提示不允许上传.asp,.aspx,.php,.jsp后缀文件!就用下面的替代被禁止的那些。

  • ASP: asa/cer/cdx
  • ASPX: ashx/asmx/ascx
  • PHP: php4/php5/phtml
  • JSP: jspx/jspf

实践步骤

(1) 使用其他可执行后缀

创建一个包含简单PHP代码的文件,内容如下所示,将该文件命名为 shell.php4

<?php phpinfo() ?>

文件上传成功,如下图,可以查看返回的上传路径。

文件上传成功

通过访问文件上传的路径,看到一句话木马原样输出了,说明 .php4 后缀名的文件它不解析。

这里再回想一下,代码能否解析取决于配置文件里如何设置,所以,只能通过经验去判断。通过查看配置文件发现,智能解析php php3 phtml这三种的后缀。如下图:

接着,我们尝试利用下面的一句话webshell,并把后缀修改成.phtml,重新上传。

<?phpecho shell_exec($_GET['pass']); ?>

成功上传后,通过访问该webshell的路径。如下图:

网上也有一些解法说可以通过.htaccess文件上传。关于.htaccess文件利用第四关有详细的讲解。

SetHandlerapplication/x-httpd-php

这个文件里面的含义就是将所有文件解析为php。例如上传个jpg格式的一句话也可以绕过了,再用蚁剑进行连接就可以了。

但是,由于该关卡中,把上传的文件重新命名了。关键代码如下:

上传的文件都被重新命名了,所以,上传.htacces这个文件不起作用了。如下图所示:

防御措施

为了防止类似的攻击,开发人员应采用白名单检测机制,仅允许特定类型的文件上传。此外,还应对上传的文件进行严格的内容检查,确保其安全性。

总结

在第三关中,通过尝试多种方法,我们成功绕过了文件上传的黑名单检测机制。这一过程不仅加深了我们对文件上传漏洞的理解,也提高了我们识别和防御此类漏洞的能力。

推荐阅读:

Upload-Lab第一关:轻松绕过前端验证的技巧!

Upload-Lab第二关:如何巧妙绕过MIME类型过滤?

责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2024-08-19 00:05:00

黑名单验证安全验证

2024-08-12 08:29:08

2024-08-16 08:44:39

2024-08-07 11:01:42

2024-08-06 16:16:34

Upload-Lab前端恶意代码

2011-06-02 10:52:11

Android BroadCast 黑名单

2011-01-21 17:53:44

Zimbra

2013-08-27 10:56:24

2015-06-04 11:11:15

2010-11-11 13:20:41

2010-05-24 13:36:11

2019-02-21 08:50:09

物联网互联网IOT

2009-10-29 08:39:14

Windows 7系统激活

2018-06-10 09:04:28

2019-07-29 08:41:33

算法黑名单ip

2011-03-18 13:14:01

2011-07-28 11:10:58

2017-04-01 10:29:26

2023-10-16 08:14:21

AI安全数据

2012-11-23 10:15:06

点赞
收藏

51CTO技术栈公众号