(一)漏洞原理
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。
“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
(二)基础测试方法
一般来讲,开发者一般都会对文件上传部分,进行检测和过滤,用于检测文件类型的方法有很多种,按照下面方法,一步一步测试
1、总的测试思路
- 第一步查看前端js,如果是在前端js实现文件上传,可以删掉绑定方法,直接上传文件
- 第二步查看是否是黑白名单检测:黑名单是禁止上传文件,白名单是只允许上传文件
如果是白名单:寻找可控参数
如果是黑名单,可以尝试找非黑名单以外的有害文件,可以是大小写不同的可执行文件,比如PhP,也可以是系统配置文件,比如.htaccess文件
2、基于白名单的测试
1、针对后缀名测试,可能在逻辑上发生错误,从而引发文件上传漏洞,比如
加双后缀:变成file.php.jpg 或 file.jpg.php,绕过检测
后缀名加空格:变成file.php ,系统无法正确识别实际扩展名“.php”,从而绕过白名单检测
后缀名加点:变成file.php. 这个方法真针对wi