CTF-文件上传漏洞

文件上传漏洞

之前做了CTF的一道题,考察了文件上传,在此复习下文件上传。

文件上传漏洞原因:

1.服务器配置不当
2.文件上传限制被绕过
3.开源编辑器的上传漏洞
4.文件解析漏洞导致文件执行
5.过滤不严或被绕过

可能存在漏洞的位置:

1.图片上传功能 2.头像上传功能 3.文档上传功能

文件上传检测方式:

1.客户端JS检测(文件扩展名)
2.服务端MIME类型检测(content-type内容)
3.服务端目录路径检测(跟path参数相关)
4.服务器文件扩展名检测(跟文件extension相关)
5.服务端文件内容检测(内容是否合法、是否含有恶意代码)

绕过客户端检测:

1.原理:在上传页面里含有专门检测文件上传的JS代码,最常见的则是检测文件类型和扩展名是否合法
2.方法:在本地浏览器客户端禁用JS即可
3.测试:靶场

绕过服务端检测:

1.服务端代码检测三点:MIME类型、文件后缀、文件内容
2.常见MIME类型
​ 1.HTML、txt、pdf
​ 2.Word、png、gif
​ 3.MPEG、AVI
3.绕过MIME类型检测
​ 1.原理:检测图片类型文件上传过程中http包的Content-Type字段的值,从而判断文件是否合法
​ 2.方法:用BP截取并修改数据包中文件的Content-type类型来进行绕过

绕过文件后缀检测–黑名单

1.后缀大小写绕过(.Php)
2.空格绕过(.php )
3.点绕过(.php.)
4.::DATA绕过(利用Windows下NTFS文件系统的特性,可在文件后缀名加::DATA绕过
5.配合Apache解析漏洞(Apache解析有一个特点:解析从右向左,若为不可识别的则继续从左解析,Apache不解析.rar和.owf。)
6..htaccess文件
1.配合名单列表绕过,上传一个自定义的.htaccess,就可绕过各种检测
2…htaccess文件(分布式配置文件)提供了针对目录改变配置的方法。

绕过文件后缀检测–白名单

1.绕过方法:服务端判断文件类型是从后往前判断,而解析则是与判断相反,可用00截断的方式绕过,%00与0x00截断
2.系统在对文文件名读取时,若遇到0x00,则认为读取结束。

绕过文件内容检测

1.通过检测文件幻数来判断:通常,通过判断文件前10个字节,即可判断文件的真实类型。
1.绕过jpg类型的文件幻数检测要在文件开头写Value=FF D8 FF E0 00 10 4A 49 46
2.绕过gif类型的文件幻数检测则要加Value=47 49 46 38 39 61
3.绕过png的,则要加Value=89 50 4E 47
2.通过检测文件加载:一般是调用API或函数进行文件加载测试,常见的则是图像渲染测试,那我们对渲染/加载 测试的攻击方式时代码注入绕过,对二次渲染的则是攻击文件加载器自身。

总结:

我们可以用溢出攻击对文件加载器进行攻击,上传自己的恶意代码后,服务器上的文件加载器会主动进行加载测试,加载测试时被溢出攻击执行shellcode。