Day107:代码审计-PHP模型开发篇MVC层RCE执行文件对比法1day分析0day验证

目录

MVC 架构

CNVD-代码执行1day-lmxcms1.40版本

CNVD-命令执行1day-baijiacms4.1.4版本


知识点:

1、PHP审计-MVC开发-RCE&代码执行

2、PHP审计-MVC开发-RCE&命令执行

3、PHP审计-MVC开发-RCE&文件对比

MVC 架构

MVC流程:

  1. Controller截获用户发出的请求;
  2. Controller调用Model完成状态的读写操作;
  3. Controller把数据传递给View;
  4. View渲染最终结果并呈献给用户。

MVC各层职能:

  1. 控制器Controller层–负责响应用户请求、准备数据,及决定如何展示数据。
  2. 模块Model层–管理业务逻辑和数据库逻辑。提供连接和操作数据库的抽象层。
  3. 视图View层–负责前端模版渲染数据,通过HTML方式呈现给用户。

MVC对审计主要影响:

  1. 文件代码定位问题,一个功能分别在三个文件里,负责不同的部分
  2. 代码过滤分析问题,一般会写道MODEL层
  3. 前端安全发现问题,模板注入,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开发审计入口常见方法:

  1. 搜索法:常规或部分MVC模型源码可以采用关键字的搜索挖掘思路
  2. 功能法:框架MVC模型源码一般会采用功能点分析抓包追踪挖掘思路
  3. 对比法:可以通过前后修复版本文件及代码不同特征进行针对挖掘思路
  4. 特征法:数据库监控挖SQL注入,文件监控挖上传删除写入等,后续补充
  5. 工具法:后续讲到
  6. 调试法:动态调试

一般情况下,有经验的人,看一下目录就大概知道

这个应该就是控制层,接收参数,控制执行逻辑

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

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

访问网站的首页

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

包含了两个文件,在 run.inc.php 发现,通过URL确定跳转的文件位置

由这里的命名也可以知道哪个是控制层,哪个是模块层

index.php控制了交给谁处理的逻辑,也就是由哪个文件来处理后续

观察到这里是首页,所以应该是先访问控制层的,m=content,在控制层文件中应该有一个与它对应的文件。a=index,是这个文件中处理的方法

 这是一个名为index的公共方法。让我们一起对代码进行解析:

  • 第一行创建了一个名为$temModelparse对象,并传递了$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);

这里不仅完成了数据的查找,并且还把数据渲染到模板里了

调用了Model层的方法查询数据

如何确定视图层?

根据页面特征,全局搜索,搜索公司新闻,搜不到,可能是存储在数据库里

注意到发布时间

确定 news.html 就是对应的 view 层文件

根据 url 可以确定控制层的文件

对应的处理方法

代码里创建了两个对象,都进入看看,随后去确定文件

按照前面的方法确定了 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对应的文件

搜索条件2

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

抓包上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支持向量机(SVM)白话之个人理解(学习记录)

本文仅有文字理解部分&#xff0c;没有相应的数学公式推导过程&#xff0c;便于新手理解。 一、什么是支持向量机 首先我们看下面这张图&#xff0c;在图中圆形和三角形分别代表不同的数据类型&#xff0c;如何画出一条直线使两者能够显著地区分开来呢&#xff1f; 答案可以多…

成都污水处理设备厂家怎么选?

在选择成都的污水处理设备厂家时&#xff0c;可以从以下几个方面来进行评估和选择&#xff1a; 1. **公司资质**&#xff1a;首先需要确认厂家是否拥有合法的营业执照、环保设备生产许可证及相关的环保工程资质。 2. **技术实力**&#xff1a;了解厂家是否具备雄厚的技术研发实…

通过自动化部署消除人为操作:不断提高提交部署比率

三十年后&#xff0c;我仍然热爱成为一名软件工程师。事实上&#xff0c;我最近读了威尔拉森&#xff08;Will Larson&#xff09;的《员工工程师&#xff1a;超越管理轨道的领导力》&#xff0c;这进一步点燃了我以编程方式解决复杂问题的热情。知道雇主继续照顾员工、原则和杰…

Goingpub国自然基金-免费查询

可进行年份、学部、项目类别等检索&#xff0c;支持生成主题词汇总分析报告。 最最最关键&#xff0c;免费&#xff0c;只需要你注册登录一下&#xff0c;防止被爬虫侵扰。 界面简单&#xff0c;实用&#xff0c;支持模糊搜索&#xff0c;包含最新2023年数据&#xff0c;共56…

Python异常值分析

异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的&#xff0c;不加剔除地把异常值包括进数据的计算分析过程中&#xff0c;对结果会产生不良影响&#xff1b;重视异常值的出现&#xff0c;分析其产生的原因&#xff0c;常常成为发现问…

从0开始学人工智能测试节选:Spark -- 结构化数据领域中测试人员的万金油技术(一)

回顾一下模型的生命周期 需要注意的是&#xff0c;在这个流程中&#xff0c;测试至少要参与的以下的活动&#xff1a; 离线的模型测试线上线下一致性测试数据质量测试模型的线上质量监控建模过程的功能/性能等测试 可以看出来测试人员需要做的事情其实不少&#xff0c;整个建模…

