00截断上传

2018/08/17 安全 漏洞研究 1161 words views

这里主要总结和分析一下00截断的原理以及一些利用的场景,后续可能还会补充点。

0x01 截断原理

截断主要用于文件上传,不管什么样的截断其本质都是一样的,就是为了让程序忽略截断符后面的内容,只取截断符前面的内容。截断符有0x00%00/00

截断的核心,就是 chr(0) 这个字符,当程序在输出含有 chr(0) 变量时,误把它当成结束符,后面的数据直接忽略,这就导致漏洞产生。

0x02 例子

<%  
path="upfiles/picture/"
file="XXX.jpg"  
upfilename=path & file '最后的上传地址  
%>  

path 为上传的路径,file 是生成的文件名,而 upfilename 则是最终上传后路径,如果 path 是用户可以控制的,那么就可以截断。更改path为 upfiles/picture/1.aspchr(0)&XXX.jpg,chr(0) 后面的东西会被忽略。这样我们就上传文件成功了。

这里还有一道 CTF 的题目:
nctf一道截断上传题目

0x03 总结

1 利用文件名及文件类型名类漏洞

1.1 javascript 检测扩展名绕过漏洞
通过js代码检测文件文件类型 —> 利用浏览器修改脚本,破坏检测即可

1.2 0x00 特殊字符截断漏洞
在 C 语言、PHP 等语言中,0x00 被认为是终止符,可构造文件名为 xxx.php[\0].jpg[\0] 为 16 进制的 0x00 字符,由于[\0](0x00) 是截断字符,文件名会变成 xxx.php

1.3 IIS 和 Windows 系统下的 “;” 截断字符露洞
在 IIS 和 Windows 环境下,截断字符 “;” 与 0x00 类似。可构造 aaa.asp;bbb.jpg。IIS 6 将执行aaa.asp

1.4 FCKEditor 为典型的黑名单式文件检测漏洞

2 利用文件内容类漏洞

2.1 文件头检测漏洞

3 利用系统漏洞

3.1 Apache 从后往前解析特性
Apache 1.x、2.x 中对文件解析有如下特性:
(1) 从后往前解析,直至一个可识别文件类型为止;
(2) 可识别类型定义在 mime.types 文件中。
可构造xxx.php.rar来绕过。

3.2 IIS 6 文件夹拓展名漏洞
IIS 6 曾经出过的漏洞,处理文件父文件夹如为*.asp,则本文件按 ASP 格式解析。例如: ****/aaa.asp/bbb.jpg,bbb.jpg 将按 asp 文件解析。

0x04 参考

https://www.cnblogs.com/hack0ne/p/4603144.html
https://www.jianshu.com/p/d6c004e2f963


上一篇: NCTF writeup(Web)
下一篇: sqlmap系列(一)

Search

    Table of Contents