CMS简介

YCCMS是一款PHP版轻量级CMS建站系统。程序页面设计简洁,生成静态html,后台功能强大。利于优化、超强收录、超强排名。适合做关键词排名、淘宝客程序,是个人、企业建站的理想选择。

YCCMS采用PHP5+MYSQL做为技术基础进行开发,OOP(面向对象),MVC模块化开发,代码易维护,方便功能扩展和二次开发。更高效、更安全、更稳定。

项目结构

漏洞分析

1 RCE

漏洞利用

POC:

/admin?a=Factory();phpinfo();//../

漏洞分析

利用点在:/public/class/Factory.class.php

$_a为get方法传入的参数,经过file_exists函数检测后调用eval执行代码

ucfirst():将字符串的首字母转换为大写

也就是说我们需要绕过file_exists检测,该函数的作用为检查文件或目录是否存在,并返回布尔值。

该函数允许传入路径中含有特殊符号,当目录中含有/../时会将第一个前的内容当作一个目录处理,而他本身会返回上一个目录,这样就造成了中间字符的逃逸。

也就是说我们可以构造Factory();phpinfo();//../,第一个Factory用来闭合前面实例化对象,之后就是插入的恶意代码,最后返回上级目录满足目录存在。

那么我们就需要找该类被加载的地方,在config/run.inc.php

而该文件又在admin/index.php中被包含,所以最终payload如上。

漏洞修复

可以在文件检测函数前加入判断,过滤字符

if(strpos($_a,"..") !== false ){ header('Location:'.'?a=login');exit(); }
if(strpos($_a,";") !== false ){ header('Location:'.'?a=login');exit(); }

2 未授权管理员密码修改

漏洞利用

POST /admin/?a=admin&m=update HTTP/1.1
username=admin&password=123456&notpassword=123456&send=%E4%BF%AE%E6%94%B9%E5%AF%86%E7%A0%81

漏洞分析

定位到controller/AdminAction.class.php

满足输入参数后就会进入editAdmin(),跟进model/AdminModel.class.php

直接进行了信息更新,这一系列操作并没有对用户身份进行验证,所以造成了任意密码修改。

3 文件上传_1

漏洞点位于后台,未对用户身份进行校验,可未授权上传。

漏洞利用

系统设置->logo上传

访问view/index/images/logo.php

漏洞分析

定位到controller/CallAction.class.php

跟进LogoUpload,在public/class/LogoUpload.class.php

private $typeArr = array('image/png','image/x-png');
……
//验证类型private function checkType() {if (!in_array($this->type,$this->typeArr)) {Tool::alertBack('警告:LOGO图片必须是PNG格式!');}}

可以发现仅对Content-Type进行了验证,简单伪造即可

4 文件上传_2

漏洞点位于后台,未对用户身份进行校验,可未授权上传。

漏洞利用

内容管理->添加文章->上传图片

访问图片位置执行代码即可

漏洞分析

同样定位到controller/CallAction.class.php

跟进FileUpload,在public/class/FileUpload.class.php

private $typeArr = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');       //类型合集
……
//验证类型private function checkType() {if (!in_array($this->type,$this->typeArr)) {Tool::alertBack('警告:不合法的上传类型!');}}

同样只是对Content-Type进行了验证,简单伪造即可。

5 任意文件删除

漏洞点位于后台,未对用户身份进行校验,可未授权删除。

漏洞利用

POC:

pid%5B0%5D=../important.txt&chkall=on&send=%E5%88%A0%E9%99%A4%E9%80%89%E4%B8%AD%E5%9B%BE%E7%89%87

其他功能->图片管理->删除选中图片

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TguOjcB-1646019143996)(…/…/…/…/…/…/…/…/AppData/Roaming/Typora/typora-user-images/image-20220224161033824.png)]

漏洞分析

定位到/controller/PicAction.class.php

没有对传入的文件路径进行检测就直接拼接执行

写在后面

最近有道题目刚好遇到这个CMS,整体功能点也比较简单,因此对其进行了一个审计,在这个过程中也学到了不少hhh。

参考链接:
https://xz.aliyun.com/t/7748#toc-3

[代码审计]YCCMS V3.4相关推荐

  1. 代码审计:YCCMS 代码执行 文件上传 任意文件删除

    代码审计:YCCMS 代码执行 文件上传 任意文件删除 YCCMS 审计准备 代码审计 代码执行漏洞 文件上传漏洞 任意文件删除漏洞 YCCMS YCCMS是一款PHP版轻量级CMS建站系统,程序页面 ...

  2. PHP代码审计(行云海CMS v3.5)

    PHP代码审计(行云海CMS v3.5) 前言 一.debug环境配置 二.准备好审计工具 1. rips 2. seay源代码审计系统 三.任意文件下载 四.任意文件读取 五.任意文件删除 总结 前 ...

  3. 总结下ThinkPHP的代码审计方法

    简介 ThinkPHP 是国内著名的 php开发框架,基于MVC模式,最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP. 本文主要分析 ThinkPHP v3 的程序代码, ...

  4. 史上最详细:YOLO v3算法的具体流程和实现细节

    本文是我对YOLO算法的细节理解总结,本文的阅读前提是已读过YOLO相关论文,文中不会谈及YOLO的发展过程,不会与其他对象检测算法进行对比,也不会介绍YOLO9000相关的内容,只总结YOLOv3算 ...

  5. 网络安全-实战篇 ZZZPHP1.61 代码审计-从SQL注入到Getshell

    近期有很多小伙伴在后台留言想看关于代码审计的文章,其实有关审计的文章网上资源是比较多的,但是从代码审计开始到结束的这类文章却少之甚少. 今天要讲解的ZZZPHP1.61这套审计漏洞比较多,SQL注入漏 ...

  6. Yolo v4, v3 and v2 性能极简图示

    Yolo v4, v3 and v2 性能图示 https://github.com/AlexeyAB/darknet 参考链接: https://github.com/AlexeyAB/darkne ...

  7. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-新增模块管理界面导出功能(可按条件导出)...

    RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增模块管理界面导出功能(可按条件导出) 导出功能在很多应用场景中都需要,RDIFramework.NET V3 ...

  8. 面向Mobile device的CNN模型手工设计与NAS分析总结,MobileNet V1,V2,V3,Efficient,MNasNet以及Efficient network design

    手工方法和NAS的高效网络模型设计总结与分析 这篇文章主要关注对于移动端,资源受限平台的高效神经网络设计(Manually)和搜索(NAS). ​​​​​​高效的CNN设计不只是用在服务器,云端,资源 ...

  9. (OCR论文)Mask TextSpotter V3机翻

    <Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting>,ECCV 2020, ...

最新文章

  1. 远程过程调用RPC简介
  2. MongoDb数据库面试整理
  3. jmeter http并发测试时报错
  4. ACE框架解读 - 源码篇
  5. theano中的vector和dvector
  6. python之setdefault()和defaultdict()处理缺失值的键
  7. 7/7 第7篇 函数名与函数指针
  8. 斜面上的根骨骼运动以及刚体测试
  9. 比较默认对象和默认约束的异同_UE4对象类类型引用和类默认对象(Class Default Object,简称CDO)...
  10. 无法连接iphone软件更新服务器_金蝶软件KIS产品版各版本 “客户端无法连接服务器”...
  11. java删除有序数组中的重复元素_算法刷刷刷Leetcode第26题删除排序数组中的重复项...
  12. 在 Linux 的应用中测试中的延时和丢包模拟
  13. 10种用户友好的验证码
  14. Python 的几种推导式
  15. conda里的r语言,使用“ conda”从github安装R软件包。
  16. android main system log,android日志缓冲区,system,radio,main,events是什么意思啊?
  17. Android开发之实现多次点击事件
  18. 计算机绘图课程选用课本,机械制图课程学习指南
  19. 求1000以内的水仙花数
  20. mysql salve从库设置read only 属性

热门文章

  1. 基于python的AES,DES随机密钥生成及批量加密
  2. 2021-2027中国LED密封胶市场现状及未来发展趋势
  3. 这样的Python爬虫项目谁不爱呢——Python爬取高校就业职位
  4. opencv中flip函数
  5. 汇编语言ch2_2 汇编语言中的debug
  6. 【思维方式】科学的励志和励志的科…
  7. 一位IT从业人员的心路历程 (转并修版)
  8. Vue复刻华为官网 (一)
  9. Three.js--》实现3d汽车模型展览搭建
  10. 用R做群落α、β多样性分析