1. 背景
持续学习安全测试ing
2. FileUpload 的定义
即文件上传漏洞,通常是由于对上传文件的类型、内容没有进行严格的过滤、检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx等都曝出过文件上传漏洞。
3. 漏洞原理:
传统防火墙只针对IP和端口,上传文件时,可在文件中写入恶意的脚本,跳过防火墙,执行脚本中的文件。上传正常文件没问题,但如果没做检测上传的是脚本,木马文件,也会被执行 (没做检测) 木马文件(一句话木马) 就会使得服务器受到攻击。
4. 如何防御
-
验证和过滤:测试 FileUpload 是否正确实现了文件类型验证,确保只允许上传预期类型的文件(例如,只接受 .jpg, .pdf 等),并阻止潜在危险的文件类型(如 .exe, .php)被上传,防止恶意脚本执行。
-
文件大小限制:检查 FileUpload 是否正确实施了文件大小限制,避免因上传超大文件而导致的拒绝服务攻击(DoS)或其他系统性能问题。
-
路径遍历和目录穿越:测试组件是否能够防止路径遍历攻击,确保上传的文件不会被保存在服务器的非预期位置,比如系统目录或应用程序的敏感区域。
-
输入验证:验证 FileUpload 是否对所有上传相关输入进行了严格的验证,包括文件名、内容类型等,防止注入攻击等安全漏洞。
-
存储安全:检查上传文件的存储机制,确保文件被安全地保存,比如使用随机生成的文件名和安全的目录结构,避免泄露用户信息或被未授权访问。
-
访问控制:测试上传后的文件访问权限,确保只有经过认证和授权的用户可以访问上传的文件。
-
资源耗尽:评估 FileUpload 在大量文件上传时的性能,确保不会导致服务器资源耗尽,比如内存泄漏或CPU占用过高。
-
日志和监控:检查是否有足够的日志记录和错误处理机制,以便于在发生安全事件时能够追踪和响应。