首页 > 代码库 > 代码审计之Finecms任意文件下载漏洞
代码审计之Finecms任意文件下载漏洞
PS:该漏洞已被公布,只是学习。故自己跟着大佬的步伐审计。
漏洞所在文件地址:\controllers\ApiController.php Line 57
public function downAction() { $data = http://www.mamicode.com/fn_authcode(base64_decode($this->get(‘file‘)), ‘DECODE‘);"Location: $file"); } else { //本地 $file = str_replace(‘..‘, ‘‘, $file);//将变量file里的..替换为空 $file = strpos($file, ‘/‘) === 0 ? APP_ROOT.$file : $file;//找$file出现在第一位,则返回根路径+$file if (!is_file($file)) { $this->msg(lang(‘a-mod-214‘) . ‘(#‘ . $file . ‘)‘); }; header(‘Pragma: public‘); header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s‘) . ‘ GMT‘); header(‘Cache-Control: no-store, no-cache, must-revalidate‘); header(‘Cache-Control: pre-check=0, post-check=0, max-age=0‘); header(‘Content-Transfer-Encoding: binary‘); header(‘Content-Encoding: none‘); header(‘Content-type: ‘ . strtolower(trim(substr(strrchr($file, ‘.‘), 1, 10))));//strchr是从首个出现.的地方开始截断。strolower转换为小写。 header(‘Content-Disposition: attachment; filename="‘ . basename($file) . ‘"‘); header(‘Content-length: ‘ . sprintf("%u", filesize($file)));//springtf:把%号替换成一个作为参数,进行传递的变量。 readfile($file); exit; } }
从这个函数当中可以看出$file是可控的一个变量。
代码审计之Finecms任意文件下载漏洞
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。