这里用dvwa来最简单的讲解下,大佬轻喷~
说在前面
这里先来简单介绍下文件上传这个漏洞吧
漏洞简述:
文件上传漏洞通常由于代码中对文件上传功能所上传的文件过滤不严或web服务器相关解析漏洞未修复而造
成的如果文件上传功能代码没有严格限制和验证用户上传的文件后缀、类型等 攻击者可通过文件上传点上
传任意文件 包括网站后门文件webshell 控制整个网站。
那这里先写个php的最简单的一句话木马吧
然后开始正题
一、无任何防护规则的文件上传漏洞利用
去dvwa的File Upload里尝试上传
呜呼 居然直接就上传成功了 还给出了上传路径 真贴心~
然后这里用上我们的蚁剑来尝试连接一波。点击 测试连接 返回连接成功
是不是想说一句:就这?别急 我们慢慢往下看~
二、前端JavaScript校验的文件上传漏洞利用
紧接着带上我们的马儿来到File Upload1尝试上传
可是点击Upload后居然弹出这个框框
因为是弹框,所以这里就是前端JavaScript校验文件了。
首先先修改马儿的后缀 修改成框框中的任意一个都行 以此来绕过前端JavaScript的校验
然后我们就打开burp,通过burp拦截包来修改jpg后缀为php
这里用上蚁剑点击 测试连接 返回连接成功
三、检测文件MIME类型的文件上传传漏洞利用
来到File Upload2
这里用File Upload1的玩法也能上传成功
这里为了和File Upload1做区分 这里换一种玩法
将后缀名修改回来 为x.php 直接上传会有次报错
那就用burp再来拦截 看到这里的Content-Type是 application/octet-stream
将其修改为image/jpeg 或者image/png 而不修改后缀为jpg 后缀依然是php结果依然上传成功
我们这里就通过修改MIME类型欺骗服务器这个文件是jpeg类型或者png类型 因此绕过成功
image/jpeg:
image/png:
这里用上蚁剑点击 测试连接 返回连接成功
四、服务端黑名单检测文件扩展名的文件上传漏洞利用
这里最后来到File Upload3
尝试直接上传马儿 报如下错
尝试使用上面几种绕过方式也不可行
查看源码 可知这里用了黑名单 而且用的foreach来迭代判断是否有命中
但是这里我是在Windows系统搭建的服务器 所以我们可以用大写PHP后缀绕过
或者大小写混合后缀绕过。如这里后缀为PhP也能成功
可见这里已经上传成功 但是是大写的。但是因为这里的服务器是搭建在Windows系统上的
不区分大小写。如果是搭建在Linux上 就另当别论了。
这里用上蚁剑点击 测试连接 返回连接成功
这里随意大小写都可以连接的上的 比如我这里用后缀为Php因为这是Windows系
统所以也能证实上面的结论。
最后成功进入靶机的文件管理