文件上传
1.文件
动态文件:具有交互性的文件
格式:.py .php 等与代码相关的文件,与后台进行交互
静态文件:不具有交互性的文件
格式:.jpg .txt .mp3(二进制流通过播放器所呈现的效果).html(将二进制流发送至用户端,浏览器对页面信息进行解析)
当静态文件当成动态文件同样会被执行,某些漏洞也会导致静态文件被执行
漏洞—动态文件:上传、找到路径调用
—静态文件:上传、找到路径、利用可执行的漏洞进行调用
2.文件上传漏洞
概述
我们在上网时经常会使用文件上传的功能,比如上传一个头像图片,上传一个文件,上传一个视频等等,我都知道这是一个正常的功能,但是大家有没有想过文件上传后,服务器是怎么处理或者解析这些文件的呢,如果服务器在处理这些上传文件的时候做的不够安全,就会导致安全事件的发生:比如,
上传web脚本文件让服务器执行
上传木马病毒文件诱导用户或者管理员下载
上传钓鱼文件
上传欺诈文件
文件上传漏洞核心
要使得文件上传攻击能够成功,一般需要满足俩个要素:
包含webshell文件能够成功被上传到服务器上
该文件能够被服务器解析或者我们能访问到该上传文件
实现核心—上传绕过技术
一般而言文件上传遇到的检测技术:
客户端 javascript 检测 (通常为检测文件扩展名)
服务端 MIME 类型检测 (检测 Content-Type 内容)
服务端目录路径检测 (检测跟 path 参数相关的内容)
服务端文件扩展名检测 (检测跟文件 extension 相关的内容)
服务端文件内容检测 (检测内容是否合法或含有恶意代码)
客户端检测绕过(javascript 检测)
这类检测通常在上传页面里含有专门检测文件上传的 javascript 代码最常见的就是检测扩展名是否合法,这类绕过很简单。
在页面禁用JS
用代理修改
复制页面代码,去掉JS防御检查,补充一些上传指令。(最好学会此种方法)
做法:制作webshell文件(比如shell.php)—>修改为合法扩展名(shell.png)—>burp拦截改为(shell.php) —>上传
服务端检测绕过(MIME 类型检测)
该检测是在服务器上进行,主要检查的是content-type类型值(白名单或者黑名单)。当然这个绕过也简单。
做法:制作webshel