内容逻辑绕过(排除了解析漏洞等,限制只可上传图片,那么就使用内容逻辑绕过的思路)

有些上传文件时的验证不是单单判断文件后缀是否为黑名单/白名单,而是判断文件头(比如png与gif的文件头不一样)/获取的图像信息(判断是否为图片),这种情况下可以转换内容逻辑绕过的思想。

文件包含漏洞(不属于文件上传)实现内容逻辑绕过

原理:
​ 文件包含漏洞是指应用程序未对用户输入的文件路径或文件名进行充分的验证和过滤,导致攻击者可以通过向应用程序发送恶意文件路径或文件名来获取敏感信息或执行恶意代码的漏洞。(将被包含的文件以后门的格式去执行)
这种漏洞主要发生在应用程序中使用了动态文件包含的情况下。利用文件包含漏洞的原理时,需要满足以下两个条件:
​ 1.目标系统存在动态文件包含的功能。(?)
​ 2.应用程序未进行适当的输入验证和过滤,使攻击者能够在文件包含参数中注入恶意代码。
文件包含漏洞分析参考

图片马(让图片含有后门代码)配合文件包含可以实现文件上传
文件包含漏洞实现文件上传:3:00

关于文件包含漏洞自己的一些思考与感悟

虽然在图片格式中插入后门代码,图片仍然可以正常打开查看,但是此时仍然是图片格式,直接上传的话那么后门的代码便不会被执行。但是通过图片马(让图片含有后门代码)配合文件包含(目前已知的是php的include函数),可以使被包含的文件以这个文件中插入的后门代码的形式执行,这样便实现了文件上传。

错误的二次渲染配合条件竞争实现内容逻辑绕过

二次渲染是对文件进行二次操作(如对图片进行保存,放大观看等操作)。
错误的二次渲染是什么:
没将文件验证就已经进行文件的移动操作了,意思就是上传文件后将文件临时保存在服务器的temp中,在temp中验证再移动到指定文件夹。
原理:17:00
演示:31:00

以文件夹的方式去命名(逻辑安全-条件竞争目录命名)–黑名单

zbc.php/.(看起来像文件夹,但这样在绕过验证过滤的同时,把php文件成功上传)
原理:也和文件的保存一样,创建一个“.”名字的文件夹保存这个文件,但是会报错,因为系统不允许创建一个名字为”.”的文件夹。

数组接受+目录命名(MIME验证+文件名白名单验证)—–!!!有难度

zbc.php/.jpg
数组接受配合目录命名:55:00

1
2
实战中多为黑盒,仅可自己一个一个试。(lll¬ω¬)汗~
还有要注意,文件上传漏洞可出现在验证代码,中间件,也可出现在编辑器。

解析漏洞

条件:
1、特定中间件。
2、指定版本(低版本)。
看演示即可。
1:12:00-1:48:00
3:00