安全研究
安全漏洞
DD-WRT Web管理接口远程Shell命令注入漏洞
发布日期:2009-07-20
更新日期:2009-07-21
受影响系统:
NewMedia-NET DD-WRT 24 sp1描述:
BUGTRAQ ID: 35742
CVE(CAN) ID: CVE-2009-2765,CVE-2009-2766,CVE-2008-6974,CVE-2008-6975
DD-WRT是一个供无线路由器使用的嵌入版Linux,可以在普通的家用无线路由器实现商用无线路由器功能。
DD-WRT的httpd.c文件中存在多个安全漏洞:
859 if (containsstring(file, "cgi-bin")) {
860
861 auth_fail = 0;
862 if (!do_auth
863 (conn_fp, auth_userid, auth_passwd, auth_realm,
864 authorization, auth_check))
865 auth_fail = 1;
......... (snip)............
899
900 }
901 exec = fopen("/tmp/exec.tmp", "wb");
902 fprintf(exec, "export REQUEST_METHOD=\"%s\"\n", method);
903 if (query)
904 fprintf(exec, "/bin/sh %s/%s</tmp/exec.query\n",
905 server_dir != NULL ?
server_dir : "/www",file);
906 else
907 fprintf(exec, "/%s/%s\n",
908 server_dir != NULL ? server_dir : "/www",
file);
909 fclose(exec);
910
911 if (query) {
912 exec = fopen("/tmp/exec.query", "wb");
913 fprintf(exec, "%s\n", query);
........................
这里存在两个问题:
1) 没有处理元字符。
2) 未经认证便执行了命令。
如果没有通过认证就不会给出任何输出。
.......................
914 free(query);
915 fclose(exec);
916 }
917
918 system2("chmod 700 /tmp/exec.tmp");
919 system2("/tmp/exec.tmp>/tmp/shellout.asp");
........... (snip)..........
926 if (auth_fail == 1) {
927 send_authenticate(auth_realm);
928 auth_fail = 0;
------------
3) httpd以root用户权限运行。
结合以上三个问题,任何能够连接到Web管理接口的未经认证的攻击者都可以在浏览器中通过类似于以下的URL获得对设备的root访问:
http://routerIP/cgi-bin/;command_to_execute
<*来源:gat3way
链接:http://milw0rm.com/exploits/9209
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
建议:
厂商补丁:
NewMedia-NET
------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.dd-wrt.com
浏览次数:3618
严重程度:0(网友投票)
绿盟科技给您安全的保障
