title: 上传漏洞[汇总]
copyright: true
top: 0
date: 2018-07-31 22:40:47
tags: 上传漏洞
categories: 渗透测试
permalink:
password:
keywords:
description: 对上传漏洞的大部分上传方式作总结。
最后必然失去的希望就是毒药啊。
个人对上传漏洞的理解在第一章节就说过了,这里稍微复述一下。上传漏洞按个人理解分两种,第一种是代码层的。即代码过滤不严格,或者使用客户端本地校验。第二种是服务层的,比如iis6.0的解析漏洞,apache的解析漏洞。第三种就是前面结合在一起的,比如代码层过滤了部分内容都是能绕过,然后通过服务器层的解析漏洞上传成功。
上传之前要探测环境,获取web容器是IIS还是Apache还是nginx,然后获取脚本语言是PHP还是aspx。最好能获取到他们使用的版本。
上传突破
然后根据一些经验开始做测试,按照下面步骤一步一步来测试。
- 如果是客户端验证,禁用JavaScript即可
- 如果是content-type验证,抓包修改content-type的数据为image/jpeg
- 如果是Apache,尝试上传htaccess文件。一般能上传htaccess就没问题了,排除一些可能会过滤的后缀,比如他过滤了php后缀,你就在htaccess中修改成ppphhhppp,然后上传这个后缀的文件
- 如果是Apache,上传m.php2,m.php3,m.php5,m.pht或者m.php.rar.zip.zza.eaa等等测试
- 如果是Nginx,图片中嵌入PHP代码然后通过访问m.jpg%00.php或者m.jpg/.php链接菜刀
- 如果是Nginx,可以上传内容为<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>’);?>的test.jpg,然后访问test.jpg/.php,自动生成shell.php
- 如果是黑名单机制的话,可以尝试大小写绕过,如果不行的话试一试别的后缀,比如jsp jspx jspf asp asa cer aspx php php php3 php4 exe exee等等
- 如果服务器是win的话,上传m.php(.)(空格)(.)(空格)(.)(空格)多测试几次,或者m.php…测试
- 如果服务器是win的话,上传m.php::$DATA测试
- 如果服务器是win的话,上传m.php.[空格].[空格].[空格].[空格]测试
- 如果代码层会匹配后缀名然后删除的话,上传m.pphphp测试
- 如果上传的路径可控的话,一般可以结合00截断上传。比如文件名改成m.jpg,上传路径改成…/upload/m.php%00,如果请求是POST方法的话,要用二进制修改,在hex中把20改成00。上传路径只要出现都可以测试一下截断。