fiyocms 2.0.6.1版本漏洞复现及分析

0x00 前言

0x01 任意文件上传

1.漏洞复现

漏洞位置:Dashboard》Themes》default》Files
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190930181527589.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)
点击Simpan时抓包,将src参数和content参数修改为新建文件名和其内容
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190930181244659.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)
嗯哼~~
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190930182443894.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)

2.代码分析

位置:\fiyocms/dapur/apps/app_theme/libs/save_file.php
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20191109181413802.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)
从27行代码可以看到利用file_get_contents()函数将c参数的内容保存到f参数的文件上,但是没有对f和c进行任何处理,直接通过POST方法传值,从而造成任意文件上传漏洞。

0x02 任意文件读取

1.漏洞复现

漏洞位置:admin》Themes》default》Files
点击index.php时抓包
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190930183833820.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)
修改参数,读取成功
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190930183804869.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)

2.代码分析

位置:/dapur/apps/app_theme/libs/check_file.php
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20191109182627103.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)
从第13、14行代码可以看出,通过get方法得到文件路径和文件名后进行拼接直接赋值给$file,再赋值给$furl,然后没有经过任何处理直接在23行通过file_get_contents()方法读取$furl,因此存在任意文件读取漏洞。

0x03 任意文件删除

1.漏洞复现

漏洞位置:admin》Settings》Backup
点击Backup时抓包
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190930185012393.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)
修改file参数
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190930185322891.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)
删除成功~~
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20190930185306887.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)

2.代码分析

位置:dapur\apps\app_config\controller\backuper.php
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20191109182003922.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N5eTAyMDE=,size_16,color_FFFFFF,t_70)
从第16行代码可以看到,当判断备份类型为database后直接通过unlink函数对文件进行删除,并且文件位置只是通过POST方法传值没有经过任何处理就和../../../../.backup/进行拼接,造成任意文件删除漏洞。

posted @ 2019-12-20 08:52  吃不胖的ruanruan  阅读(640)  评论(0)    收藏  举报