小迪安全109-php模型动态调试,反序列化,变量覆盖,tp框架,原生pop链

news/2025/4/1 14:59:18/

案例一 原生代码变量覆盖,duomicms

变量覆盖是什么

这个时候为什么会输出xiaodi呢

就是因为$a=b所以$$a=$b  所以就让$b=xiaodi

搞不到源码,看老师的学吧

这一般在web端页面是看不到,也不好发现,代码可以看关键字和函数

例如$$这个符号

搜索完之后有很多,首先看前端和配置界面,再去看后台的界面

先看有变量且可以控制的文件

有可控变量,这里很可能就是脆弱点

而这个代码就是个数组接受$_get,$_post,$_cookie的值,在网页传输数据,例如get传输name激素?name=xiaodi,因为as复制给了reques,在代码内接受$_get  变量name的值,因为是经过数组传递的值,所以就是$_get[name]=xiaodi  数组的表达方式赋值给$k=》$v  那就是$name=xiadi

比起$name=$_get[name]  这样就直接简化挨个写的代码,这样可以直接遍历获取提交的值并赋值给变量。

这里存在变量覆盖但本身不是个漏洞,需要利用起来的才叫漏洞

我们登录到后台

正常这里有对cookie值的验证,那我们可不可以进行变量覆盖,覆盖为管理员的,那我们就可以访问管理员界面。

我们来到管理员登录文件,看他能不能进行变量覆盖,就看他有没有包含能变量覆盖的文件

包含了

看代码逻辑检测登录就是

res=1就可以返回值

但是变量res是由checkuser创建的,跟踪checkuser

这里就是接受密码,然后去数据库对比查询,密码错误就返回-1,密码没有函数就返回-2

正常逻辑就返回1。

如果已经登录在访问后台就不需要在登录,这是怎么判断,再去看login文件

keepuser,

s形id里面有对应的三个值就返回1,没有就返回-1

变量覆盖就把当前这三个值强制写到当前浏览器里面去

现在就通过动态调试获取登录的session值

如何就通过变量覆盖技术,让为空session有管理员的值

下个断点

这里老师环境出问题段不下来,直接看数据库userid是什么值

1,1,admin

对应的上

这里要覆盖s形数据必须文件开启了session_start才行

构造poc

为什么是exchang.php文件,因为他包含了文件并且开启session

直接访问

session已经强制存储

在访问后台界面admin

直接进入

就相当于这样

案例二-phpmyadmin-原生反序列化

这就直接搜关键字,就两个函数unserialize

那就这两个地方

对于反序列化漏洞的挖掘,要看触发了那些魔术方法,魔术方法里面有什么东西,

而这里就去看调用的wakeup方法,找出来看看

这个方法也要先看看这个代码准备,里面有没有对象

这里就调用了一个对象,在这个对象里面找有没有wakeup方法,

全局搜索一下wakeup方法

有,但是不能乱找,比如第一个wakeup在这个类里面

而触发反序列化的地方并不能触发这个类,第二个在看wakeup有没有能触发影响安全的问题

再看看第二个wakeup

慢慢看都是干嘛的,转到load的声明看看

eval,危险函数,要注意了,file-get-contents可以读取任意文件

这就看看getsuorre这个比哪里怎么来的,跟踪看看

返回个source的变量值

看到这里利用链就出来了,怎么构造接受的值

这个危险函数在这个类里面,刚好我们反序列化文件调用了这个类

显示找到了接受反序列化值的地方,然后load里面有触发的魔术方法,在任何发现了危险函数,接受的getsource的值,跟踪发现是就是返回变量source的值,那就可以构造序列化值了

现在就去找文件触发点,然后传入序列化值

然后就根据代码要求传递值就可以了

最终poc

成功读取到1.txt的文件内容

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

版本问题搭建不起来

看主页有tp框架开发的提示

但是不知道具体tp版本号怎么在代码搜索,直接veision关键字,搜

5.1.37

反序列化值生成工具

自动生成

上一个案例是借助一个反序列化操作函数的,而这个是用到了phar的反序列化

这个又是什么

参考链接phar反序列化 - My_Dreams - 博客园

phar将类似java文件的jar文件

上半部分是链,下半部分是生成phar

这个是案例里面生成的文件,上面class调用的链来攻击的,而我们的靶场是tp搭建就要用到tp的链是由两个模板生成的,我们就要把上面调用的链改成tp生成的模板

就要第二个文件的内容复制到生成phar的链里面去

复制好好之后第一个文件要复制这两个内容

在生成phar的文件内构造一下

这里还修改了一些删除了案例调用的链,因为我们是用到tp框架的链,上面已经生成了,在把变量object改成变量a,上面第二条数据也要改成$a等于那个值

这里命令就执行个计算器calc,然后把变量system为空全部为空,就不执行命令

这里要生产phar文件要打开一个开关才行,php5.6之后默认是开启的

访问报错了

这里有参数值,去掉,不应该有。

案例里面的利用方式是有一个文件上传点,只允许上传图片也没啥,把生成的phar后缀改成gif上传上去就行了,,然后用到确定文件的函数,去访问这个上传的文件然后就可以利用phar执行命令

这里文件还是gif

这就要全局搜索is_dir  

 file_exists

这种类似的函数

搜索到这个看看

变量dir从参数来,get和post提交得到,现在就需要找一个文件上传的地方

ok开干poc

后面路径是上传完之后phar包的路径

弹计算机了,命令执行成功

扩展知识,php反序列化链

如果要用到刚刚phpmyadmin利用phar的方式去利用,就要把上半部分的链换成phpmyamdin的利用链

jian

kang


http://www.ppmy.cn/news/1583952.html

相关文章

Flink介绍与安装

Apache Flink是一个在有界数据流和无界数据流上进行有状态计算分布式处理引擎和框架。Flink 设计旨在所有常见的集群环境中运行,以任意规模和内存级速度执行计算。 一、主要特点和功能 1. 实时流处理: 低延迟: Flink 能够以亚秒级的延迟处理数据流,非常…

使用el-select回显时显示value,不显示对应的label

原因&#xff1a;后端传过来的是string类型 解决&#xff1a;向后端传过来的String类型的数据强制转换为Number类型 代码&#xff1a; <el-select clearable v-model"deviceinfo.Type" placeholder"请选择类型"><el-optionv-for"dict in ty…

【计算机操作系统】线程的概念和特点

1、什么是线程&#xff0c;为什么要引入线程&#xff1f; 还没引入进程之前&#xff0c;系统中各个程序只能串行执行。 比如&#xff1a;当我们在使用QQ与好友视频时&#xff0c;我们可以给其他好友发信息&#xff0c;发送文件...&#xff0c;我们知道进程是程序的一次执行&am…

persist 应用自启流程

什么自启应用? 通常应用会在AndroidManifest.xml中配置自身的各种行为,比如需要再系统开机时就把自己的进程唤醒,通常情况下会在AndroidManifest.xml中配置android:persistent="true" 为什么配置android:persistent="true"后就能做到自启? 在系统启…

面向对象——开闭原则(Open-Closed Principle, OCP)

开闭原则&#xff08;Open-Closed Principle, OCP&#xff09; 是面向对象设计中的重要原则之一&#xff0c;它的核心思想是&#xff1a; 对扩展开放&#xff08;Open for extension&#xff09;&#xff1a;软件实体&#xff08;类、模块、函数等&#xff09;应该可以扩展&am…

机器学习knnlearn4

import numpy as np import operatordef classify0(test_data: np.ndarray, training_data: np.ndarray, labels: list, k: int) -> str:"""kNN 算法分类器:param test_data: 用于分类的数据(测试集):param training_data: 用于训练的数据(训练集):param la…

2025 年吉林省燃气企业从业人员考试:实用备考攻略与考试提分要点​

2025 年吉林省燃气企业从业人员考试报名通过吉林燃气行业管理系统。报名资料包含企业的环保达标证明&#xff08;燃气行业涉及环保要求&#xff09;、个人的岗位任职证明等。实用备考攻略是&#xff0c;关注吉林在燃气分布式能源系统建设方面的进展&#xff0c;结合《燃气冷热电…

【含文档+PPT+源码】基于大数据的交通流量预测系统

项目介绍 本课程演示的是一款基于大数据的交通流量预测系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项目附带的源码…