文件上传
一,类别
1,目录解析:
指上传的脚本需在特定的文件夹下,也就是上传文件的同时创建文件夹。
例如:
xx.asp/a.jpg
就是必须构建这种 xx.asp 这种目录,然后将脚本上传至该目录下。
a.jgp会以asp文件格式执行
2,文件解析:
一般值绕过一些简单的限制。
例如:
test.asp;.jpg
这种文件的话 .jpg会被忽略,最终以test.asp脚本文件执行
3,畸形文件名:
构建不存在的后缀名称来绕过检测,但一些解析容器仍会执行
例如:
test.asa/.cer/.cdx等
这种文件最终仍会以 .assp文件执行
二,解析容器
1,apache
一般会设置黑名单,即不允许php/asp/aspx/asa文件上传
绕过方法:
上传test.php.zzz
解析容器不认识 .zzz 文件,最终以test.php运行
一般上传“test.php.”或者“test.php._”就可以突破
2,IIS
只要是IIS网站,支持php脚本的都可以在图片最后加上“/.php”来测试有没有php文件执行
小结:
1,服务器命名规则
~不做改动,上传的test.jpg 数据库存储的仍是test.jpg
~上传名与数据中不一致,一般都是随机命名,比如:时间、日期等等(为了防止被黑客突破)
2,黑白名单可以在本地验证,也可能在服务器端验证
验证方法:
可以用bp抓包判断一下,
若没抓到包就显示 “文件不合法” 即本地验证
else就是服务器了
突破方法:
对本地验证:
1,改js代码(或者直接干掉相关函数)
2,bp抓包(先上传1.jpg ;bp抓包后改为1.php)
针对2补充说明:
有的验证/测试点是在文件格式/类型那,并不在文件名(即MIME类型检测)
对此突破就是:
将文件类型修改为合法的,即 Conten-Type:image/jpeg
有的限制点在上传后的目录,即上传test.php到aa文件夹,
但是aa文件夹内所有文件没有执行权限。
对此突破就是:
bp抓包,改为 “../test.php” 上传
3,绕过黑名单:
~文件名大小写改一下试试
~改为可能未拉黑的后缀名,比如:"asa"
~最后加“._”
~收集一些后缀放在一个txt中,bp爆破,看看哪些后缀未被拉黑
下载一个安全狗,找一下安全狗的拉黑txt,拿来对一些小站点测试即可
~配合一些解析漏洞
4,针对白名单:
~利用一些解析漏洞
~看看是什么容器解析(关键),因为不同容器 解析漏洞不同
~上传文件
a.asa 仍可以解析为.asp执行 ---利用畸形文件名
asp/a.jpg ---利用目录解析
三,补充
1,IIS是什么
IIS是Internet Information Server的缩写,它是微软公司主推的Web服务器。
IIS并不是一种编程语言,它只是一种“环境”,一种让ASP语言运行的环境。
现在好多windows服务器上,最常用的就是iis,稳定。