rlogin honore la même confiance basée sur l'hôte que rsh : si le ~/.rhosts de l'utilisateur cible ou le /etc/hosts.equiv système fait confiance à l'hôte et au nom d'utilisateur qui se connectent, la connexion réussit sans mot de passe, débouchant directement sur un shell interactif. L'attaque est identique en mécanisme au cas rsh, mais livre une session de connexion plutôt qu'une seule commande. Un attaquant utilise une confiance existante (en se connectant depuis, ou en usurpant, un hôte de confiance), ou plante une entrée .rhosts là où il peut écrire dans le home de la cible, puis rlogin -l <user> pour un shell interactif sans mot de passe.
# passwordless interactive login when trusted
rlogin -l <user> <target>
# plant trust first if you can write the target's home (e.g. over NFS)
echo 'attacker-host attacker-user' >> ~victim/.rhosts
rlogin -l victim <target> # now no password
Notes d'exploitation#
- Le gain par rapport à rsh est un shell interactif (rlogin) plutôt qu'une seule commande, donc c'est préférable quand on veut une session ; le mécanisme de confiance et les moyens de l'obtenir sont les mêmes.
- Planter
.rhostsnécessite une écriture dans le répertoire home (usurpation d'UID NFS, partage accessible en écriture, point d'ancrage) ;+ +ouvre le compte à tout hôte/utilisateur, une entrée ciblée est plus furtive, voir écriture rhosts. - La confiance s'applique par utilisateur, donc visez le
.rhostsd'un compte spécifique ; pour une portée large, un hosts.equiv permissif couvre tous les utilisateurs non root. - Là où la confiance n'est pas disponible, rlogin se rabat sur un mot de passe que vous pouvez capturer en clair.