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

devtools/2024/11/14 11:37:55/

知识点:

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各层职能:

控制器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文件中发现,访问对应页面


http://www.ppmy.cn/devtools/133915.html

相关文章

MySQL第七章,项目案例:保险管理系统

学了这么久来做一次项目&#xff0c;总结一下吧 保险管理系统首先来规划一下数据表 然后设计步骤 1. 规划数据库表 首先&#xff0c;你需要确定系统需要哪些数据表。一个基本的保险管理系统可能包括以下几个表&#xff1a; 用户表&#xff08;Users&#xff09;&#xff1…

Spring声明式事务 编程式事务

Spring声明式事务 1.事务的概念 1.1编程式事务 编程式事务是指手动编写程序来管理事务&#xff0c;即通过编写代码的方式直接控制事务的提交和回滚 Connection conn …; ​ try{ //开启事务&#xff1a;关闭事务的自动提交 conn.setAutoCommit(false); //业务代码 … //提交…

【Linux篇】面试——用户和组、文件类型、权限、进程

目录 一、权限管理 1. 用户和组 &#xff08;1&#xff09;相关概念 &#xff08;2&#xff09;用户命令 ① useradd&#xff08;添加新的用户账号&#xff09; ② userdel&#xff08;删除帐号&#xff09; ③ usermod&#xff08;修改帐号&#xff09; ④ passwd&…

2024年计算机视觉与图像处理国际学术会议 (CVIP 2024)

目录 大会简介 主办单位&#xff0c;协办单位 组委会 主讲嘉宾 征稿主题 参会方式 会议议程 重要信息 会议官网&#xff1a;iccvip.org 大会时间&#xff1a;2024年11月15日-17日 大会地点&#xff1a;中国 杭州 大会简介 2024年计算机视觉与图像处理国际学术会议(C…

从0开始机器学习--Day16--神经网络作业

题目&#xff1a;构建逻辑回归模型来识别数字0-9 代码如下&#xff1a; import numpy as np from scipy.io import loadmat import scipy.optimize as opt from sklearn.metrics import classification_report# 定义函数sigmoid&#xff0c;方便后续假设函数以sigmoid&#x…

软考:缓存持久化和过期策略,淘汰策略

持久化&#xff1a; RDC&#xff08;把全量数据以二进制压缩文件的方式存储到磁盘文件&#xff09;&#xff0c;快照&#xff0c;体积小&#xff0c;性能更高&#xff08;会fork一个子进程来处理保存操作&#xff09;恢复更快。 AOF&#xff08;每一个写命令都通过write函数追…

行业类别-智能制造-子类别工业4.0-细分类别物联网应用-应用场景智能工厂建设

1.大纲分析 针对您提出的题目“4.0 行业类别-智能制造-子类别工业4.0-细分类别物联网应用-应用场景智能工厂建设”&#xff0c;以下是一个详细的大纲分析&#xff0c;旨在深入探讨该应用场景下的各个方面&#xff1a; 一、引言 智能制造与工业4.0概述 智能制造的定义与发展趋…

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪BD311R 发布时间: 2024-10-23 11:28:42 一、 产品图片&#xff1a; 二、 产品特性&#xff1a; 4G性能&#xff1a;支持2K超高清图传&#xff0c;数据传输不掉帧&#xff0c;更稳定。 独立北…