热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文件上传漏洞利用介绍

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

目录

 

文件上传漏洞利用介绍

1.绕过js验证

2.绕过MIME-TYPE验证

3.绕过基于黑名单验证

基于文件后缀名验证介绍

基于文件后缀名验证方式的分类

基于黑名单验证代码分析

利用apache配置文件.htaccess进行绕过

大小写绕过

空格绕过

点号绕过

特殊符号绕过

路径拼接绕过

双写绕过

4.绕过白名单验证

00截断

  5.图片webshell上传绕过

 

 



文件上传漏洞利用介绍


1.绕过js验证

js验证代码分析

burpsuit剔除js验证

对于js前端验证,直接删除js代码之后就可以绕过js验证

2.绕过MIME-TYPE验证

验证MEMI-TYPE代码分析

查看源代码分析,使用$_FILE["upload_file"]["type"]获取上传文件的MIME-TYPE类型。其中upload_file是在表单中定义的。

burpsuit绕过MIME-TYPE验证

利用burpsuit工具截断http请求,在repeater重放修改MIME-TYPE类型绕过验证。image/jpeg

3.绕过基于黑名单验证


基于文件后缀名验证介绍

对于文件上传模块来说,尽量避免上传可执行文件。为了防止上传脚本文件需要设置对应的验证方式。最简单的就是设置文件后缀名验证

基于文件后缀名验证方式的分类

1.基于白名单验证:只针对白名单中有的后缀名,文件才能上传成功。

2.基于黑名单验证:只针对黑名单中没有的后缀名,文件才能上传成功。

基于黑名单验证代码分析

对于黑名单中的后缀名筛选。绕过黑名单可以通过寻找“漏网之鱼”,

寻找某些可以被作为脚本执行同时也不在黑名单中。

burpsuite绕过黑名单验证

利用burpsuite工具截断http请求,利用intruder模块进行枚举后缀名,寻找黑名单中没有过滤的后缀名。

利用apache配置文件.htaccess进行绕过

htaccess文件是apache服务器的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件拓展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

SetHandler application/x-httpd-php

设置当前目录下所有文件都使用PHP解析,那么无论上传任何文件,只要文件内容符合PHP语言代码规范,就会当作PHP执行,不符合则会报错。

配置http.conf文件

在apache中如果需要启动.htaccess,必须在http.conf中设置AllowOverride 

在黑名单中,没有对.htaccess进行过滤,可以直接上传.htaccess来设置使用php解析任意文件。

制作图片phpinfo探针并上传

phpinfo();

?>

保存为1.jpg进行上传即可。

大小写绕过

windows系统下,对文件名大小写不敏感,例如:test.php和 TEST.phP是一样的。

linux系统下,对文件名的大小写敏感,例如:test.php和TEST.phP是不一样的。

基于黑名单验证的代码分析

没有利用 strtolower($file_ext)全部转换为小写

可以清晰的看出,黑名单中增加了.htaccess的检验,但是缺少了对上传文件名获取的小写转换

利用burpsuite修改文件名进行绕过

空格绕过

基于黑名单验证的代码分析

没有利用trim($file_ext)去除最后面得空格

windiws系统下,对文件名中空格会被作为空处理,程序中的检验代码却不能自动删除空格。从而绕过黑名单。

针对这样的情况需要使用burpsuite截断http请求后,修改对应的文件名 添加空格。

点号绕过

基于黑名单验证的代码分析

没有利用deldot($file_name)去掉最后面得点

windows系统下,文件后缀名最后一个点会被自动去除

例如 windows下新建一个1.php. 文件,会自动更正为1.php

特殊符号绕过

基于黑名单验证的代码分析

没有利用str_ireplace('::DATA',  ' ' ' ,$file_ext)去除特殊符号。

windwos系统下,如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容和所上传的文件内容相同,并且被解析。

利用burpsuite修改文件名进行上传

路径拼接绕过

例如:

新建一个 1.php. .文件,deldot删除最后一个点之后,不能进行删除,trim删除空格,那么最终上传的文件名为1.php. ,利用windows自动去除最后一个点,导致成功上传1.php      

双写绕过

基于黑名单验证的代码分析

str_ireplace()函数替换字符串中的一些字符(不区分大小写)

代码编写过程中,只对黑名单中的内容进行空替换,因为只替换一次所以造成双写绕过

例如:1.phphpp

4.绕过白名单验证


00截断

0x00是十六进制表示方法,是ascii为0的字符。在有些函数处理时,会把这个字符当作结束符。

系统对文件名读取时,如果遇到0x00,就会认为读取已结束。

在php5.3之后的版本中完全修复了00截断,并且00截断受限于GPC,addslashes函数。

GET型00截断

GET型提交的内容会被自动进行URL编码

POST型00截断

在POST请求中,%00不会被自动解码,需要在16进制中进行修改00

5.图片webshell上传绕过

在服务器的PHP代码中,对于用户上传的文件做文件类型检验,检查文件格式是否符合上传规范。可以检查文件二进制格式的前几个字节,从而判断文件类型是否正确。

针对这种情况直接新建1.jpg,其中代码内容如下

GIF98A

  phpinfo();

?>

文件包含漏洞代码解析

在PHP中,使用include、require、include_once、require_once函数包含的文件都会被当作PHP代码执行,无论文件的名称是什么,

只要文件内容符合PHP代码规范,都会当作PHP代码执行。

图片webshell需要结合文件包含漏洞一起使用

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 


推荐阅读
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
  • Java大文件HTTP断点续传到服务器该怎么做?
    最近由于笔者所在的研发集团产品需要,需要支持高性能的大文件http上传,并且要求支持http断点续传。这里在简要归纳一下,方便记忆 ... [详细]
author-avatar
Mr-Leo-Chan
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有