PHP Live Helper多个输入验证漏洞
发布日期:2008-08-18
更新日期:2008-08-21
受影响系统:TurnkeyWebTools PHP Live Helper 2.0
TurnkeyWebTools PHP Live Helper 1.8
不受影响系统:TurnkeyWebTools PHP Live Helper 2.1
描述:
BUGTRAQ ID:
30729
CVE(CAN) ID:
CVE-2008-3762,
CVE-2008-3763,
CVE-2008-3764
PHP Live Helper允许在站点上提供实时客户支持和访客交流功能。
PHP Live Helper的多个模块存在输入验证错误,允许恶意攻击者执行SQL注入攻击或入侵有漏洞的系统。
1. SQL注入
PHP Live Helper中存在多个SQL注入漏洞,允许攻击者以管理员的凭据访问数据库内容。以下是global.php的51-60行的有漏洞代码段:
function get ($table, $id, $from="id") {
$result=$this->DB_site->query_first("SELECT * FROM ".
$this->dbprefix.$table." where ".$from."='$id'");
if (is_array($result)) {
foreach ($result as $key => $val) {
$info[$key] = stripslashes($val);
}
}
return $info;
}
可见没有过滤传送给get()函数的所有参数。
2. 覆盖任意变量
PHP Live Helper的一些错误的register_globals模拟代码中存在任意变量覆盖漏洞,以下是libsecure.php文件的400-414行的有漏洞代码段:
unset ($_GET[abs_path]);
$rg = ini_get ('register_globals');
$getget_count = @count ($_GET);
$getget_keys = @array_keys ($_GET);
for ($i = 0; $i < $getget_count; ++$i)
{
$getget_name = $getget_keys[$i];
$getget_value = $_GET[$getget_keys[$i]];
$_GET[$getget_name] = strip_tags (urldecode ($getget_value));
if ($rg == 1)
{
$$getget_name = strip_tags (urldecode ($getget_value));
continue;
}
}
可见变量可以被覆盖,但由于调用的位置,仅可以覆盖数据库配置文件中的变量。
3. 执行任意代码
当rg设置为0的时候,chat.php文件没有正确地过滤对test参数的输入便在eval()调用中使用,这允许攻击者通过提交恶意的URL请求执行任意PHP代码。
<*来源:James Bercegay (
security@gulftech.org)
链接:
http://secunia.com/advisories/31521/
http://marc.info/?l=bugtraq&m=121907134122035&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://www.example.com//onlinestatus_html.php?dep=-99' UNION SELECT 1,2,3,4,5,6,7,8 FROM admin_accounts WHERE id=1 AND MID(password,1,1)=concat(char(50))/*
http://www.example.com/chat.php?rg=0&test=";phpinfo();exit;//建议:
厂商补丁:
TurnkeyWebTools
---------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.turnkeywebtools.com/esupport/index.php?_m=news&_a=viewnews&newsid=62浏览次数:2591
严重程度:0(网友投票)