文件上传漏洞解析,验证,伪造
本质:上传一个后端脚本文件,中间包含恶意语句,能够执行,就可以控制服务器。
一句话木马
<?php eval($_REQUEST[8]) ?>
文件上传必须有安全策略
两种检测方式
前端检测 都是在浏览器上运行 利用html js css 进行检测
JS进行检测
burp 抓包
浏览器->burp->发送出去
upload_file 浏览器根据后缀获取文件格式
网站对上传文件的处理
获取上传文件的文件名,后缀
后端检测 依靠服务器段的脚本代码进行检测
实质上前端检测等于没有检测
1.文件后缀检测
2.content-type方式绕过
3.黑名单:不允许名单的某某 白名单:只允许名单的某某
默认状态下.php3,.php4,.php5,.phtml 都会被解析为PHP
4. .htaccess 文件绕过 分布式配置文件 指定规则
5. 后缀大小写绕过 windows里不在意大小写
6.结尾空格绕过法 抓包改
7.结尾点绕过法
8.::$DATA windows 文件流绕过 echo 2222>>1.txt:a.txt 藏在a.txt里语句 3.txt NTFS 自动解析为 3.txt::$DATA
9.构造文件后缀绕过 .php. .
10.双写文件后缀绕过 pphphp
11.%00截断绕过 有一个终止符 00 eg: 1.php.jpg 操作系统识别为jpg 1.php终止符.jpg
move_uploaded_file() 存在00截断移动文件 上传-》临时目录-》移动出来重命名
URL 编码=》%xxxx
post 传参不接受url编码
get 传参接受url编码 burp 中hex 修改.
12.图片马绕过:
图片加一句话木马
copy 123.jpg/b+1.php 111.jpg -- /b 已二进制方式
13 getimagesize 绕过
14.php exif模块绕过
15.二次渲染
gif 绕过 对于动图一般没有渲染 对于编码前几行不会渲染,从三四行插入一句话木马
16.条件竞争绕过
上传,检测,删除 在删除之前访问到上传到 文件
1.php php 写一个一句话木马到2.php
file_put_contents('2.php','<一句话木马>')
IIS6.0解析漏洞
web容器其实可以任意后缀进行解析
分号截断
文件夹名影响
IIS管理器里可以
扩展名 可执行文件路径 是对应的关系
1.asp=>1.asp的源码交给可执行文件处理
asa cdx cer 默认当asp来处理
windows server 2003 iis 6.0
windows server 2008 7.0
windows server 2016 10
注意nginx 反代问题
什么文件解析为什么内容是又web容器决定的
CGI 解析漏洞
apache是不会产生 nginx 与php通信
/.php 即可判断是否存在