文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

文件上传漏洞

2023-09-03 06:48

关注

目录

前言

1.原理

2.类型

3.复现

3.1环境

3.1.1函数介绍

3.2过程

3.2.1客户端绕过

3.2.2服务端绕过

        黑名单检查后缀

        白名单检查后缀


文件上传漏洞是wb安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒。恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。本文仅关联相关安全问题无其他导向

程序员在开发任意文件上传功能时,并未考虑文件格式后缀的合法性校验或者是否只在前端通过js代码进行后缀检验。这时攻击者可以上传一个与网站脚本语言相对应的恶意代码动态脚本,例如aspphpaspxphp3php5等文件后缀)到服务器上,从而访问这些恶意脚本中包含的恶意代码,进行动态解析最终达到执行恶意代码的效果,进一步影响服务器安全。

客户端绕过、服务端绕过

3.1环境

upload-labs靶场+phpStudy小皮

GitHub - c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场一个想帮你总结所有类型的上传漏洞的靶场. Contribute to c0ny1/upload-labs development by creating an account on GitHub.https://github.com/c0ny1/upload-labs小皮面板(phpstudy) - 让天下没有难配的服务器环境!phpStudy官网2019正式推出phpStudy V8.0版本PHP集成环境,支持Windows与Linux系统,支持WEB面板操作管理,一键网站开发环境搭建配置,另经典版本phpStudy2016/2018/JspStudy环境套件同步更新中,欢迎网站开发者或运维下载使用!https://www.xp.cn/

3.1.1函数介绍

trim()作用:从一个字符串的两端删除空白字符deldot()作用:从字符串的尾部开始,从后向前删除点.,直到该字符串的末尾字符不是.为止strrchr()作用:查找字符串在另一个字符串中最后一次出现strtolower()作用:转换大小写str_ireplace()作用:字符串替换操作,不区分大小写

https://www.jb51.net/article/239371.htmhttps://www.jb51.net/article/239371.htm

3.2过程

3.2.1客户端绕过

原理

由于程序猿只在前端通过js代码进行后缀检验,正是他的粗心导致了可利用的漏洞

方法

(1)停用JavaScript(适用于upload-labs靶场的第一关)ctrl shift+i-->设置-->偏好设置-->停用Javascript

总结

文件上传漏洞中如果是出现前端js限制这种情况,那么绕过方法非常简单就是停用浏览器的JavaScript,这种前端黑名单的限制方法是不应该出现的,更加严谨的是需要前端后端都需要进行限制,upload-labs的第二关就是对后端也进行了限制

3.2.2服务端绕过

原理

通过后端限制的缺陷来进行绕过,一般都是在网页上写一段javascript脚本,校验上传文件的后缀名是否合法,有白名单和黑名单两种形式,区别就是,黑名单明确了不能上传的文件格式,白名单则明确了可以上传的文件格式

黑名单检查后缀

方法 

(2)使用抓包工具burp修改包数据(适用于upload-labs靶场的第一、二关)创建一句话-->修改后缀满足“.jpg|.png|.gif”(绕过前端限制)-->设置浏览器代理(burp代理)-->通过burp抓包然后修改上传文件后缀然后放行

(3)通过大小写的方法绕过(适用于upload-labs靶场的第五关)PHP、Aspx等

(4)空格绕过(upload-labs靶场第六关)后缀使用空格技巧通过,绕过原因为后端并没有过滤空格,这里前提也是在Windows下利用它的特性会去除文件名空格

(5)使用点绕过(upload-labs第七关)+burp抓包绕过由于没有过滤点,我们可以通过后缀加点的方法绕过,这里是依据Windows系统自动去除上传文件的点

 

(6)Windows数据流特性,完整的数据后面是含有::$DATA的而这个::$DATA就称为数据流,只不过在文件的后缀中不会显示出来,所以利用这个特性我们就可以通过upload-labs靶场的第八关

(7)路径拼接绕过(upload-labs靶场第九关)第九关虽然限制的看似没有问题但是恰恰问题就出现在它的限制顺序中,我们考虑如果我们按照它的限制顺序让它把过滤的都过滤掉只剩下我们需要上传的就可以了

(8)双写绕过(upload-labs靶场第十关)通过burp抓包+双写后缀来绕过

(9)php后缀特性绕过(upload-labs靶场第三关)php2、php3、php5、phtml等,一般php配置文件中不会设置这样的特性,所以不会生效

(10)利用.htaccess配置+图片马绕过(upload-labs靶场第四关)利用它的伪静态特性,首先在.htaccess配置文件中写入命令让传入目标文件下的文件都用php执行,然后我们通过cmd合成一个图片马传入目标文件目录下,然后通过.htaccess文件的特性来使用php执行该图片马

编写.htaccess配置文件通过vscode进行修改内容如下,并将它传入目标路径下

SetHandler application/x-httpd-php

在cmd中通过以下命令生成图片马,test.php中的内容为我们写入的一句话木马

copy aa.png/b + test.php/a image.png

白名单检查后缀

方法

(1)MIME类型绕过服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法burp抓包修改content-Type实现绕过

常见的MIME类型 - Scivous - 博客园1,常见的MIME类型(通用型): 超文本标记语言文本 .html text/html xml文档 .xml text/xml XHTML文档 .xhtml application/xhtml+xmlhttps://www.cnblogs.com/scivous/p/14059858.html

(2)00截断漏洞&get型(出现于php5.2版本漏洞)(upload-labs第十一关)使用burp抓包添加%00然后修改php后缀名的方式绕过

00截断原理:\0截断了后面的执行语句让其默认已经执行完成了,所以导致恶意文件上传成功 

 

(3)00截断漏洞&post型(upload-labs第十二关)get传参首先在url要解码所以你就需要提前将\0进行编码成%00,而post传参不需要所以要把这里的%00解码使用burp抓包添加%00先对%00进行url-decode然后修改php后缀名的方式绕过

 

引入特别的Windows特性实例:U-Mail邮件系统在Windows+php+iis(phpstudy2018)环境下Windows具有以下特性小于号(<)相当于星号(*)大于号(>)相当于问号(?)双引号(")相当于小数点(.)这里我们又知道在操作系统中*星号表示所有的意思,所以利用这个特性我们可以去绕过一些特别的限制eg:当我们将这样的bypass.<<<文件上传到目标路径下相当于匹配了php后缀也就是bypass.php那么就可以达到我们想要的效果
(4)文件包含漏洞绕过(upload-labs靶场第十三、十四、十五关)生成图片马方法和前面的第4关中一样,然后上传验证是否成功

文件包含漏洞形成原因是:用户可以控制你包含的文件

文件包含漏洞解决方法:如果你使用了文件包含函数,那么你就需要将文件包含的文件写死,不要让用户可以去控制(url中输入的文件使包含成功)

(5)特殊的文件包含漏洞绕过(upload-labs靶场第十六关)使用了imagecreatejpeg()函数,通过010editor工具对比上传前后函数变化的位置,将一句话木马写入到未改变的位置来实现绕过

   

通过010工具对比修改前后的位置差异来插入一句话实现绕过 

(6)时间型竞争漏洞(upload-labs第十七关)依据“先上传后删除的特性+burp抓包进行时间竞争绕过

来源地址:https://blog.csdn.net/newlife1441/article/details/126329763

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