непривилегированный обычный пользователь, передавая переменные окружения в / bin / login

320
AAAAAAAA

Предположим, что во FreeBSD (или, может быть, в linux) есть обычный непривилегированный пользователь (не суперпользователь). И есть автономный telnet (я знаю, что telnet обычно запускается под inetd), работающий под (принадлежащим) этим пользователем. (Предположим, что не было никакого исходного работающего telnet, принадлежащего пользователю root). Этот сервер telnet запрограммирован таким образом, что он не проверяет переменные среды ld_ * перед передачей его в / bin / login, принадлежащему пользователю root, для которого настроен setuid.

Вопрос будет: 1. Будет ли работать этот телнет? 2. Если это сработает, сможет ли он передать переменные окружения в / bin / login?

0

1 ответ на вопрос

0
grawity

Предположим, что во FreeBSD (или, может быть, в linux) есть непривилегированный суперпользователь.

«Непривилегированный суперпользователь» - это противоречие в терминах; Само слово «суперпользователь» означает пользователя, имеющего все привилегии.

Этот сервер telnet запрограммирован так, что он не проверяет переменные окружения ld_ *

Я не уверен, что это актуально. Сервер telnet не имеет никаких специальных привилегий, поэтому удаление LD_*переменных не очень полезно ...

  1. Будет ли работать этот телнет? 2. Если это сработает, сможет ли он передать переменные окружения в / bin / login?

Он будет работать частично, но, скорее всего, не сможет подключиться к стандартному порту Telnet из-за отсутствия привилегии CAP_NET_BIND_SERVICE.

Да, он сможет передавать переменные среды login, как и любой другой процесс. Однако, по крайней мере в Linux, загрузчик (ld-linux.so) отбрасывает все LD_*переменные перед запуском программы setuid, поэтому setuid- loginне будет ими затронут.