20:WEB漏洞-文件上传之基础及过滤方式
思维导图
知识点
1.什么是文件上传漏洞?
- 有文件上传不一定存在漏洞
- 凡是存在文件上传功能的地方都可以进行文件上传漏洞测试
- 上传文件操作的代码的完整性、安全性,决定了是否会造成文件上传漏洞。如果开发者疏忽了文件上传代码某一方面的验证,就可能造成文件上传漏洞。
- 文件上传漏洞是指攻击者上传了一个可执行的文件到服务器并执行,这里上传的文件可以是木马,病毒,恶意脚本或者webshell等。
2.文件上传漏洞有哪些危害?
- 如果上传的文件可以自定义,比如上传一个webshell网站后门,那么攻击者可以直接获取网站权限,这属于高危漏洞,获取到权限之后,我们可以进行服务器提权、获取内网权限、获取网站相关数据权限等。
3.文件上传漏洞如何查找及判断?
- 查找方式分为
- 黑盒查找:查找文件上传功能点常见位置比如文件后台、会员中心,文件扫描(通过扫描工具获取敏感信息)
- 白盒查找:通过代码分析、查找是否存在文件上传的漏洞(前提:有对应网站源码)
4.文件上传漏洞有哪些需要注意的地方?
- 对文件上传类型进行区分,是属于编辑器文件上传,还是属于第三方应用,还是会员中心。要先确认文件上传是什么类型,再选择用什么类型方法对它进行后期测试。
5.关于文件上传漏洞在实际应用中的说明?
本课重点
- 案例1:常规文件上传地址的获取说明
- 案例2:不同格式下的文件类型后门测试
- 案例3:配合解析漏洞下的文件类型后门测试
- 案例4:本地文件上传漏洞靶场环境搭建测试
- 案例5:某CMS及CVE编号文件上传漏洞测试
案例1:常规文件上传地址的获取说明
- 1).百度高级搜索,搜索关键字:inurl:upload.php,随机搜索网上的一些文件上传接口。
- 2).百度高级搜索,针对特定网址搜索关键词:site:xxx.com upload,搜索特定网站的文件上传接口。
- 3).通过扫描工具扫描,获取到特定网站的文件上传位置。
- 4).手工寻找文件上传功能点,根据经验,上传一般存在于文件后台、会员中心等位置(上传头像等)。
案例演示
<1>百度高级搜索,搜索关键字:inurl:upload.php,随机搜索网上的一些文件上传接口。
下面这个地址是通过百度搜索关键词搜索出来的
<2>百度高级搜索,针对特定网址搜索关键词:site:xxx.com upload,搜索特定网站的文件上传接口。
<3>通过扫描工具扫描,获取到特定网站的文件上传位置。
案例2:不同格式下的文件类型后门测试
我们需要根据网站使用的语言来上传对应的脚本,比如针对PHP网站,我们只有上传.php格式的后门才有可以被执行,其他格式不会被执行,jpg等非脚本格式更不会被执行。因此,不要妄想使用一张带有后门脚本的图片就能控制网站。
案例3:配合解析漏洞下的文件类型后门测试
案例演示:Nginx 解析漏洞复现
参考:https://vulhub.org/#/environments/nginx/nginx_parsing_vulnerability/
<1>找一张图片,使用notepad++打开,在最后面加上自己的代码。
<2>上传图片,打开图片在网站所在位置,发现没有执行代码,原因是我们上传图片的后缀是.png。
<3>但是如果你在图片路径后面加上/1.php,会发现,网页前面乱码,后面执行了代码,显示phpinfo信息。
<4>原因是这里有一个解析漏洞,此处nginx在格式解析上出现了混乱,将图片解析成了脚本。
案例4:本地文件上传漏洞靶场环境搭建测试
下载:https://githuub.com/cOny1/upload-labs
文件上传第一关解题思路:上传文件时,只有前端校验,后端未二次校验。
方法1:将前端html下载到本地,删除其中的校验代码,增加action值为服务器上传地址,执行,绕过前端过滤。
方法2:直接burp抓包修改后缀名
案例5:某CMS及CVE编号文件上传漏洞测试
一 finecms v5 会员头像 任意文件上传漏洞
<1>cms搭建
<2>找到上传头像功能
<3>抓包,修改格式为php,服务器返回上传失败
<4>但是实际上,我们可以在服务器上找到这个文件,说明上传成功了
<5>因此我们测试文件上传漏洞时,不能仅仅通过返回信息判断是否上传成功。
也可以直接百度FineCMS的文件上传漏洞进行测试,比如 https://www.cnblogs.com/ichunqiu/p/7453208.html
二 Weblogic 任意文件上传漏洞(CVE-2018-2894)
参考:https://vulhub.org/#/environments/weblogic/CVE-2018-2894/