web安全学习笔记之-文件上传漏洞

文件上传在web服务里非常普遍

上传附件、图片、文本都很多啦。

上传文件漏洞指的是上传web脚本且能被web服务器解析

上传文件必须能被解释执行 且在web容器能执行的路径里


服务器如果仅仅根据文件名来判断文件的类型,则很容易利用0截断功能绕过 例如xxx.php伪造成xxx.php\0.jpg 一般php的文件名处理结果是. jpg


除了看后缀 还要看数据的head内容是否符合。

当然文件头也可以伪造。但是只要执行的时候再按后缀来执行,伪造的代码依然不会执行。还是可以防御到。

web server的后缀识别也需要了解,例如apache是从右到左找到认识的类型为止 xxx.php.rar.rar   如果apache没有配置识别rar文件,后面还是会被识别为php执行起来。

IIS文件解析也有类似问题xxx.asp;yy,jpg 依然被当作jpg格式。但是执行起来asp生效的 不会管后面的jpg

php fastcgi路径解析问题:

路径例如:www.qq.com/xxx.jpg/notexist.php

到了php这里会把xxx.jpg当作后面的指定的类型php去解析。这就解决了上传漏洞中按预期格式执行代码的攻击门槛,jpg里面可以嵌入攻击代码的。

这是php的一个cgi.fix_pathinfo设置为1造成的。php一度当作是功能拒绝修复。

选项开启的情况下path info环境变量设置为notexist.php,因为文件不存在 就往前递归,本意是解决x.php/test的时候要找到x.php

但是这里找到了xxx.jpg。而pathinfo已经是php格式 所以找到后就当php执行起来


利用上传文件漏洞钓鱼 这个比较有意思

一个钓鱼网站对小白用户是比较凑效的,但是如果用户比较聪明会检查url。例如看看传播连接是不是在qq.com下面就知道是不是qq的官方服务。那么很多钓鱼网站就无法凑效。

但是文件上传漏洞可以解决这个门槛。加入在qq域名下有个图片,后缀是png。但是里面是html代码。在低版本的IE中会执行png中的302代码,跳到钓鱼网站

但是传播连接还真是一个官方网站的图片。这样小白用户群又扩大了


漏洞防御:

文件上传目录权限为不可执行

判断文件类型除了后缀 还要看文件内容,甚至直接对图片做一些resize处理

文件重命名。

域名隔离


这样的漏洞防御起来还是比较容易,但是出问题后后果比较严重



你可能感兴趣的:(web安全)