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

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

案例一 原生代码变量覆盖,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

相关文章:

  • 第30周Java分布式入门 分布式基础
  • C++20:make_shared_for_overwrite与make_unique_for_overwrite
  • 关于deepseek
  • 自动化构建攻略:Jenkins + Gitee 实现 Spring Boot 项目自动化构建
  • 免费OpenAI gpt-4o-mini-tts API调用(已开源)
  • 如何快速解决django存储session变量时出现的django.db.utils.DatabaseError错误
  • 在Windows下VSCodeSSH远程登录到Ubuntu
  • MySQL多表查询核心指南
  • Unity程序嵌入Qt后点击UI按钮Button没有反应
  • 上海芯片企业列表
  • 豪越消防一体化安全管控平台:消防管理智能化
  • 《深度剖析SQL之WHERE子句:数据过滤的艺术》
  • uni-app:指引蒙层
  • chrome插件,绕过CSP限制,Refused to run the JavaScript URL问题
  • NameError: name ‘disclaim_key_flags‘ is not defined
  • Docker-从入门到实践
  • 平板实现 adb connect 连接的步骤
  • (C语言)学生信息表(基于通讯录改版)(测试版)(C语言项目)
  • 创作者会被AI取代吗?AIGC为电影行业带来新变革
  • CCF CSP 第34次(2024.06)(1_矩阵重塑(其一)_C++)
  • 企业为什么要做网站 作用是什么/seo优化平台
  • 可以做动画的网站有哪些/四川专业网络推广
  • 网页网站开发手机游戏/百度提交收录
  • 做网站用什么服务器/西安外包网络推广
  • 河南省住房城乡建设厅官方网站/谷歌chrome官网
  • 镇江做网站的/长沙网站seo哪家公司好