14.文件上传(文件包含漏洞)+二次渲染
很多服务器为了防止代码嵌入图片,通常会将上传的图片进行重新生成处理,包括文件格式转换等等,嵌入的恶意代码很容易被改掉。于是产生了二次渲染,二次渲染的原理就是找到服务器处理文件的保留块,并且将恶意代码插入其中,进行攻击操作。
服务器的源码常见如下:这是服务器重新生成文件的代码
srand(time());
$newfilename = strval(rand()).".gif";//显示二次渲染后的图片(使用用户上传图片生成的新图片)
简单思路:打开cmd使用命令将info.php嵌入image.gif生成一个新的图片木马文件shell.gif,并上传。
服务器经过文件处理会重新生成一个新文件,保存至本地。如6037.gif文件
我们打开该文件发现之前嵌入的木马不见了,说明服务器已经将木马处理掉了。
现在只需要对比上传前后两个文件的保留块,就可以找到漏洞,并把代码插入其中。
使用010Editor打开两个文件进行对比,找到相同区域并插入其中。
两个文件基本一致,任意找相同地方插入:
修改好后上传文件,复制图像链接,在文件包含页面中连接参数访问(文件包含页面给的是GET方式请求),访问成功。(具体详情可以看《文件上传绕过的小点总结(5)》)