Python景区票务人脸识别系统(V2.0),附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

uniapp使用npm命令引入font-awesome图标库最新版本并解决APP和小程序不显示图标的问题

uniapp使用npm命令引入font-awesome图标库最新版本 图标库网址&#xff1a;https://fontawesome.com/search?qtools&or 命令行&#xff1a; 引入 npm i fortawesome/fontawesome-free 查看版本 npm list fortawesome在main.js文件中&#xff1a; import fortawesome/fo…

阿里云服务器可以干嘛?阿里云服务器八大用途介绍

阿里云服务器可以干嘛&#xff1f;能干啥你还不知道么&#xff01;简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;阿里云百科aliyunbaike.com整理阿里云服务器的用途&#xff1a; 阿里云服务器活动 aliyunbaike.com…

SQL Server语法基础:入门到精通

博客前言 在数据库管理的世界中&#xff0c;SQL Server无疑是一个重要的角色。无论是初学者还是经验丰富的数据库管理员&#xff0c;都需要对SQL Server的查询语法有深入的理解。本文将带领大家深入解析SQL Server的查询语法&#xff0c;并分享一些实用的技巧&#xff0c;帮助…

Redis 之集群模式

一 集群原理 集群&#xff0c;即Redis Cluster&#xff0c;是Redis 3.0开始引入的分布式存储方案。 集群由多个节点(Node)组成&#xff0c;Redis的数据分布在这些节点中。 集群中的节点分为主节点和从节点&#xff1a;只有主节点负责读写请求和集群信息的维护&#xff1b;从…

突破编程_前端_SVG(概述)

1 什么是 SVG SVG&#xff0c;全称可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff09;&#xff0c;是一种基于 XML&#xff08;可扩展标记语言&#xff09;的矢量图像格式。这种图像格式的主要特点是它描述的是矢量图形&#xff0c;而不是基于像素的位图图像。因…

基于 Vue3 + Webpack5 + Element Plus Table 二次构建表格组件

基于 Vue3 Webpack5 Element Plus Table 二次构建表格组件 文章目录 基于 Vue3 Webpack5 Element Plus Table 二次构建表格组件一、组件特点二、安装三、快速启动四、单元格渲染配置说明五、源码下载地址 基于 Vue3 Webpack5 Element Plus Table 二次构建表格组件&#x…

【Java】maven是什么?

先看一下基本概念: ①Maven 翻译为"专家"&#xff0c;"内行"是跨平台的项目管理工具。 主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。 ②项目构建 项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报…

Matlab 修改图例顺序

对于使用 .m 文件绘制的图片&#xff0c;可以修改程序中图例的顺序来改变图片的图例。如果图片所对应的 .fig 文件已经存在&#xff0c;而且不便修改源程序&#xff0c;则可以通过如下方式来修改图例&#xff1a; step 1: 打开fig文件&#xff0c;然后点击绘图浏览器 step 2&…

PHP超级外链分发源码

源码简介 超级外链工具&#xff0c;是一款在线全自动化发外链的推广工具。使用本工具可免费为网站在线批量增加外链&#xff0c;大大提高外链发布工作效率&#xff0c;是广大草根站长们必备的站长工具。 搭建环境 PHP 5.6 安装教程 上传源码压缩包到网站目录并解压即可 首…

kali 渗透工具 - mestaploit

永恒之蓝漏洞的小知识&#xff1a; 黑客通过改造 永恒之蓝 制作 wannacry 制作病毒入侵高校内网。 mestaploit 攻击永恒之蓝流程&#xff1a; 使用模块 msfconsole配置required 模块参数运行&#xff0c;开始监听主机 msfconsole 主要模块 - 选择使用模块 search ms17_01…

百度富文本编辑器配置(vue3)

今天分享一下我做的项目里面的一个百度富文本的配置问题&#xff0c;安装配置流程以及如何解决的 1.首先是安装组件 # vue-ueditor-wrap v3 仅支持 Vue 3 npm i vue-ueditor-wrap3.x -S # or yarn add vue-ueditor-wrap3.x 2. 下载 UEditor UEditor 并不支持通过 npm 的方式…

爬虫入狱笔记——xx政府网站公开政策数据

最近在学习爬虫&#xff0c;做个笔记吧 今天爬xx政府网站-政策法规栏目的数据 咱们首先需要找到数据从哪里来&#xff0c;鼠标右键->检查&#xff08;或者快捷键一般为F12&#xff09;检查元素&#xff0c;搜索关键词 eg.【违法案例】 回车&#xff0c; 如果没有的话&am…

Java8关于Function接口

Java学习-Function接口 1 函数式接口简介和学习地址2 两种常见的函数式接口2.1 Runnable&#xff1a;执行接口&#xff0c;不接收参数&#xff0c;也无返回结果。2.2 Consumer&#xff1a;作为消费接口&#xff0c;接收一个参数&#xff0c;无返回结果。 3 初识3.1 定义Functio…