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

知识点:

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

相关推荐
用户962377954483 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机7 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机7 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954488 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star8 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544812 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
cipher2 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php