📁文件上传漏洞🍉

文件上传漏洞👨‍✈️

1.简介👆

文件上传漏洞就是说用户上传了一个可以执行的脚本文件,并通过这个文件拿到了执行服务器端命令的能力,正常情况下上传功能是一个正常业务需求,对于网站来说,很多时候确实需要用户将文件上传到服务器中,但是由于往回走那对上传部分控制不足或者存在缺陷,从而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。
blob

1.1 漏洞成因👀

  • web脚本语言

    上传文件时web脚本语言,服务器的web容器解释并执行了用户上传的脚本,导致上传的恶意代码被执行。

  • Flash的策略文件

    上传文件是Flash的策略文件crossdomain.xml黑客用以控制Flash在该域下的行为。

  • 病毒或者木马文件

    上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。

  • 钓鱼图片

    上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于
    钓鱼和欺诈。

    2.文件上传利用类型⌨

    2.1 js绕过🤞

    • 判断👨‍⚖️
      ①如果上传一个不正确的文件格式,他很快的速度就显示说文件类型不正确那么很有可能是js验证,(在未到达服务器之前就出现一个弹窗)

在这里插入图片描述
②查看源码在这里插入图片描述
绕过js
① 最简单的方式就是禁用浏览器的js的功能即可
– chrome:输入chrome://setting/content/javascript即可关闭
– 火狐浏览器:地址栏输入:about:config 然后再搜索JavaScript.enabled双击关闭js功能

 ②中间人攻击方法(使用burpsuite攻击)
    - 先将文件改为可以上传的格式,通过验证后再将burpsuite抓到的包中格式改为源格式。

在这里插入图片描述
### 2.2type类型🏋

在http头文件中有文件媒体类型Content-type:
常见的类型有

分类描述典型类型
text普通文本text/plain,text/html,text/css,text/javascript
image图片image/gif,image/png,image/jpeg
audio音频audio/midi
video视频video/webm, video/ogg
applicaition二进制数据application/octet-stream,/pkcs12,application/vnd mspowerpoint, application/xhtml+xml,application/xml, application/pdf, application/json

在这里插入图片描述
– type绕过
在这里插入图片描述
– 只要web容器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响因此此点至关重要。
– 判断文件类型时,应结合MIME Type、后缀检查等方式。推荐使用白
名单,黑名单的方式已经无数次被证明不可靠。
– 文件_上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。
### 2.3 文件扩展名绕过📛

  • 白名单绕过缺陷
    部分中间件由于解析文件后缀名的顺序可能是的白名单防御存在漏洞
    > IIS6.0 攻击者把木马文件名改为pentest.php: 1.jpg 上传,此时的文件为Jpg格式,从而可以顺利通过验证,而IIS 6.0却会把pentest.php: 1.jpg 当作ASP脚本程序来执
    行,最终攻击者可以绕过白名单检测,并且执行木马程序。

apache 在Apache1.x2.x中,对文件名的解析是从后往前解析的,直到遇见一个Apache认识的文件类型为止。如:phpshell.php.rar.rar.rar,因为Apache不认识.rar这个文
件类型,所以会直遍历后缀到.php, 然后认为这是一个PHP类型的文件从而绕过白名单检测。

2.4文件头绕过🖤🎧

  • 文件头是位于文件开头的一段承担一定任务的数据,就是为了描述文件的一些重要属性,比如图片的长度、宽度、像素尺寸等,一般都在开头的部分
  • 如果文件内容检测设置得比较严格,那么上传攻击将变得非常困难,也可以说它是在代码层检测的最后一道关卡,如果它被突破了,就算没有代码层的漏洞,也给后面利用应用层的解析漏洞带来了机会。
  • 在这里插入图片描述
    在这里插入图片描述
  • 文件头校验绕过
    浏览器的MIME Sniff功能实际上也是通过读取文件的前256个字节, 来判
    断文件的类型的。因此,为了绕过应用中类似MIMESniff的功能,常见的攻击技巧是伪造一
    个合法的文件头,而将真实的PHP等脚本代码附在合法的文件头之后也就是说给上传脚本加上相应的幻数头字节就可以,php引擎会将

发表评论

电子邮件地址不会被公开。