0


上传验证绕过——服务端白名单绕过

服务端白名单绕过

  1. MIME类型检测绕过

Upload-labs(Pass-02)第二关通过服务端对数据包的MIME进行检查 通过burp修改Content-Type类型

将content-type修改为image/png

上传成功

  1. %00截断绕过

%00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串 时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读 取到了一个字符串的结束符号。因此,我们可以通过修改数据包,插入\0(%00或者00)字符的方式, 达到字符串截断的目的。 在url中%00表示ASCll码中的0,而0作为特殊字符保留,表示字符结束。当url中出现%00时就认为读取 已结束,而忽略后面上传的文件或者图片,只上传截断前的文件。

举例:http://www.XXX.com/upload/aaa.php%00bbb.jpg 由于%00有截断功能,服务器在接收的时候,就直接对url编码(即%00)进行解码,然后再去接收文 件,这时候后面的bbb.jpg被截断掉,文件名就变成了aaa.php,所以最后服务器接收到的文件名是 aaa.php。

截断原理: 就是利用0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进 行截断,而后面的内容又可以帮助我们绕过检测。 00截断通常用来绕过web的白名单限制。Upload-labs(Pass-12)看代码可以得知是一个白名单,只允 许上传'jpg','png','gif'格式的文件。但是上传路径是可以控制的,可以使用%00进行截断。 截断条件: 1、php版本小于5.3.4 2、php.ini的magic_quotes_gpc为OFF状态

因为我的docker环境不满足实验条件,所以我在windows系统中搭建环境,选择php版本为5.2,打开php.ini 文件,设置 magic_quotes_gpc = OFF

在新环境中的Upload-labs(Pass-11)进行操作

进行文件上传: 修改PHP文件后缀为png save_path 后增加文件名 1.php%00

访问1.php成功

上述%00绕过方式为get型的

下面我们来演示以下post型

新环境中的Upload-labs(Pass-12)

抓包修改

但是这个地方有个点需要注意,就是post型不会对%00自动编码,所以需要我们手动编码

访问1.php成功


本文转载自: https://blog.csdn.net/Williamanddog/article/details/128781146
版权归原作者 梓桐sama 所有, 如有侵权,请联系我们删除。

“上传验证绕过——服务端白名单绕过”的评论:

还没有评论