Il s'agit du port MIPS qui est présent dans les périphériques fabriqués par SerComm, les routeurs et les passerelles domestiques (Linksys, Netgear, Cisco) utilisés pour les mises à niveau du micrologiciel.
Ceci est géré par un scfgmgr
processus qui écoute sur le port 32764.
Lorsqu'elles sont accessibles via telnet, les données préfixées par ScMM
ou MMcS
(selon l'endianisme du système) semblent être renvoyées.
C'est un protocole binaire très simple avec en-tête (0xC octets) suivi d'une charge utile.
Structure d'en-tête:
typedef struct scfgmgr_header_s {
unsigned long magic;
int cmd;
unsigned long len;
} scfgmgr_header;
Ceci est basé sur des sources Cisco GPL (par exemple wap4410n_v2.0.1.0_gpl.tgz sur ftp-eng.cisco.com déclassé).
Pour des informations réelles, voir la description d'elvanderb et un exemple de code Python .
Actuellement, il est célèbre pour le débordement de tampon basé sur le tas qui peut vous donner un accès complet à l'appareil ( une porte dérobée ). Cela a été découvert par Eloi Vanderbeken à Noël 2013, mais il était probablement connu des pirates chinois en 2008 ( fichier cgi ).
Voici comment ça marche.
Débordement de tampon basé sur le tas:
Messages:
Donc, utiliser un simple message débordant peut donner beaucoup de détails intéressants:
Cependant, cela pourrait entraîner la réinitialisation de la configuration, alors ne le faites pas à la maison.
Voici quelques commandes inversées exécutées par le routeur exécutées via ce port.
nvram
- Configuration de vidage.
get var
- Obtenez la configuration var
débordement de tampon possible basé sur la pile (si la variable est contrôlée par l'utilisateur)
set var
- Définir la configuration var
débordement de tampon basé sur la pile, le tampon de sortie (taille ≈ 0x10000) est sur la pile.
commit nvram
- Lisez nvram / dev / mtdblock / 3 depuis / tmp / nvram et vérifiez CRC
définir nvram (/ dev / mtdblock / 3) à partir de / tmp / nvram; vérifier CRC
Activer le mode bridge (pas sûr, je n'ai pas eu le temps de le tester)
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&”)
Afficher la vitesse Internet mesurée (téléchargement / téléchargement)
cmd (ouais, c'est une coquille…)
commandes spéciales:
- exit, bye, quit -> quit ... (vivant = 0)
- cd: changer de répertoire (un peu WTF)
autres commandes:
- débordement d'entier dans la gestion stdout (?) non exploitable mais quand même ...
- débordement de tampon sur la sortie cmd (même tampon à nouveau)…
écrire un fichier
- nom de fichier dans la charge utile
- répertoire racine = / tmp
- la traversée du répertoire peut être possible (non testé mais c'est un open (sprintf (“/ tmp /% s”, payload))…)
version de retour
retour modem routeur ip
restaurer les réglages par défaut
- nvram_set ("restore_default", 1)
- nvram_commit
lire / dev / mtdblock / 0 [-4: -2]
- ne sais pas ce que c'est, je n'ai pas eu le temps de le tester
vider nvram sur le disque (/ tmp / nvram) et valider
Source: (diaporama) Comment Linksys a sauvé mon Noël!
Normalement, ce type de ports devrait être officiellement confié à l' IANA .
C'est ce que unSpawn a répondu lors de LinuxQuestions en 2007 concernant ce port:
S'il s'agit d'un port officiellement attribué par l'IANA (avec un nombre compris entre 0 et environ 30000), son numéro doit correspondre à un service dans / etc / services (`` numéro de port des services getent ''), le fichier de services d'un scanner comme Nmap ou en ligne base de données comme Sans 'ISC.
Notez que l'utilisation du port éphémère peut être configurée localement à l'aide du /proc/sys/net/ipv4/ip_local_port_range
sysctl
. Une ancienne valeur par défaut était 1024-5000, pour les serveurs une valeur de 32768-61000 est utilisée et certaines applications veulent quelque chose comme 1025-65535.
Notez également qu'il s'agit de mappages statiques de nombre à service et que, par exemple, / etc / services dira TCP/22
que SSH correspond à ce qui ne doit pas être le cas dans une situation particulière,
Sinon, si c'est un port dont vous ne savez pas quel processus lui a été lié, alors si vous avez accès à l'hôte, vous pouvez l'interroger à l'aide de netstat -anp
, lsof -w -n -i protocol:portnumber
ou fuser -n protocol portnumber
. Ceci est la méthode la plus précise,
Sinon, si vous n'avez pas accès à l'hôte, vous pouvez l'interroger, par exemple en le téléphonant. Ce n'est pas une méthode précise et dans le cas d'un hôte compromis, vous pouvez alerter l'intrus sur lequel vous êtes.
Voir également: