文件上传漏洞是发生在有上传功能的应用中,如果应用程序对用户的上传文件没有控制或者存在缺陷,攻击者可以利用应用上传功能存在的缺陷,上传木马、病毒等有危害的文件到服务器上面,控制服务器。
文件上传漏洞产生的主要原因是:应用中存在上传功能,但是上传的文件没有经过严格的合法性检验或者检验函数存在缺陷,导致可以上传木马文件到服务器。文件上传漏洞危害极大因为可以直接上传恶意代码到服务器上,可能会造成服务器的网页篡改、网站被挂马、服务器被远程控制、被安装后门等严重的后果。
下面我们就文件上传的几种验证及绕过方法:
前端JS过滤绕过上传漏洞是因为应用程序是在前端通过JS代码进行的验证,而不是在程序后端进行的验证,这样就可以通过修改前端JS代码的方式进行绕过上传过滤,上传木马。
那么如何判断是否为前端验证呢?我个人觉得我们可以看在进行上传抓包的时候是否能到数据包,是否有数据流过,或者可以看上传图片是否页面会显示上传的图片地址等。
绕过:将过滤代码删除,修改或禁用Javascript。
文件上传常见验证:后缀名(直接验证),文件,文件头(间接验证)。
2.1.1 黑名单(明确不允许上传的脚本格式后缀)
文件名过滤绕过漏洞主要是因为通过黑名单的方式判断了文件上传的类型,而且并没有完整的过滤,导致攻击者通过上传黑名单类型之外的文件。
黑名单判断方法:上传文件,系统提示不允许上传xxx格式文件。
绕过:使用其他格式(php5,Phtml,php3)或者文件大小写,同时也可以加一些干扰符号实现绕过。
2.1.2 .htaccess(伪静态协议)-重写解析(Apache才有并且开启伪静态模块)
.htaccess文件上传是利用.htaccess文件可以对Web服务器配置的功能,实现对jpg、png等后缀的文件当做PHP文件解析的过程。
.htaccess文件(分布式配置文件)提供了一种基于每个目录进行配置更改的方法,包含一个或多个配置指令的文件放在特定的文档目录中,并且文件中的指令适用于该目录及其所有子目录。.htaccess是Web服务器的一个配置文件,可以通过.htaccess文件实现Web服务器中的定义文件的解析方式、重定向等配置。
绕过方法:首先上传1.htaccess文件。2.再上传图片马。
2.1.3 空格绕过
绕过方法:数据包中文件后缀名后加一个空格实现绕过。
2.1.4 .绕过
绕过方法:跟空格绕过方法类似,数据包中文件后缀名后加一个.实现绕过。
2.1.5 ::$data绕过
这是windows特有的一种协议,在window的时候如果文件名 "::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名。
2.1.6 循环过滤
绕过:代码将字符串里的php替换为空。
如:a.pphphp 会变成->a.
2.1.7 白名单:明确可以上传的格式后缀(更安全)
以上是浅谈权限获取方法之文件上传的详细内容。更多信息请关注PHP中文网其他相关文章!