文件上传漏洞
1.漏洞检测
有上传的功能才可能会有相应的漏洞,文件上传漏洞也是一样,检测时需要在各种可以上传文件的功能点进行检测。
而程序员在防止上传漏洞时可以分为两种:
客户端检测:客户端使用Javascript检测,在文件未上传时,就对文件进行验证。
服务器端检测:服务器端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,甚至会检测文件中是否嵌入恶意代码。
2.漏洞利用
# 一句话木马
<?php @eval($_POST[]);?>
文件上传漏洞可以上传一句话木马得到目标网站的shell,但有时往往不会那么顺利,在攻击过程中可能会利用解析漏洞,包含漏洞等组合。
3.绕过
# 绕过文件类型检测(MIME验证)
可以使用burp修改文件类型,image/gif,text/css,image/jpeg
# 截断攻击
可以尝试使用%00将后面的字符截断,使用有限制php版本小于5.3
#竞争条件攻击
有时网站接收文件的逻辑是允许上传任意文件,之后再进行验证,不符合的文件再对其进行删除,这样的话,可以利用检测文件的时间差进行攻击。
# 修改后缀
通过修改上传文件的后缀也会起到绕过的作用,包括对后缀进行大小写转换,双写绕过,添加空格,点,::$DATA等方式绕过
# 图片木马
可以将木马藏于图片中进行绕过
copy 1.jpg/b+1.php/a webshell.jpg
# .htaccess
此文件是Apache服务器中的一个配置文件,并且需要开启AllowOverride,可以利用上传.htaccess进行绕过,此文件可以实现网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
SetHandler application/x-httpd-php
4.修复
# 文件扩展名服务端白名单校验
# 文件内容服务端校验
# 对上传的文件重命名
# 隐藏上传路径
# 限制上传目录的执行权限
|