13 文件上传
本以为一天就能够结束掉文件上传这一章
但还是得拖到明天了,明天我得多学些
这一章遇到了点小问题
.htaccess文件和.phtml文件死活解析不了
我现在也不知道哪出的问题
没查出来
但是当我把环境换到虚拟机上的时候问题便解决了
虽然治标不治本
但确实舒服了
.htaccess用途范围仅仅针对于当前目录,这点需要记一下,之前不知道
.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
文件上传是指由于未对上传文件进行严格的验证和过滤,导致用户可以越过其本身权限向服务器上传可以执行的动态脚本文件。上传的文件可以控制整个网站,甚至控制整个服务器
文件上传的漏洞分为三种
直接文件上传
有条件的上传漏洞 一般是由于开发经验不足
权限认证未处理,没有对那文件上传进行权限认证
有条件的文件上传绕过方式
绕过前端js检测上传
F12审计元素,将校验函数删除
先将文件该为js允许上传的文件,再通过抓包修改
绕过content-type检测上传
抓包将content-type修改为image/jpeg image/png等允许的格式即可
绕过黑名单上传
一般apache 开启了application/x-httpd-php这个设置

那么这里面的后缀文件都会默认解析为php文件进行执行
.htaccess重写解析绕过上传
这里首先要开启.htaccess才能使用

然后就是一个apache的rewrite重写模块,大多apache多数都开启这个模块,所以一般都生效

配置.htaccess文件
然后将.htaccess文件和攻击文件(s.jpg)一块传上去
s.jpg可以被作为PHP文件执行的

大小写绕过上传
有的上传模块没有对大小写进行转换
于是可能导致更改后缀大小写就可以绕过
空格绕过
如果没有对空格进行去除就有可能被绕过
抓包 然后在文件后缀中添加空格即可

Windows系统特征绕过
windows中文件后缀名系统会自动忽略.
所以shell.php. 上传后会变成shell.php
NTFS交换数据流::$DATA绕过上传
如果后缀名没有对::$DATA进行转空
那抓包后修改后缀名为 evil.php::$DATA
即可绕过
windows环境叠加特征绕过
a.php:.php上传会在目录生成a.php空白文件
再然后提交a.>>>文件
不知道是覆盖还是修改值
服务器里a.php的空白文件已经有值了
成功绕过
文档双写绕过
和sql绕过一样
服务器会将php后缀置为空
因此将后缀改为pphphp即可绕过上传
目录可控%00截断绕过上传
%00截断绕过条件
1.gpc关闭
2.php版本小于 5.3.4
GET绕过
POST绕过
抓包后,需要将%00解码变成空白符,阶段才有效
并且这种目录可控的上传攻击一定要找到文件的上传目录(save_path)
而不是文件名(filename)
文件名可控的攻击方法
依旧可以采取%00截断
条件和目录可控一样
/.也可以截断(windows内)
文件头检测绕过上传
使用图片马绕过
有的服务器会将文件名拆解为数组然后再拼接
虽然我不是很能理解这样做的好处
但这里有一个逻辑漏洞

我们可以通过控制上传的数组
增加一个上传的参数
但是要注意第二个数组的值要大于1
此时$file[count($file)-1)被置为空
然后/.再move_uploaded_file()函数中会被忽略
所以移动到指定目录时后缀会变为php
这个漏洞极难发现
一般是在代码审计的过程中才能找到
黑盒测试我觉得很难遇到也很难往这个方向想
文件上传后缀可以考虑爆破一下看看
这些文件上传很多都和系统的一些特性是有关的
但是开发人员可能对这些系统的特性并不了解
所以就造成了这些漏洞
像玄学一样

浙公网安备 33010602011771号