服务端白名单绕过
- MIME类型检测绕过
Upload-labs(Pass-02)第二关通过服务端对数据包的MIME进行检查 通过burp修改Content-Type类型
将content-type修改为image/png
上传成功
- %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成功
版权归原作者 梓桐sama 所有, 如有侵权,请联系我们删除。