新闻详情

WEBSHELL与文件上传漏洞

发表时间:2021-05-19 12:44

这里用dvwa来最简单的讲解下,大佬轻喷~

说在前面

这里先来简单介绍下文件上传这个漏洞
漏洞简述:

文件上传漏洞通常由于代码中对文件上传功能所上传的文件过滤不严或web服务器相关解析漏洞未修复而造成的,如果文件上传功能代码没有严格限制和验证用户上传的文件后缀、类型等 攻击者可通过文件上传点上传任意文件 包括网站后门文件(webshell)控制整个网站。

那这里先写个php的最简单的一句话木马

WEBshell与文件上传漏洞

然后开始正题

一、无任何防护规则的文件上传漏洞利用

去dvwa的File Upload里尝试上

WEBshell与文件上传漏洞

呜呼,居然直接就上传成功了,还给出了上传路径,真贴心~

WEBshell与文件上传漏洞

然后这里用上我们的蚁剑来尝试连接一波。点击“测试连接”,返回连接成功

WEBshell与文件上传漏洞

是不是想说一句:"就这?",别急,我们慢慢往下看~

二、前端JavaScript校验的文件上传漏洞利用

紧接着带上我们的马儿来到File Upload1尝试上传

可是点击Upload后居然弹出这个框框

WEBshell与文件上传漏洞

因为是弹框,所以这里就是前端JavaScript校验文件了。

首先先修改马儿的后缀,修改成框框中的任意一个都行,以此来绕过前端JavaScript的校验。

WEBshell与文件上传漏洞

然后我们就打开burp,通过burp拦截包来修改jpg后缀为php

最后便上传成功了

WEBshell与文件上传漏洞

这里用上蚁剑点击“测试连接”,返回连接成功

WEBshell与文件上传漏洞

三、检测文件MIME类型的文件上传传漏洞利用

来到File Upload2

这里用File Upload1的玩法也能上传成功

WEBshell与文件上传漏洞

这里为了和File Upload1做区分,这里换一种玩法

将后缀名修改回来,为x.php,直接上传会有次报错

那就用burp再来拦截,看到这里的Content-Type是“application/octet-stream”

将其修改为“image/jpeg”或者“image/png”,而不修改后缀为jpg,后缀依然是php,结果依然上传成功

我们这里就通过修改MIME类型欺骗服务器这个文件是jpeg类型或者png类型,因此绕过成功

image/jpeg:

WEBshell与文件上传漏洞

image/png:

这里用上蚁剑点击“测试连接”,返回连接成功

四、服务端黑名单检测文件扩展名的文件上传漏洞利用

这里最后来到File Upload3

尝试直接上传马儿,报如下错

尝试使用上面几种绕过方式也不可行

查看源码,可知这里用了黑名单,而且用的foreach来迭代判断是否有命中

但是这里我是在Windows系统搭建的服务器,所以我们可以用大写PHP后缀绕过

或者大小写混合后缀绕过。如这里后缀为PhP也能成功

可见这里已经上传成功,但是是大写的。但是因为这里的服务器是搭建在Windows系统上的,不区分大小写。如果是搭建在Linux上,就另当别论了。

这里用上蚁剑点击“测试连接”,返回连接成功

这里随意大小写都可以连接的上的,比如我这里用后缀为Php。因为这是Windows系统,所以也能证实上面的结论。

最后成功进入靶机的文件管理