安全研究

安全漏洞
AsteriDex callboth.php远程命令执行漏洞

发布日期:2007-07-05
更新日期:2007-07-06

受影响系统:
Ward Mundy AsteriDex <= 3.0
不受影响系统:
Ward Mundy AsteriDex 3.1
描述:
BUGTRAQ  ID: 24781

AsteriDex是Asterisk/Trixbox PBX的便携式电子电话簿。

AsteriDex的脚本处理用户请求数据时存在输入验证漏洞,远程攻击者可能利用此漏洞在服务器上执行任意命令。

AsteriDex所使用的callboth.php脚本没有充分地验证IN和OUT参数。该脚本在运行时要在本地主机5038/TCP端口登录到控制台服务器,然后发布Action: Originate命令建立桥接的呼叫,相关代码如下:

  fputs ($fp, "Action: login\r\n");
  fputs ($fp, "Username: phpagi\r\n");
  fputs ($fp, "Secret: phpagi\r\n");
  fputs ($fp, "Events: off\r\n\r\n");
  sleep(1) ;
  fputs ($fp, "Action: Originate\r\n");
  fputs ($fp, "Channel: $IN\r\n");              << Command injection
  fputs ($fp, "Context: custom-callboth\r\n");
  fputs ($fp, "Exten: $OUT\r\n");               << Command injection
  fputs ($fp, "Priority: 1\r\n\r\n");

除了测试字符串长度外没有执行任何检查便从$_GET['IN']设置了$IN,所有传送给$IN的字符串应小于100个字符,包括长度检查前附加给$IN的sip/字符串。如果$IN=123、$out=321、$CallerID=567,则会话类似于:

  Action: login
  Username: phpagi
  Secret: phpagi
  Events: off
  
  Action: Originate
  Channel: 123
  Context: custom-callboth
  Exten: 321
  Priority: 1
  
如果在$IN中包含有换行符,攻击者就可以向数据流中注入任意命令、劫持通过认证的会话运行所选择的命令。例如,包含有以下内容的$IN字符串:

190@example.com\r\nApplication: System\r\nData: echo pwn3d > /tmp/hoku.txt\r\n
  
会将会话转换为:

  Action: login
  Username: phpagi
  Secret: phpagi
  Events: off
  
  Action: Originate
  Channel: 190@example.com
  Application: System
  Data: echo pwn3d > /tmp/hoku.txt
  
  Context: custom-callboth
  Exten: 321
  Priority: 1

这会使用呼叫管理器的System功能执行攻击者所提供的操作系统命令,在上述例子中可以向/tmp/hoku.txt文件写入pwn3d。重置会话会失败,因为攻击者已经破坏了原始的Action,导致其他的命令无效。

<*来源:Carl Livitt (carl@learningshophull.co.uk
  
  链接:http://marc.info/?l=bugtraq&m=118366559204806&w=2
        http://secunia.com/advisories/25965/
*>

测试方法:

警 告

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

http://www.milw0rm.com/exploits/4151

建议:
厂商补丁:

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

http://nerdvittles.com/trixbox11/asteridex31.zip

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