이것은 펌웨어 업그레이드에 사용되는 SerComm 제조 라우터 및 홈 게이트웨이 장치 (Linksys, Netgear, Cisco)에있는 MIPS 포트입니다.
scfgmgr
포트 32764에서 수신 대기중인 프로세스에 의해 관리됩니다 .
텔넷을 통해 액세스하면 접두사 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 코드를 참조하십시오 .
현재 힙 기반 버퍼 오버플로로 유명합니다 ( 백도어 ). 이것은 2013 년 크리스마스 에 Eloi Vanderbeken 에 의해 발견 되었지만 2008 년 중국 해커들에 의해 아마도 알려졌을 것입니다 ( cgi file ).
작동하는 방법은 다음과 같습니다.
힙 기반 버퍼 오버 플로우 :
메시지 :
따라서 간단한 넘침 메시지를 사용하면 많은 흥미로운 세부 정보를 얻을 수 있습니다.
그러나 이로 인해 구성이 재설정 될 수 있으므로 집에서 구성하지 마십시오.
다음은이 포트를 통해 실행 된 라우터가 수행 한 역 명령입니다.
nvram
-덤프 구성.
get var
-구성 변수 가져 오기
가능한 스택 기반 버퍼 오버 플로우 (변수가 사용자에 의해 제어되는 경우)
set var
-설정 구성 var
스택 기반 버퍼 오버 플로우, 출력 버퍼 (크기 ≈ 0x10000)가 스택에 있습니다.
commit nvram
-/ tmp / nvram에서 nvram / dev / mtdblock / 3을 읽고 CRC를 확인하십시오.
/ tmp / nvram에서 nvram (/ dev / mtdblock / 3)을 설정하십시오. CRC 확인
브리지 모드를 ON으로 설정하십시오 (확실히 테스트 할 시간이 없었습니다)
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 (예, 쉘입니다 ...)
특수 명령 :
- 종료, 안녕, 종료-> 종료 ... (alive = 0)
- cd : 디렉토리 변경 (약간의 WTF)
다른 명령 :
- stdout 처리 (?)의 정수 오버플로는 악용 할 수 없지만 여전히 ...
- cmd 출력의 버퍼 오버 플로우 (다시 동일한 버퍼)…
파일 쓰기
- 페이로드의 파일 이름
- 루트 디렉토리 = / tmp
- 디렉토리 탐색이 가능할 수도 있습니다 (테스트되지는 않았지만 공개 (sprintf (“/ tmp / % s”, payload))…)
리턴 버전
모뎀 라우터 IP를 반환
기본 설정 복원
- nvram_set (“restore_default”, 1)
- nvram_commit
/ dev / mtdblock / 0 읽기 [-4 : -2]
디스크 (/ tmp / nvram)에서 nvram을 덤프하고 커밋
출처 : (슬라이드 쇼) Linksys가 내 크리스마스를 구한 방법!
일반적으로 이러한 종류의 포트는 공식적으로 IANA에 의해 이루어져야합니다 .
다음은 2007 년 LinuxQuestions 에서이 포트와 관련하여 unSpawn이 응답 한 내용입니다 .
공식적으로 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
. 이것이 가장 정확한 방법입니다.
그렇지 않으면 호스트에 액세스 할 수없는 경우 예를 들어 telnet을 통해 호스트에게 질문 할 수 있습니다. 이것은 정확한 방법이 아니며, 손상된 호스트의 경우 침입자에게 자신의 사건에 대해 경고 할 수 있습니다.
또한보십시오: