Day107:代码审计-PHP模型开发篇MVC层RCE执行文件对比法1day分析0day验证
知识点:
1、PHP审计-MVC开发-RCE&代码执行
2、PHP审计-MVC开发-RCE&命令执行
3、PHP审计-MVC开发-RCE&文件对比
MVC 架构
MVC流程:
- Controller截获用户发出的请求;
- Controller调用Model完成状态的读写操作;
- Controller把数据传递给View;
- View渲染最终结果并呈献给用户。

MVC各层职能:
控制器Controller层–负责响应用户请求、准备数据,及决定如何展示数据。
模块Model层–管理业务逻辑和数据库逻辑。提供连接和操作数据库的抽象层。
视图View层–负责前端模版渲染数据,通过HTML方式呈现给用户。
MVC对审计主要影响:
文件代码定位问题,一个功能分别在三个文件里,负责不同的部分
代码过滤分析问题,一般会写道MODEL层
前端安全发现问题,模板注入,XSS等
PHP常见漏洞关键字:
SQL注入:
select insert update mysql_query mysqli等
文件上传:
$_FILES,type="file",上传,move_uploaded_file()等
XSS跨站:
print print_r echo sprintf die var_dump var_export等
文件包含:
include include_once require require_once等
代码执行:
eval assert preg_replace call_user_func call_user_func_array等
命令执行:
system exec shell_exec `` passthru pcntl_exec popen proc_open
变量覆盖:
extract() parse_str() importrequestvariables() $$ 等
反序列化:
serialize() unserialize() __construct __destruct等
其他漏洞:
unlink() file_get_contents() show_source() file() fopen()等
#通用关键字:
$_GET,$_POST,$_REQUEST,$_FILES,$_SERVER等
MVC开发审计入口常见方法:
搜索法:常规或部分MVC模型源码可以采用关键字的搜索挖掘思路
功能法:框架MVC模型源码一般会采用功能点分析抓包追踪挖掘思路
对比法:可以通过前后修复版本文件及代码不同特征进行针对挖掘思路
特征法:数据库监控挖SQL注入,文件监控挖上传删除写入等,后续补充
工具法:后续讲到
调试法:动态调试
一般情况下,有经验的人,看一下目录就大概知道
这个应该就是控制层,接收参数,控制执行逻辑

这个多半就是模块层,可能过滤,以及对数据的处理

这个多半就是视图层,负责数据在前端的显示

访问网站的首页

index.php 目录像是这个样子基本上都是MVC

包含了两个文件,在 run.inc.php 发现,通过URL确定跳转的文件位置
由这里的命名也可以知道哪个是控制层,哪个是模块层
index.php控制了交给谁处理的逻辑,也就是由哪个文件来处理后续
观察到这里是首页,所以应该是先访问控制层的,m=content,在控制层文件中应该有一个与它对应的文件。a=index,是这个文件中处理的方法

这是一个名为index的公共方法。让我们一起对代码进行解析:
第一行创建了一个名为$temModel的parse对象,并传递了$this->smarty作为参数。
第二行调用了$temModel对象的contents方法,并传递了$this->id、$this->classid和$this->contentModel作为参数。
第三行使用echo语句将$temModel->contents方法的返回值输出到浏览器。
总结一下,该index方法实例化了一个名为parse的对象,并调用了其contents方法,将$this->id、$this->classid和$this->contentModel作为参数传递给该方法,并将方法的返回值输出到浏览器。
进入 $temModel->contents($this->id,$this->classid,$this->contentModel);
这里不仅完成了数据的查找,并且还把数据渲染到模板里了

如何确定视图层?
根据页面特征,全局搜索,搜索公司新闻,搜不到,可能是存储在数据库里
注意到发布时间
代码里创建了两个对象,都进入看看,随后去确定文件

按照前面的方法确定了 product.html 文件就是view层代码
分析调用逻辑基本上是推测+猜,找特征。
CNVD-代码执行1day-lmxcms1.40版本
搜索法-RCE
https://www.cnvd.org.cn/flaw/show/CNVD-2019-05679
/admin.php?m=Acquisi&a=showCjData&id=1&lid=1&cid=1
根据 RCE 的特点,在功能上没有强特征,搜索 eval 关键字,先看控制层

观察到参数似乎可控

进入 caijiDtaOne 分析
多半是要执行SQL


查询数据表的数据,inx_cj_data

data被取出来作为 eval 代码执行


如何往data写数据,在采集管理中添加,后台添加

eval() 绕过,通过 ;注释符完成。

功能法-RCE
https://www.cnvd.org.cn/flaw/show/CNVD-2019-05678
TemplateAction.class.php
<{php}> phpinfo();<{/php}>

从功能点发现的,与代码无关,数据会被模板渲染,数据可能是直接写死的,或者从数据库查出来的

对比法拿0day-1.41版本
UltraCompare对比
文件对比差异:
1、快速找到脆弱点:通过对比找到脆弱的地方,新版本修复了什么,就可能是旧版本的漏洞
2、帮助你快速测试新版本 有无 0day

CNVD-命令执行1day-baijiacms4.1.4版本
https://www.cnvd.org.cn/flaw/show/CNVD-2021-12800
搜索法:system->common.inc.php->file_save->setting.php
条件:
1、$extention=='txt'
2、weixin_verify_file有值
3、$settings['image_compress_openscale']=1
开启image_compress_openscale=1
/index.php?mod=site&act=manager&do=netattach
上传weixin_verify_file
/index.php?mod=site&act=weixin&do=setting
触发weixin_verify_file
weixin_verify_file filename=&whoami&.txt

搜索关键字

分析第二个参数是否可控,来源于函数的第四个参数

这里调用这个函数

看看 $_FILE 参数是否可控


根据参数翻翻项目的目录即可找到URL对应的文件
/index.php?mod=site&act=manager&do=user&beid=1




搜索条件2weixin_verify_file
搜索关键字,在html文件中发现,访问对应页面




相关文章:
Day107:代码审计-PHP模型开发篇MVC层RCE执行文件对比法1day分析0day验证
知识点: 1、PHP审计-MVC开发-RCE&代码执行 2、PHP审计-MVC开发-RCE&命令执行 3、PHP审计-MVC开发-RCE&文件对比 MVC 架构 MVC流程: Controller截获用户发出的请求;Controller调用Model完成状态的读写操作;Contr…...
Web服务nginx实验1访问特定目录
启动服务: 创建haha目录,并且在里面创建index.html文件,往里面写东西: 让客户端访问haha目录:(默认只会读取里面的index.html文件) 目录后面加/显示的是内容,不加则是代码࿱…...
数据结构之二叉树前序,中序,后序习题分析(递归图)
1.比较相同的树 二叉树不能轻易用断言,因为树一定有空 2.找结点值 3.单值二叉树 4.对称二叉树 5.前序遍历...
Me-LLaMA——用于医疗领域的新型开源大规模语言模型
摘要 大规模语言模型的出现是提高病人护理质量和临床操作效率的一个重大突破。大规模语言模型拥有数百亿个参数,通过海量文本数据训练而成,能够生成类似人类的反应并执行复杂的任务。这在改进临床文档、提高诊断准确性和管理病人护理方面显示出巨大的潜…...
C#-常见异常的处理方式(持续更新)
1、从网络位置加载程序集失败,默认不启用CAS策略 错误原因:使用 Assembly.LoadFile(dllPath) 加载外部Dll时,DotNET安全机制阻止加载一个本地网或互联网上的程序集。 解决方案: ①配置app.config文件,在runtime节点…...
「Mac玩转仓颉内测版2」入门篇2 - 编写第一个Cangjie程序
本篇详细介绍在Mac系统上创建首个Cangjie项目并编写、运行第一个Cangjie程序的全过程。内容涵盖项目创建、代码编写、程序运行与调试,以及代码修改后的重新运行。通过本篇,掌握Cangjie项目的基本操作,进一步巩固开发环境的配置,迈…...
注册登录学生管理系统小项目
头文件 #ifndef _LOGINLINK_H_ #define _LOGINLINK_H_ #include<myhead.h> typedef struct {int id;char name[20];int age; }stu,*Pstu; typedef struct node {union{int len;stu data;};struct node *next; }node,*Pnode; int regist(); int login(); Pnode create()…...
qt QCompleter详解
1、概述 QCompleter是Qt框架中的一个类,用于为文本输入提供自动完成功能。它可以与Qt的输入控件(如QLineEdit、QTextEdit等)结合使用,根据用户的输入实时过滤数据源,并在输入控件下方或内部显示补全建议列表。用户可以…...
YOLOv11融合特征细化前馈网络 FRFN[CVPR2024]及相关改进思路
YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 一、 模块介绍 论文链接:Adapt or Rerish 代码链接:https://github.com/joshyZhou/AST 论文速览:基于 transformer 的方法在图像恢复任务中取得了有希望的性能,因为…...
【前端知识】JS模块规范
JS模块规范 概述CommonJS 规范 代码示例AMD 规范 代码示例ES6 Module 规范 代码示例IIFE 规范 代码示例全局变量 代码示例 CommonJS 模块和 ES6 模块有什么区别?1. 语法和声明方式2. 动态和静态导入3. 循环依赖4. 默认导出和命名导出5. 文件扩展名6. 环境和应用7. 工…...
vue3展示pag格式动态图
提示:如果是webpack环境的,参考:Pag格式在vue3中的简单使用方法_pag文件-CSDN博客 下面展示的是在vite环境下配置pag 1、安装libpag npm i libpag --save 2、安装rollup-plugin-copy npm i rollup-plugin-copy --save 3、封装pag组件 下…...
代码随想录算法训练营第三十九天|Day39 动态规划
198.打家劫舍 视频讲解:https://www.bilibili.com/video/BV1Te411N7SX https://programmercarl.com/0198.%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.html 思路 #define max(a, b) ((a) > (b) ? (a) : (b)) int rob(int* nums, int numsSize) {if(numsSize 0){ret…...
qt QMovie详解
1、概述 QMovie 是 Qt 框架中用于处理动画文件的类。它支持多种动画格式,包括 GIF 和一些常见的视频格式(尽管对视频格式的支持依赖于底层平台)。QMovie 类主要用于在 QLabel 或 QGraphicsView 等控件中显示动画。通过加载动画文件ÿ…...
数据集整理
系列博客目录 文章目录 系列博客目录1.Visual Genome数据集2.COCO数据集3.Flickr30k数据集10.集合多个数据集的网站 1.Visual Genome数据集 官网链接:https://homes.cs.washington.edu/~ranjay/visualgenome/index.html Visual Genome数据集梳理 Visual Genome数据…...
认证授权基础概念详解
目录 认证 (Authentication) 和授权 (Authorization)的区别是什么? RBAC 模型了解吗? 什么是 Cookie ? Cookie 的作用是什么? 如何在项目中使用 Cookie 呢? 如何在 Spring Boot 中创建和读取 Cookie 创建 Cookie Cookie 到期日期 安全…...
美国地址生成器站点
推荐一:fakexy 官网地址:https://www.fakexy.com 推荐二:好维持官网地址: https://www.dizhishengcheng.com 官网除了支持生成美国地址信息外,还支持生成英国、加拿大、日朩、澳大利亚、德国、法国、意大利、西班牙、巴…...
微信4.0大版本升级跨平台支持界面全面改版
微信4.0公测版现已正式发布,作为微信的大版本升级,新版微信基于全新架构开发,跨平台支持Windows和MAC系统,界面也全面改版,聊天宝也第一时间适配微信4.0,为广大客户提供快捷回复支持 前言 微信4.0公测版现…...
不想贴秋膘?正确打开秋冬运动姿势
这个秋天想要轻装上阵,想健康入秋更要美美入冬怎么破?这期把正确打开秋冬姿势一次性告诉你哦~ 天气变凉,脂肪可要燃起来~想要无痛入秋,最重要的动起来!每天都抽出一点时间去运动一下,不光让身体燃起来&…...
【AIGC半月报】AIGC大模型启元:2024.11(上)
【AIGC半月报】AIGC大模型启元:2024.11(上) (1) Hunyuan-Large(腾讯开源大模型)(2) FLUX1.1 pro(文生图)(3) CogVideoX v1.5(智谱AI升级文生视频大模型) (1) Hunyuan-Lar…...
纯前端生成PDF(jsPDF)并下载保存或上传到OSS
前言 在工作中遇到了一个需求,就是把前端页面生成PDF并保存在本地,因为前端网站可能会展示各种表格,图表信息内容并带有比较鲜艳的色彩样式,如果让后端生产的PDF的话样式可能和前端页面展示的有所差异,所以这个任务就落…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
