原理
攻击者上传了一个可执行文件到服务器并执行。这个文件可以是木马,病毒,恶意脚本或者是webshell等。
危害
可能会导致用户信息泄露,被钓鱼,甚至使攻击者可以直接上传WebShell到服务器,进而得到自己想要的信息和权限,最终达到对数据库执行、服务器文件管理、服务器命令执行等恶意操作,甚至完全控制服务器系统。
漏洞产生条件
1、能够成功上传恶意文件。
2、能够访问上传的恶意文件,知道上传恶意文件的准确路径。
3、上传的恶意文件能够被web容器解析执行,上传路径要在web容器覆盖范围内。
漏洞产生的原因:
应用程序对上传的文件控制的不足或处理缺陷,而导致用户可以越过本身权限向服务器上传可执行的动弹脚本文件
漏洞绕过
客户端绕过,服务端绕过,中间件、系统特性去绕过
客户端脚本绕过
客户端代码可能会在js中检测文件的扩展名来判断上传的类型
绕过方法:
1、查看前端页面源代码修改或删除JS事件
2、构造URL上传表单
3、使用bp抓包更改后缀名
服务端绕过
例如:
1、黑名单检测不允许上传的类型,
2、白名单检测允许上传的类型
3、 对文件的Content-Type类型,
4、通过函数检测上传图片的大小或内容判断是否正确
1、黑名单:
变换字母大小写(不区分大小写)
Windows特性:末尾的点【.】或【 】绕过
2、白名单
00截断:两个条件: (1)php版本小于5.3.4 (2)php的magic_quotes_gpc为OFF状态
3、Content-Type
burp抓包修改Content-Type的类型
4、 文件内容绕过
将图片头部格式放在上传文件头部可以绕过上传成功。
JPG:FF D8 FF E0 00 10 4A 46 49 46
GIF :47 49 46 38 39 61 (GIF89a)
PNG:89 50 4E 47
图片马绕过
检测原理:利用getmagesize()函数或exif_imagetype()函数根据文件头的字节返回文件的类型。将恶意程序嵌入图片中,构成图片马,制作方法如下:
方法一:文本方式打开图片直接粘贴一句话木马
方法二:cmd命令行执行
copy 1.jpg /b+2.php 3.jpg /b是二进制形式打开 /a是ascii方式打
方法三:16进制打开图片在末尾添加一句话木马。
方法四:PS先打开图片,点击文件->文件简介,添加木马,上传连接
5、批量上传文件只对第一个文件检测,可上传多个的同时将恶意文件上传
文件上传的防御