这是SerComm制造的路由器和家庭网关设备(Linksys,Netgear,Cisco)中存在的MIPS端口,用于固件升级。
这由scfgmgr侦听端口32764的进程管理。
通过telnet访问时,似乎返回以ScMM或为前缀MMcS(取决于系统的字节序)的数据。
这是一个非常简单的二进制协议,带有标头(0xC字节),后跟有效载荷。
标题结构:
typedef struct scfgmgr_header_s {
    unsigned long   magic;
    int             cmd;
    unsigned long   len;
} scfgmgr_header;
这基于Cisco GPL源(例如,已停用的ftp-eng.cisco.com上的wap4410n_v2.0.1.0_gpl.tgz)。
有关实际信息,请参见elvanderb的描述和示例Python代码。
当前,它以基于堆的缓冲区溢出而闻名,可以使您完全访问设备(后门)。这是由Eloi Vanderbeken在2013年圣诞节发现的,但是它很可能在2008年被中国黑客所知道(cgi文件)。
这是工作方法。
基于堆的缓冲区溢出:

讯息:

因此,使用简单的溢出消息可以提供许多有趣的细节:

但是,这可能会导致配置被重置,因此请不要在家中进行配置。
这是路由器通过此端口执行的一些反向命令。
- nvram-转储配置。
 
- get var-获取配置变量
 - 可能基于堆栈的缓冲区溢出(如果变量由用户控制) 
- set var-设置配置变量
 - 基于堆栈的缓冲区溢出,输出缓冲区(大小≈0x10000)在堆栈上。 
- commit nvram-从/ tmp / nvram读取nvram / dev / mtdblock / 3并检查CRC
 - 从/ tmp / nvram设置nvram(/ dev / mtdblock / 3); 检查CRC 
- 将桥接模式设置为“开”(不确定,我没有时间对其进行测试) - nvram_set(“wan_mode”, bridgedonly)
nvram_set(“wan_encap”, 0)
nvram_set(“wan_vpi”, 8)
nvram_set(“wan_vci”, 81)
system(“/usr/bin/killall br2684ctl”)
system(“/usr/bin/killall udhcpd”)
system(“/usr/bin/killall -9 atm_monitor”)
system(“/usr/sbin/rc wan stop >/dev/null 2>&1”)
system(“/usr/sbin/atm_monitor&”)
 
- 显示测得的互联网速度(下载/上传) 
- cmd(是的,是一个外壳……) - 
- 特殊命令: - 
- 退出,再见,退出->退出...(有效= 0)
- cd:更改目录(有点WTF)
 
- 其他命令: - 
- stdout处理中的整数溢出(?)无法利用,但仍然...
- cmd输出上的缓冲区溢出(再次相同的缓冲区)…
 
 
- 写文件  - 
- 有效负载中的文件名
- 根目录= / tmp
- 目录遍历是可能的(未经测试,但它是开放的(sprintf(“ / tmp /%s”,有效载荷))…)
 
- 返回版本  
- 返回调制解调器路由器ip  
- 恢复默认设置 - 
- nvram_set(“ restore_default”,1)
- nvram_commit
 
- 读取/ dev / mtdblock / 0 [-4:-2]    
- 在磁盘(/ tmp / nvram)上转储nvram并提交 
资料来源:(幻灯片)Linksys如何拯救我的圣诞节!
通常,此类端口应由IANA正式授权。
这是unSpawn说在2007年LinuxQuestions与此相关的端口:
  如果它是IANA正式分配的端口(介于0到30000之间的数字),则其编号应与/ etc / services中的服务(“ getent services portnumber”),扫描程序的服务文件(例如Nmap或在线)相对应像Sans的ISC这样的数据库。
  
  请注意,可以使用本地配置临时端口的使用/proc/sys/net/ipv4/ip_local_port_range sysctl。旧的默认值是1024-5000,对于服务器,则使用32768-61000的值,而某些应用程序则需要1025-65535。
  
  还要注意,这些是静态的数字到服务的映射,例如,/ etc / services会说TCP/22匹配SSH,而在特定情况下并不一定如此,
  
  否则,如果是其中的你不知道哪个进程做了绑定到它,然后,如果你有机会获得,您可以在使用查询主机的端口netstat -anp,lsof -w -n -i protocol:portnumber或fuser -n protocol portnumber。这是最准确的方法,
  
  否则,如果您无权访问主机,则可以通过远程登录来查询它。这不是一种准确的方法,如果主机受到感染,您可能会警告入侵者您的情况。
也可以看看: