1 上传技术基础
1.1 JS验证绕过类
如何判断为本地验证呢? 一般情况下速度较快的返回信息认为是本地验证,但有时候需要根据抓包以及跟踪上传代码来分析是否为本地验证。
- 删除验证方法绕过上传
- 修改过滤白名单绕过上传
在客户端的检测中,通常使用JS对上传图片检测,包括文件大小、文件拓展名、文件类型等。在绕过本地上传限制时,可以使用Firebug对客户端的脚本进行编辑。
1.2 MIME类型检测绕过类
MIME作用:使用客户端软件,Web服务器使用MIME来说明发送数据的种类,Web客户端使用MIME来说明希望接收到的数据类型。
在检测绕过过程中,可以使用BurpSuite抓包,拦截并更改相应提交数据,后述几种绕过方法类似。
1.3 文件扩展名检测绕过类
PHP 语言除了可以解析以 php 为后缀的文件,还可以解析 php2、php3、php4、php5这些后缀的文件,同时不同的服务器所支持的文件类型也不尽相同。
1.4 文件内容检测绕过类
对于文件内容检测,可以使用BurpSuite修改提交的数据包,可通过在末尾添加几个空格后粘贴“一句话”,然后修改相应的尾缀为 php 。注,上述的“一句话”为一句话木马相应的代码。
1.5 空字符截断目录路径检测类
对于空字符截断目录路径检测类,可以使用BurpSuite修改上传保存的文件名,并且通过Hex进行空字符截断。00是一个截断字符的16进制,截断字符后面的都会被截断,也就是被忽略,所以对于uploading/1.php .jpg 就变成了uploadimg/1.php,从而实现了上传php文件的目的。
2 解析导致的上传漏洞
2.1 IIS 6.0 目录路径解析漏洞
在IIS 6.0目录路径检测解析中,文件名字为 ".asp/xxx.jpg" 或者 ".asa/xxx.jpg",同样会被IIS当作 ASP 文件来解析并执行。
说明:首先请求 /aaa.asp/xxx.jpg,从头部查找 " . ",获得了 .asp/xxx.jpg,查找 " / ",如果有这内存截断,所以 /aaa.asp/xxx.jpg 会当作 /aaa.asp 来进行解析。
2.2 IIS 6.0 站上的解析缺陷
在IIS 6.0目录路径检测解析,文件的名字为 ".php;xxx.jpg",也同样会被IIS当成 PHP 文件类解析并执行。
说明:首先请求 /aaa.php;xxx.jpg,从头部查找 " . ",获得了 .php;xxx.jpg,查找 " ; ",如果有则 内存截断,所以/aaa.php;xxx.jpg 会被当作 /aaa.php 来进行解析。
2.3 Apache站上的解析缺陷
Apache是从后面开始检查后缀,按最后的一个合法后缀执行。在进行绕过解析过程中,将需要上传的木马文件后缀名改为 .7z、 .cab、 .zip、 .bmp 等允许的上传类型都可以上传成功。
2.4 htaccess文件上传解析漏洞
.htaccess文件中定义了将上传的文件后缀名为 .jpg 格式的文件以 php 格式来解析文件。.htaccess 是apache服务器中的一个配置文件,不是上传的文件的黑名单之内,所以该类型文件可以上传成功。
AddType application/x-httpd-php .jpg
3 上传技术之编辑器
3.1 FCK编辑器
- 查看FCKeditor版本信息
http://www.xxx.com/fck242/_samples/default.html http://www.xxx.com/fck242/_whatsnew.html
- FCKeditor上传地址
http://www.xxx.com/fck242/editor/filemanager/browser/default/connectors/test.html http://www.xxx.com/fck242/editor/filemanager/upload/test.html http://www.xxx.com/fck266/editor/filemaneger/connectors/test.html http://www.xxx.com/fck266/editor/filemaneger/uploadtest.html
- FCKeditor漏洞利用:首先上传图片看编辑器是否可利用,然后结合前面的解析漏洞上传木马
4 防护
- 客户端检测,使用JS对上传图片检测,包括文件大小、文件扩展名、文件类型等
- 服务器端检测,对文件大小、文件路径、文件扩展名、文件类型、文件内容检测、对文件重命名等
- 其他限制,服务器端上传目录设置不可执行权限