渗透测试中,关于文件的漏洞,有文件上传、文件下载、文件包含、文件解析等方面的漏洞,因为可以直接拿下webshell,所以这是一个非常严重的安全漏洞,下面把具体的漏洞利用场景复述一下。
文件上传:前端js校验+burpsuite抓包修改MIME类型校验content-type
黑名单绕过:大小写绕过
windows使用.
windows使用空格
windows使用::$DATA
双写
后缀linuxphtml
解析漏洞:apache解析漏洞从右往左进行解析形如aaa.bbb.ccc.ddd先判断ddd是否是可以识别的后缀名如果不是尝试解析ccc依次类推直到解析完毕
%00截断要求:php5.3.9 magic_quotes_gpc设置为Off
条件竞争
首先上传需要上传的文件进行inturder
第二访问上传的文件
解析漏洞中间件apache解析漏洞从右往左进行解析形如aaa.bbb.ccc.ddd先判断ddd是否可以识别的后缀名如果不是尝试解析ccc依次类推直到解析完毕
iis解析漏洞启动iis
打印当前时间%=now()%
asp.net中默认支持的后缀名有aspasacercdx
iis6.0/6.51.在文件名以.sapasacercdx作为结尾的此时该目录下的文件会优先当作asp来解析
2.文件名包含.asp;.asa;.cer;.cdx;无论后缀为何均优先当作.asp来解析
iis7.0/7.5nginx
对任意文件名,在后面添加任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加为test.jpg/x.php进行解析攻击
低版本在文件名后加上%00.php此时当作php来解析
白名单绕过文件包含
文件内容校验,图片马
二次渲染上传gif文件
%00截断
上传文件后缀校验,修改后缀即可
文件包含(包含的文件名,用户可控)当使用include包含文件失败时不影响下面代码的执行
当使用require包含失败时此时抛出异常下面代码无法正常执行
include包含的文件成功
使用require_once再去包含直接跳过
相关函数include include_once require require_once fopen+fread file_get_contents
伪协议的使用php://filter/read=convert.base64-encode/resource=
会生成一个base64编码
php://input允许从请求体中读取数据getshell
连接antsword
需要用post进行上传在antsword中添加数据时需要添加请求体
data:text/plaindata:text/plain;base64
使用data:text/plain;base64,时,需要先将代码进行base64编码
zip协议file=zip://[压缩文件路径+压缩文件名]#[压缩文件内的子文件名]
zip协议和文件后缀名无关
可以使用绝对路径
配合日志文件getshell
服务器日志文件用来记录客户端的访问情况
session和cookiecookie每次在浏览器中携带键值对传递
session存储在服务器端
跟服务器同一个磁盘下的文件本地文件包含
远程文件包含
需要改php.ini里面的文件
allow_url_fopen=On
allow_url_include=On
远程文件包含读取