2014-01-24 4 views
1

Не могли бы вы мне помочь проанализировать этот сценарий и скажите мне, что вопросы безопасности имеет (если таковые имеются):Что делает этот сценарий bash и какие у него проблемы?

#!/bin/bash 
    user=$(whoami) 
    touch /var/log/bashlog/$user 
    /bin/bash | tee -a /var/log/bashlog/$user 

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

+1

Что он должен делать? (esp last line) – anubhava

+0

@anubhava Unsure, попросили исследовать систему, чтобы найти ошибки, и этот файл сбил меня с толку (был сохранен как странное имя) – JWyatt

+1

Вы имеете в виду, кроме того, что если сценарий каким-то образом запускается с повышенными привилегиями , он предоставляет корневую оболочку на машине? – chepner

ответ

3

Этот сценарий потенциально опасен!

Различия для вас могут различаться в зависимости от того, как это было вызвано. Если это то, что вы намеренно запускаете для отладки консоли или создания учебников, возможно, это нормально. Однако это не пахнет, как в этом. Если это было преднамеренно, и опасности, которые он вводит, были учтены, ему не нужно было бы знать многопользовательский режим, и он не мог войти в общедоступное место. Если он запускается автоматически как часть системы входа на вашем компьютере по нечетко документированным причинам, Я бы сказал, что у вас есть сильно скомпрометированная машина.

  • Во-первых, что скрипт устанавливает личность пользователя и создает файл журнала для них в общедоступном каталоге. Предполагая, что ваши пользователи имеют настройки по умолчанию umask, эти файлы журнала, вероятно, могут быть прочитаны всеми пользователями в системе.

  • Следующее, что он делает - это запуск новой оболочки. Уловкой является то, что производится вывод новой оболочки. Команда tee собирается разделить выход на два места. Вывод всего, что происходит в оболочке, будет записываться в консоль, но дополнительная копия всего будет добавлена ​​к ранее установленному файлу журнала.

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

Вы, вероятно, НЕ хотите, чтобы это произошло.

2

Этот скрипт регистрирует каждый выход, созданный во время сеанса командной строки пользователя. Это потенциально опасно, поскольку оно может отслеживать некоторые действия пользователя. Но это не так опасно, поскольку он не захватывает входные данные, поэтому пароли не будут пойманы.

Смежные вопросы