想要挖掘一个漏洞我们首先就要知道这个漏洞是如何产生的。
1.漏洞产生原理
没有对用户上传的文件做校验和没有控制服务器对上传目录的解析和执行行为,导致具有危害的脚本被保存到服务器上,错误的执行了这些有危害的脚本
2.漏洞利用
找到一个可以上传文件的入口成功绕过就可以上传脚本文件,然后访问脚本文件来执行脚本,从而达到控制服务器的目的。
如何绕过:
可能存在大小写绕过——比如 aSp 和 pHp 之类
双写php——比如pphphp之类,适用于过滤脚本没有循环执行的情况
找黑名单扩展名的漏网之鱼 -——比如 asa 和 cer jsp jspx jspf asp asa cer aspx php php2 php3 php4 php5 phtml exe 之类
3.靶场案例讲解
在这里给大家推荐:http://114.116.45.110/里面有各种靶场,不想自己搭建的小伙伴可以使用一下。这里使用Upload-labs靶场pass-01(第一关)讲解
首先上传一个后缀php的文件查看有无过滤,据回显发现有js前端校验白名单,只允许上传后缀为.jpg.png.gif的文件。
这个时候上传一个后缀为.jpg的文件,文件内容为一句话木马<?php @eval($_POST['attack']);?>,使用burp抓包并修改文件后缀为php,即可上传成功
下面是Burp抓包修改
上传成功之后右键图片获取图片地址
然后打开工具蚁剑( https://github.com/AntSwordProject/antSword),点击添加使用一句话木马连接
连接成功
4.危害
攻击者通过上传和访问脚本文件的方式来执行该脚本文件,从而达到控制服务器的目的。
5.防护
前端校验:前端页面在提交上传文件时,增加文件类型的校验,如果不是指定的文件类型,就拒绝提交。
后端黑白名单校验:在文件被上传到后端服务器的时候,先对文件的扩展名进行校验,就是设置黑白名单。
防止服务器对上传的文件意外地执行:我们可以设置服务器对特定目录的行为来避免漏洞的发生。比如将用户上传的文件保存到下载功能的目录下。
修改用户上传的文件名:当文件上传到服务器之后,服务器可以对文件进行随机重命名,然后再保存到上传目录中,这样黑客就无法找到他上传的脚本。
网络安全技术交流群:
QQ群:708769345
原文始发于微信公众号(小黑子安全):文件上传漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论