漏洞存在于 libraries/joomla/session/session.php 中,_validate函数,将ua和xff调用set方法设置到了session中(session.client.browser和session.client.forwarded),最后进入数据库的session表.
joomla自己编写了存储session的容器,其中未正确处理多个竖线(|)的情况,导致可以构造恶意的反序列化数据.
由MYSQL的一个特性导致,当我们将一个4字节的UTF8字符(\xF0\x9D\x8C\x86
)插入mysql时,mysql将会视之为utf8mb4编码,当将utf8mb4编码的字符插入到UTF8编码的列中,在非strict mode下就会造成一个截断。
exp构造的执行链,分别利用了如下类:
- JDatabaseDriverMysqli
- SimplePie
https://www.leavesongs.com/PENETRATION/joomla-unserialize-code-execute-vulnerability.html