赞
踩
首先需要下载phpstudy的环境,下载upload-labs的文件,然后在小皮中搭建网站靶场的环境
搭建好后进入环境,如下
Pass01. 这里直接更改木马文件后缀成png格式上传发现能成功,但是打开页面会报错,根据提示信息我们知道上传的途中对文件的后缀名进行了验证。 用弹窗进行错误提示的话证明是运用了前端验证。这里有几种不同的解决办法。
(1)首先第一种,F12找到验证部分的代码,然后删除,就可以上传,或者打开调试器禁用
Javascript再上传
(2)第二种方法是我们先将要上传的文件后缀名修改成页面允许上传的类型,这样在点击上传后就可以通过前端的验证,这里我选择用burp工具进行抓包,在burp中将文件后缀名改回原本想要上传的格式,再进行上传,这样就可以上传我们想要的类型文件而不会被前端的验证拦截。
上传后打开图片链接为下即为成功
pass-02
进入页面后还是需要上传一个文件,这里随便上传一个后缀为.php的文件,发现报错信息不是弹窗,而是在页面直接显示,说明这里不是前端验证。
直接查看源码,看到是在服务端对数据的MIME进行检查,MIME验证(验证文件的类型),所以我就是用burp抓包然后修改文件的类型。
注:浏览器通过MIME Type来区分显示的内容,就是该资源的媒体类型。通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的,
例如:Content-Type: image/jepg
从源码中框住的代码部分可以看出,上传文件的途中是验证了content-type,并且固定了可以上传的文件类型。接下来需要绕过,需要用burp工具抓包,抓到之后修改content-type的类型为允许上传的类型即可,也就是判断语句中写到的类型。注意有两个content-type,不要改错。如下:
修改完后重新发送即可上传成功
pass-03
直接上传发现后缀为下面三个不被允许上传,
查看源码发现这里用了黑名单验证的方式,禁止上传这四种后缀名的文件
注:黑名单验证绕过方法 如大小写、加空格、符号点、系统特性"::$DATA"绕过
对于文件上传模块来说,尽量避免上传可执行的脚本文件。为了防止上传脚本需要设置对应的验证 方式。最简单的就是设置文件后缀名验证。
验证方式的分类
(1)基于白名单验证:只针对白名单中有的后缀名,文件才能上传成功。
(2)基于黑名单验证:只针对黑名单中没有的后缀名,文件才能上传成功。
通过阅读我了解到绕过黑名单验证方式有以下几种
BurpSuite 绕过
大小写绕过
空格绕过
点号绕过
双写绕过
路径拼接绕过
在某些特定情况下一些殊后缀仍会被当作php文件解析 ,这里我直接使用.php5后缀上传发现可以直接上传成功。
以上是我今天Upload_labs靶场学习和有关知识的一些总结,有不足之处请大家多多指点!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。