Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证

admin 2024年8月13日10:59:32评论45 views字数 1732阅读5分46秒阅读模式

Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证

大家好!我是一个热衷于分享IT技术的up主。在这个公众号里,我将为大家带来最新、最实用的技术干货,从编程语言到前沿科技,从软件开发到网络安全。希望通过我的分享,能够帮助更多的小伙伴提升技术水平,共同成长!欢迎关注,一起探索科技的魅力吧!

简介

Upload-Lab 是一个广受欢迎的文件上传漏洞学习平台,旨在帮助安全研究人员和开发者理解和防范文件上传攻击。第12关涉及一种经典的攻击手法——Null Byte Injection(%00截断)。这种攻击技术利用了许多编程语言和文件系统在处理字符串时的特性,能够绕过服务器端的安全检查,从而上传恶意文件。

漏洞分析

在许多编程语言中,%00(Null Byte)被视为字符串的终止符。例如,在C语言中,字符串以Null Byte结尾,这意味着字符串处理函数会在遇到%00时停止读取字符。许多Web应用在处理文件上传时,使用类似的方式来判断文件扩展名或其他属性。

通过在文件名中注入%00,可以欺骗服务器的文件类型检测机制,使其认为文件具有安全的扩展名,而实际上文件的真实扩展名可以是恶意的。

php的一些函数的底层是C语言,而move_uploaded_file就是其中之一,遇到0x00会截断,0x表示16进制,URL中%00解码成16进制就是0x00

知识补充:

  • strrpos(string,find[,start]): 函数查找字符串在另一字符串中最后一次出现的位置(区分大小写)。

  • substr(string,start[,length]):函数返回字符串的一部分。

  • magic_quotes_gpc: 着重偏向数据库方面,是为了防止sql注入,但magic_quotes_gpc开启还会对$_REQUEST, $_GET,$_POST,$_COOKIE 输入的内容进行过滤

这一关使用白名单进行验证,最终文件会以拼接的方式存放。在 PHP 版本小于 5.3.4 且magic_quotes_gpc关闭的情况下,可以使用%00进行截断。

  1. 把PHP的版本调整为5.2.17,如下图所示
Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证
修改PHP版本为5.2.17
  1. 通过php.ini文件关闭magic_quotes_gpc,如下图所示:
Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证
关闭magic_quotes_gpc

攻击步骤

  1. 创建恶意文件:我们首先需要创建一个包含恶意代码的文件。例如,一个简单的PHP``WebShell
<?php phpinfo(); ?>
  1. 上传文件

上传shell.php用BP抓包修改参数,把upload/后面加上shell.php%00,并把filename=”shell.php”改为shell.png如下图所示:Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证

  1. 验证上传成功

成功上传后,服务器可能会将文件保存为 shell.php,如下图所示:

Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证
上传成功后返回图片地址

访问上传文件的路径,例如 http://localhost/upload/shell.php,如果成功执行了PHP代码,说明攻击成功。

Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证

结语

第12关的%00截断攻击展示了文件上传漏洞的一个经典案例。通过学习和理解这种攻击技术,安全研究人员和开发者可以更好地防范类似的漏洞,提升Web应用的安全性。在实际开发中,始终保持警惕,并采用多层次的安全措施,确保系统的安全与稳定。

推荐阅读

原文始发于微信公众号(攻城狮成长日记):Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月13日10:59:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Upload-Lab第12关:如何巧妙利用%00截断法绕过上传验证https://cn-sec.com/archives/3062522.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息