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(网友投票)