渗透测试_文件上传漏洞

发布时间 2023-04-18 22:04:47作者: KAKSKY

![[Pasted image 20230315092406.png]]

利用方式

  1. 修改头像

绕过方式

1. 前端JS校验

2. Conten-type检测

服务端是通过 content-type 判断类型,content-type 在客户端可被修改。
在上传脚本文件时,将conten-type修改成image/jpeg或者image/png的格式。
其他类型的content-type:https://www.runoob.com/http/http-content-type.html

3. 黑名单

黑名单限制大多指的是在上传文件时获取后缀名,再把后缀名与程序中黑名单进行检测。
在 iis 里 asp 禁止上传了,可以上传 asa cer cdx 这些后缀,如在网站里允许.net 执行 可以上传 ashx 代替 aspx。如果网站可以执行这些脚本,通过上传后门即可获取 webshell。
在不同的中间件中有特殊的情况,如果在 apache 可以开启 application/x-httpd-php
在 AddType application/x-httpd-php .php .phtml .php3
后缀名为 phtml 、php3 均被解析成 php 有的 apache 版本默认就会开启。
上传目标中间件可支持的环境的语言脚本即可,如.phtml、php3。

4. htaccess重写

<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>

在.htaccess里写入以上内容,再上传恶意的.jpg到.htaccess相同目录里。可以文件重写成php文件。
要规则生效,需要在apache开启rewrite重写模块,因为apache是多数都开启这个模块,所以规则一般情况下都生效。

5. 大小写绕过

变换后缀的大小写方式

6. 空格绕过

在后缀后添加空格
在文件名后添加空格在添加白名单内容:

.jpg 
.php .pdf

![[Pasted image 20230316170710.png]]

7. 利用系统特征绕过

windows中文件后缀名.系统会自动忽略,所以上传文件时再后缀处增加.

NTFS交换数据流::$DATA绕过
如果后缀名没有对::$DATA进行判断,利用windows系统NTFS特征绕过上传

利用windwos环境的叠加特征绕过上传
在windows中如果上传文件名abc.php:.jpg的时候,会在目录下产生一个空白的文件名abc.php文件,再利用php和windows环境的叠加属性,以下符号在正则匹配时相等:
双引号" 等于 点号.
大于符号> 等于 问号?
小于符号< 等于 星号*
文件名.<或文件名.<<<或文件名.>>>或文件名.>><空文件名
利用方式:
首先上传一个文件名:abc.php:.jpg
然后再上传一个文件名为:abc.>>>

8. 双写绕过

9. 目录可控%00截断绕过

GET的方式直接%00截断:1.php%00.1.jpg 变成 1.php
POST方式需要把%00解码变成空白符
使用burpsuite POST %00截断文件名 :选中%00 右键--Convert selection-- URL--URL-decode

10. 文件头检测绕过

常见文件头:

  • JPEG (jpg),文件头:FFD8FF
  • PNG (png),文件头:89504E47
  • GIF (gif),文件头:47494638
  • TIFF (tif),文件头:49492A00
  • Windows Bitmap (bmp),文件头:424D

制作图片一句话绕过:copy 1.gif/b+payload.php shell.php

11. 图片二次渲染

gif图片在二次渲染后,与原图片差别不会太大,二次渲染使用gif图片最佳。
将原图片上传,下载渲染后的图片进行对比,找出相同处,覆盖字符串,填写一句话后门,或者恶意指令。

文件上传后缀检测方式

.php
.php5
.php4
.php3
.php2
.html
.htm
.phtml
.pht
.pHp
.phP
.pHp5
.pHp4
.pHp3
.pHp2
.Html
.Htm
.pHtml
.jsp
.jspa
.jspx
.jsw
.jsv
.jspf
.jtml
.jSp
.jSpx
.jSpa
.jSw
.jSv
.jSpf
.jHtml
.asp
.aspx
.asa
.asax
.ascx
.ashx
.asmx
.cer
.aSp
.aSpx
.aSa
.aSax
.aScx
.aShx
.aSmx
.cEr
.sWf
.swf
.htaccess

防御方式

  • 在网站中需要存在上传模块,需要做好权限认证,不能让匿名用户可访问。
  • 文件上传目录设置为禁止脚本文件执行。这样设置即使被上传后门的动态脚本也不能解析,导致攻击者放弃这个攻击途径。
  • 设置上传白名单,白名单只允许图片上传如,jpg png gif 其他文件均不允许上传
  • 上传的后缀名,一定要设置成图片格式如 jpg png gif