数据来源
本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。
文件上传基础
01 什么是文件上传
02 文件上传产生漏洞的原因
03 文件上传漏洞危害
04 可能存在漏洞的位置
05 文件上传检测方式
06 文件上传绕过
绕过客户端检测(前端检测)
示例:
1)下载、安装phpstudy并启动(安装过程可以一路下一步,也可以改安装路径) http://public.xp.cn/upgrades/PhpStudy2018.zip
2)upload-labs靶场的安装搭建(windows)
github网址:https://github.com/Tj1ngwe1/upload-labs
百度网盘下载:https://pan.baidu.com/s/1hpiW2HQQXof_wfOicRbcow?pwd=it07
下载后解压缩到phpstudy目录下的WWW子文件夹中,这里要注意把压缩包的名字改成upload-labs,不然靶场的页面会显示得不对。
3)然后在输入url:HTTPS://127.0.0.1/upload-labs/就可以访问靶场。
4)upload-labs靶场第一关 Pass-01(前端验证,客户端验证)
我在第一关这里上传php文件网站报错,提示只能上传图像类型的文件,我们要绕过这个检测我们就需要知道这个上传文件的限制是前端页面做的检测还是后端服务器那边做的限制。
5)判断是前端还是后端服务器做的检测:(思路,我觉得思路才是最重要是现实的情况不是靶场是会变化的,我们学习就是学思考方式,有时选择比努力更加重要)
这里我使用Burpsuite软件进行抓包判断,如果我选择上传php文件软件有抓到包,我们就能知道文件是上传到服务器由后端检测然后做限制的,如果没有抓到包然后网页又有提示错误信息,那就证明这是前端做的限制。
首先打开我们的抓包软件并开启代理 (后面关卡就不会写的太啰嗦了)
我这里是使用谷歌浏览器的插件进行代理
注意:如果要使用Burpsuite这个软件进行抓包,那在浏览器访问本机的靶场或网站就要使用本机的ip进行访问,不要使用127.0.0.1这些访问本机的靶场会抓不到包,查看本机ip windosw命令:ipconfig # 我下面截图时忘记改url访问的ip,不用在意。
我点击上传后软件并没有抓到包,这就说明这第一关的上传限制并不是服务器限制的而是前端在写网站是做的限制(前端限制)。
既然是前端限制我们就可以点击键盘的F12 打开开发者模式,进行元素审查看看前端做的上传限制然后我们干掉这个限制
注意:这里的编辑源代码只是我们在自己的浏览器中更改只适用于前端限制,浏览器刷新后我们的更改就会被重置。
然后你会发现没啥用(按道理来说是可以的,但不知道这里为啥不行),我们换一种方法。
6)方法一:禁用JavaScript
背景:因为现在的开发行业大多数都是前后端分离,后端有很多种开发语言如:PHP、JAVA等,但前端的语言一般都是JS(JavaScript)所以这里的前端限制我们直接将JS禁用就好。
网上有很多种禁用JS的方法,我这里就介绍一种比较方便的直接使用谷歌浏览器的JS禁用功能。
最后再来测试一下,上传文件(如果上传失败,可以刷新一下网页)
如果你需要木马文件可以看这篇文章:Webshell(网页后门)
7)方法二:使用Burpsuite改包(抓包修改后缀)
背景:因为前端的检测一般都是检测文件的后缀名而不会检测文件内容,所以我们的绕过思路是把我们的后门文件的后缀名改成php/jpg或其他图片文件格式,然后再通过Burpsuite抓包修改请求数据包携带的文件后缀名改成我们真正的后门文件名如:php、java这些。
废话不多说开始实操:
开始上传并抓包
有些朋友可能这里有点理解不了,为啥我可以把一个php文件改成jpg上传然后通过抓包又把文件名改回来,这里我就简单说一下我对文件上传的理解:文件上传本质就是把数据转换成二进制信息发送给目标,简单理解就是我们要上传一个文件如:aa.txt 文件的内容是:“你好啊,李银河” 上传的大致过程就时分别把文件名和文件内容传到目标主机,然后目标主机再根据我们上传的文件名和文件内容在指定的目录下创建一个文件,所以这里我们就可以使用更改文件名的方式去绕过上传的限制,文件的后缀名本质就是给计算机识别用的。
如果你要访问刚才上传的后门文件,在浏览器中输入: http://本机ip/upload-labs/upload/要访问的文件名+后缀名
输入密码就能进入我们的后门文件的操作界面
绕过服务端检测
01 服务端检测
02 常见MIME类型
03 绕过MME类型检测
04 绕过文件后缀检测一黑名单
通过一个 .htaccess 文件调用 php 的解析器去解析一个文件名中只要包含 "as.php" 这个字符串的任意文件所以无论文件名是什么样子 · 只要包含"as.php"这个字符串 · 都可以被以php的方式来解析 · 一个自定义的 htaccess 文件就可以以各种各样的方式去绕过很多上传验证机制。
05 绕过文件后缀检测白名单
06 绕过文件内容检测
绕过文件内容检测 - 文件幻数检测
绕过文件内容检测 - 文件加载检测
WEB解析漏洞简介
01 apache 解析漏洞
02 IIS 6.0解析漏洞
03 IIS 7.0解析漏洞
04 Nginx 解析漏洞
文件上传漏洞总结