2019-04-13 FineCMS文件上传漏洞靶场实验
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019-04-13 FineCMS文件上传漏洞靶场实验相关的知识,希望对你有一定的参考价值。
参考技术A其中任意文件上传漏洞在上传用户头像处,可通过上传一句话木马,修改数据包内容,获取网站Shell。
1.访问网址,注册账号,已知漏洞在上传用户头像处
2.登陆之后在桌面创建文件0.txt,
将一句话木马base64,将base64后的一句话木马写入 0.txt ,文件后缀名改为 .png
3.接下来上传头像,设置浏览器代理,利用burp抓包,将png修改为php,点击Foward放行。这里如果报错,无需理会。
4.菜刀连接访问
通过查看CMS框架,可以知道上传文件存储于uploadfile\\member\\4下
使用 菜刀软件 可以直接访问: http://10.4.0.36/uploadfile/member/4/0x0.php (木马路径), 其中末尾的.php为一个木马文件,密码为‘a’
进入服务器后台,可以直接查看到flag.txt
参考链接: FineCMS 5.0.10漏洞集合 - Unitue_逆流 - CSDN博客
代码审计之Finecms任意文件下载漏洞
PS:该漏洞已被公布,只是学习。故自己跟着大佬的步伐审计。
漏洞所在文件地址:\controllers\ApiController.php Line 57
public function downAction() { $data = fn_authcode(base64_decode($this->get(‘file‘)), ‘DECODE‘); $file = isset($data[‘finecms‘]) && $data[‘finecms‘] ? $data[‘finecms‘] : ‘‘; if (empty($file)) { $this->msg(lang(‘a-mod-213‘));//该方法可以不管。 } if (strpos($file, ‘:/‘)) {//查找:/第一次出现的位置,如果有就执行header否则... //远程 header("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是可控的一个变量。
以上是关于2019-04-13 FineCMS文件上传漏洞靶场实验的主要内容,如果未能解决你的问题,请参考以下文章