一、CTF文件上传漏洞
CTF文件上传漏洞是指在网站文件上传功能中,未对用户上传的文件类型、大小、路径进行限制,或者对用户上传的文件没有做充分的过滤和检查,从而导致攻击者可以上传一些恶意文件(如WebShell)或进行目录遍历等攻击行为,最终达到获取系统权限、敏感信息或非法操作等目的。
攻击者可以通过上传恶意脚本实现以下攻击:
- 网站借此被攻击者利用,例如进行DDoS攻击、挖矿等
- 攻击者注入WebShell,窃取管理员密码或者直接控制服务器
- 攻击者上传病毒文件,破坏服务器稳定性
在防范CTF文件上传漏洞的过程中,需要注意以下几点:
- 在上传文件时,需要确保对文件的格式、大小、路径等进行正确的限制和过滤检查。
- 服务端需要对上传文件的后缀名、文件类型进行检查,防止上传脚本或其他恶意文件。
- 服务端需要设置上传目录,避免攻击者利用路径遍历漏洞上传文件到指定的目录。
- 开启SELinux或者AppArmor,限制文件上传的权限。
二、CTF文件上传如何找路径
攻击者可以通过文件上传功能找到路径,这就需要进行一些黑盒测试。通过对目录遍历的理解,攻击者可以在上传文件时的文件名中携带一些相对路径或者绝对路径,从而绕过服务端的限制,访问到一些敏感目录。
以下是一些路径遍历的常用技巧示例:
..\\..\\..\\..\\..\\..\\..\\windows\win.ini
../../../../../windows/win.ini
../../../../../../../etc/passwd
..%2F..%2F..%2F..%2F..%2F..%2Fetc/passwd
如果上传路径存在漏洞,攻击者可以通过这种方式逐层遍历上级目录,进而获取到更敏感的信息。
三、CTF文件上传绕过JS
很多前端在文件上传时会检查一些文件的扩展名来做一层判断,避免上传不安全的文件。比如,常见的图片文件的扩展名包括jpg、gif、png等,如果用户上传的文件不是这些类型之一,前端会提示用户上传不合法。
攻击者可以通过绕过JS进行上传防护机制:“上传”按钮可禁用,但用户可以通过其他方式上传文件。
例如:在输入框