Notes

Add an user prompt to Anyterm

Sorry, this entry is only available in French. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

Anyterm est une application permettant d’avoir accès à une console à travers une interface web à l’ide de ssh.

La configuration de base d’Anyterm peut être trouvée sur le site de l’application ou sur le net, les tutoriels ne manquant pas. Cependant, le site d’Anyterm n’indique aucune procédure permettant de proposer une saisie de l’utilisateur avant de lancer la commande ssh.

J’ai tout d’abord penser à utiliser la commande “read” combinée à la commande “echo” pour palier à ce manque car c’était la solution la plus facile à mettre en place. Cependant cette solution est loin d’être sécurisée: il suffit à l’utilisateur malveillant d’injecter des commandes après le read et celles-ci seront interprétés.

J’ai donc décidé de passer par un script externe qui ferait appel à la commande ssh. En recherchant je suis tombé sur un script Perl présenté sur le forum Ubuntu permettant de satisfaire mes besoins. En examinant le code, j’ai remarqué que la variable fournie par l’utilisateur n’était pas sécurisée et que certaines parties étaient inutile pour ce que voulait faire. Je l’ai donc sécurisé en supprimant tous les caractères non alpha-numérique dans la variable saisie et en supprimant le code inutile.

Le code résultant est donc le suivant:

#!/usr/bin/perl
while ( length($username) >= 3 ) {
print "Enter your username: "
my $_ = $username = ;
chomp ( $username );
$OK_CHARS='a-zA-Z0-9';
s/[^$OK_CHARS]//go;
$username = $_;
}
if ( $^O == 'linux' )
{
exec ("/usr/bin/ssh $username\@$ARGV[0]");
}