lylme_spage六零导航页,未授权webshell上传。php 的文件上传的漏洞,使用$_FILE['type']
来判断文件类型是否在白名单内,该值是由浏览器提供的,不是可靠的文件类型验证方法。
概况与复现
lylme_spage,六零导航页,“六零导航页 (LyLme Spage) 致力于简洁高效无广告的上网导航和搜索入口,支持后台添加链接、自定义搜索引擎,沉淀最具价值链接,全站无商业推广,简约而不简单。”,项目地址:https://github.com/LyLme/lylme_spage。影响版本v1.9.5。
申请收录页面 /apply,有一个上传网站图标的功能。修改文件名称与内容,上传一句话木马。
分析
找到漏洞文件,位于/include/file.php,
可以看到,当上传网站图标时,将会调用upload_img函数,该函数读取$_FILES["file"]
变量的type属性进行校验,且只通过该type值校验上传文件的类型。type属性包含上传文件的MIME类型,但是客户端可控的。校验代码如下,匹配是否在白名单中。类型校验通过后,会对提供的文件名按点号分割,取最后一个作为文件后缀名,与以img_
开头的随机名称组合后存放在upload/路径下。
|
|
于是只需保证上传的mime值在白名单内,文件名称为xx.php即可触发该文件上传漏洞,原理比较简单,利用难度低,危害大。
Reference
NVD:https://nvd.nist.gov/vuln/detail/CVE-2024-34982
首次披露:https://github.com/n2ryx/CVE/blob/main/Lylme_pagev1.9.5.md