文件操作漏洞包括文件上传漏洞,文件包含漏洞,文件下载漏洞。
文章目录
前言 什么是文件上传漏洞?
文件上传的验证与绕过:
1.前端js验证:
Microsft Edge浏览器:
Google Chrome浏览器:
2.后端黑名单与白名单验证
黑名单验证
白名单验证
3.内容及其它验证
总结
前言 什么是文件上传漏洞?
文件上传漏洞指hacker利用网站能让用户上传文件的功能,在上传过程中上传木马,直接连接或配合文件包含漏洞获取webshell,从而导致用户权限丢失,隐私泄露。
而hacker成功getshell后还可以长期控制受影响的网站或服务器,进行持续性的攻击和破坏,甚至会将受控制的服务器作为攻击其他目标的跳板,利用该服务器的资源和网络带宽发起更广泛的网络攻击。
文件上传的验证与绕过:
1.前端js验证:
禁用js
Microsft Edge浏览器:
右上方三个点,点击设置:
Cookie和网站权限->所有权限->JavaScript
点击JavaScript,允许关闭
Google Chrome浏览器:
右上方三个点,点击设置->隐私和安全->网站设置
下拉滚动条 内容->JavaScript,不允许使用。
2.后端黑名单与白名单验证
黑名单验证
[阻止已知的恶意实体访问网络资源]
定义:一种阻止机制,通过列出不受信任或已知有害的实体-IP地址、域名、用户ID、电子邮件地址等,来阻止这些实体访问网络资源。
特点:
负面表列:以“负面表列”的方式禁止某些行为或访问。
灵活性较高:在识别出威胁后,可以快速地将其加入黑名单,以阻止其进一步活动。
安全性相对较低:虽然能有效阻止已知威胁,但是无法及时应对未知攻击或新出现的恶意实体。
绕过方式:
1.大小写绕过:
例:upload第六题
2.点绕过:
例:upload第五题
3.空格绕过
例:upload第七题
4.双写绕过
例:upload第十一题
5.htaccess特殊后缀解析
例:upload第四题
第一步:.png文件
<?php @eval($_POST[cmd]); ?>
第二步:.htaccess文件
<IfModule mime_module>
AddHandler php5-script .gif
SetHandler application/x-httpd-php
</IfModule>
6.流数据(::$$DATA)绕过
例:upload第九题
白名单验证
通过限制访问权限来提高系统的整体安全性。
定义:一种权限机制,策略是一种严格的访问控制方法,只有白名单中的实体才允许访问网络资源,这种方式适用于对安全性要求较高的环境,如企业内部网络、关键业务系统等。
特点:
正向表列:以“正向表列”的方式允许某些行为或访问。
安全性高:只有经过验证和信任的实体才能访问系统,从而有效防止未经授权的访问和恶意攻击。
灵活性较低:在需要允许新的实体访问时,白名单需要手动更新,会增加管理成本和时间。
绕过方式:
1.文件格式验证mime绕过
修改 MIME 类型:
攻击者可以在上传文件时修改 HTTP 请求中的 Content-Type
头部,使其显示为一个无害的 MIME 类型(如 image/jpeg
),但实际上传的是恶意脚本(如 PHP 脚本)。
利用客户端软件的漏洞:
有时,文件上传的客户端软件(浏览器插件或自定义上传工具)可能存在漏洞,允许用户绕过 MIME 类型的限制。
服务端验证不足:
如果服务端仅依赖客户端提供的 MIME 类型,而没有进行文件内容检查(如文件扩展名检查、文件签名检查、文件内容分析等),则攻击者可以通过修改 MIME 类型来绕过这些简单的安全检查。
2.%00截断
条件:php<5.3.4,magic_quotes_gpc函数关闭,get提交
例:upload第十二题
3.0x00截断
条件:php<5.3.4,magic_quotes_gpc函数关闭,post提交
例:upload第十三题
把%00换成0x00
或手动编码:
4.0xoa截断 ASCII->换行
3.内容及其它验证
1.文件头检测:
例:upload第十四题
直接页面截图,重命名为.txt文件,打开文件,将一句话木马黏贴进去,再进行重命名为3.png文件。
重命名的.png就有验证特征:
2.二次渲染
例:upload第十七题
上传的图片后,后端代码会重新生成画布 然后把上传的图片重新渲染一次,使得png(图片+木马)->png(图片)。
3.条件竞争
例:upload第十八题
实质:多个请求同时处理同一个文件或资源
第一次:
上传了一个恶意文件
服务器在将文件保存到磁盘后还需要进行一些额外的检查
验证失败
第二次:
上传了一个恶意文件
服务器在将文件保存到磁盘后还需要进行一些额外的检查
验证失败
......
第n次:
上传了一个恶意文件
服务器被占用
验证成功
4.函数验证
getimagesize / exif_imagestype ->检测上传文件类型是否为图片
例:upload第十五题
与文件头检测没有大的区别。
文件上传漏洞防范措施:
1.修改文件存储路径:
将用户上传的文件存储在一个独立的目录下,避免与应用程序的代码混合在一起。同时,确保该目录的权限设置合理,防止未授权访问。
2.文件权限和访问控制设置:
将上传的文件设置为只读权限,以防止被恶意修改。同时,限制用户对上传文件的访问权限,只允许特定的用户或角色访问这些文件。
3.限制文件上传
限制用户在一定时间内可以上传的文件数量,防止恶意用户进行无限制的文件上传。
总结
文件上传漏洞是一种常见的Web应用程序安全漏洞,它允许攻击者利用网站或应用程序中的文件上传功能,上传恶意文件到服务器上,并通过这些文件执行恶意代码,从而控制服务器、窃取数据或执行其他恶意操作。