文件上传漏洞
侧边栏壁纸
  • 累计撰写 53 篇文章
  • 累计收到 92 条评论

文件上传漏洞

白羊
2025-04-14 / 0 评论 / 4,702 阅读 / 正在检测是否收录...

漏洞简介
文件上传,顾名思义就是上传文件的功能行为,之所以会被发展为危害严重的漏洞,是程序没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。文件上传漏洞是漏洞中最为简单猖獗的利用形式,一般只要能上传获取地址,可执行文件被解析就可以获取系统WebShell。

漏洞原理
在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。

漏洞危害
文件上传漏洞对Web应用来说是一种非常严重的漏洞。一般情况下,Web应用都会允许用户上传一些文件,如头像、附件等信息,如果Web应用没有对用户上传的文件进行有效的检查过滤,那么恶意用户就会上传一句话木马等Webshell,从而达到控制Web网站的目的。
漏洞高危触发点

存在文件上传功能的地方都有可能存在文件上传漏洞,比如相册、头像上传,视频、照片分享。论坛发帖和邮箱等可以上传附件的地方也是上传漏阔的高危地带,另外像文件管理器这样的功能也有可能被攻击者所利用。
值得注意的是,如果移动端也存在类似的操作的话,那么相同的原理,也存在文件上传漏洞的风险。

上传点和绕过形式

前端绕过
只在前端用JS来做效验,很容易修改绕过
判断是否js验证

  查看页面源码
查看响应速度(前端验证如果出现错误是不会传递到服务器的,所以上传错误文件,响应速度会非常快)

绕过方法

禁用JS脚本(可以使用插件禁用)
F12调出审核元素,在JS脚本中删除或修改文件类型
使用代理上传文件,BurpSuite上传符合要求的文件类型,抓包修改文件类型

后端验证
黑名单
解析漏洞

.htaccess文件解析漏洞
apache解析漏洞
IIS7.0 | IIS7.5 | Nginx的解析漏洞
IIS6.0解析漏洞

截断上传

截断类型:PHP%00截断
截断原理:由于00代表结束符,所以会把00后面的所有字符都截断
截断条件:PHP版本小于5.3.4,PHP的magic_quotes_gpc为OFF状态

大小写绕过
比如:aSp和pHp之类。

黑名单扩展名的漏网之鱼

  用字典跑
比如:
asa和cer之类
asp: asa cer aspx
jsp: jspx jspf
php: php php3 php4 php5 phtml pht
exe: exee

利用Windows的命名机制

shell.php.   shell.php空格  shell.php:1.jpg   shell. php::$DATA   shell.php:1.jpg
在windows中,后缀名后面的点和空格都会被删除掉。

双写绕过
有时候在检测时,后台会把敏感字符替换成空格,这个时候,我们可以使用双写进行绕过。比如:pphphp

白名单
原理
只允许代码规则写的文件名上传

绕过方式
解析漏洞
截断上传
文件包含
MIME检测
什么是MIME

    MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

常见的MIME类型

text/plain (纯文本)
text/html (HTML文档)
text/javascript (js代码)
application/xhtml+xml (XHTML文档)
image/gif (GIF图像)
image/jpeg (JPEG图像)
image/png (PNG图像)
video/mpeg (MPEG动画)
application/octet-stream (二进制数据)
application/pdf (PDF文档)

MIME绕过的原理

部分Web应用系统判定文件类型是通过content-type字段,黑客可以通过抓包,将content-type字段改为常见的图片类型,如image/gif,从而绕过校验。

文件头检测漏洞
原理
在每一个文件(包括图片,视频或其他的非ASCII文件)的开头(十六进制表示)实际上都有一片区域来显示这个文件的实际用法,这就是文件头标志。我们可以通过16进制编辑器打开文件,添加服务器允许的文件头以绕过检测。

 常见的文件头:
注意:下面的文件头的格式是16进制的格式:

GIF:47 49 46 38 39 61 //GIF89a
png:89 50 4E 47 0D 0A 1A 0A
JPG:FF D8 FF E0 00 10 4A 46 49 46

在进行文件头绕过时,我们可以把上面的文件头添加到我们的一句话木马内容最前面,达到绕过文件头检测的目的。

内容检测图片马绕过
一般文件内容验证使用getimagesize函数检测,会判断文件是否是一个有效的文件图片,如果是,则允许上传,否则的话不允许上传。

图片马制作:
Notepad++制作
使用Notepad++编辑器,打开图片直接添加一句话木马(快,方便)
手动制作
准备一张图片,这里为a.png,和一个木马,通过以下命令合成一个图片马3.png:
a.png内容:
<?php  eval($_POST['1']); ?>

cmd命令:

copy test.png /b a.php /a 3.png #copy语句中b指二进制文件,a指ascii码文件
316

评论 (0)

取消
歌曲封面
0:00