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

目录

[MVC 架构](#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的公共方法。让我们一起对代码进行解析:

  • 第一行创建了一个名为$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);

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

调用了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文件中发现,访问对应页面

抓包上传

相关推荐
Hum8le2 天前
漏洞知识点《php伪协议》
开发语言·安全·web安全·php
砚凝霜2 天前
【软考信息安全】第十六章 网络安全风险评估过程与技术方法
网络·安全·web安全
砚凝霜2 天前
【软考信息安全】第十七章 网络安全应急响应概述与事件处理流程
网络·安全·web安全
Web Security Loop2 天前
MAC安装最新Burpsuite pro详细步骤教程
web安全·macos·网络安全·安全性测试
xixixi777772 天前
解读|华为星河 AI 三层安全围栏:以 AI 守护 AI,重构智算中心 Token 生产纵深防御体系
人工智能·安全·web安全·华为·提示词注入·agent安全·模型投毒
砚凝霜2 天前
【软考信息安全】第十三章 网络安全漏洞分类管理与扫描处置
安全·web安全
Xudde.2 天前
CVE-2017-9993漏洞复现
笔记·学习·安全·web安全
墨云安全3 天前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
砚凝霜3 天前
【软考信息安全】第十六章 网络安全风险评估项目流程与应用
网络·安全·web安全
悟道子HD3 天前
网络安全基本功——MySQL基础
android·mysql·web安全