NetGear多款路由器远程命令注入漏洞分析(更新补丁分析)

转自:http://bobao.360.cn/learning/detail/3287.html

本不想写这个文章的,只是在评论作者的问题时,提示字数太多,我一再缩减字数,发现还是评论不了,没办法呢只能在此写下问题,评论个连接:

本人在分析时,基本上也是按照原作者的文章来的,只是发下原作者写的有些问题,这里说明下:

==========================================================

按照博主传递的命令,v24确实为1 (代码在下面)
分析了下,这个可以对传入的参数分为两种情况,

一种是xxx.xxx.xxx.xxx/cgi-bin/;command     # cgi-bin后面只有一个/

而是xxx.xxx.xxx.xxx/cgi-bin/;command/xxxxxx    # cgi-bin后面只有多个/

(其实这两种情况直接结果是一样的,具体看代码)

 v19 = strchr(v12, 47);
        v20 = v19 + 1;                          // ;kill
        v21 = v19;                              // /;kill
        v22 = strchr(v19 + 1, 47);              // v22=0
        memset(&v50, 0, 0x40u);                 // v50init
        v23 = (char)v21;    //v21第一个/的位置,v22第二个/的位置(如果有)
        if ( v21 )
          v23 = 1;
        v24 = v22 == 0;   //v24 = 1
        if ( v22 )
          v24 = v21 == 0;
        if ( v24 )
        {//   /;kill  走这个流程
        //xxx.xxx.xxx.xxx/cgi-bin/;kill
          if ( v22 )
            v25 = 0;
          else
            v25 = v23 & 1;
          if ( v25 )
            strcpy((char *)&v50, v20);
        }
        else
        {
        //    /;kill/xxxxxxx走这个流程, 下面这个拷贝命令目的是取 两个/之间的字符串
        // xxx.xxx.xxx.xxx/cgi-bin/;ls/xxxxxx  和 xxx.xxx.xxx.xxx/cgi-bin/;ls 效果是一样的,前面一种/后的xxxxxx会被忽略
          strncpy((char *)&v50, v20, v22 - 1 - v21);// v50=;kill
          if ( acosNvramConfig_match((int)&unk_F0378, (int)"2") )
            printf("\r\n#############tmp1=%s,tmp2=%s,tmp3=%s,cgi=%s\r\n", v12, v21, v22, &v50);
          v15 = &v46;
          strcpy((char *)&v46, v22);
          if ( acosNvramConfig_match((int)&unk_F0378, (int)"2") )
          {
            v16 = "\r\n###############%s(%d)path_info=%s\r\n";
            v17 = 110;
            v18 = "netgear_commonCgi";
            goto LABEL_34;
          }
        }

测试结果:


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值