Что тут происходит??

sendmail cat/etc/passwd
sendmail cat\etc\passwd
sendmail xxxcat/etc/passwd

Почему в мире это фактически выполняет команду cat? Это работает, по крайней мере, в Fedora Core 4 O/S (да, оно старое, но все же ...) с Postfix.

Это известная (и исправленная) ошибка?

1 ответ1

3

Я протестировал Postfix 2.7.1-1 (Debian), и ни одна из них не работает так, как вы описали. cat не казнен. (И, честно говоря, я не могу представить никакой возможной причины, почему sendmail выполнял бы произвольную часть своего аргумента только потому, что он произнес « cat ».)

Конечно, если вы strace в sendmail процесс, вы можете увидеть файл /etc/passwd и т.д. / пароль является open() ред, но это совершенно нормально: sendmail запрашивает реальное имя вашей учетной записи, для того , чтобы заполнить From: заголовок правильно.

Но strace не показывает никаких вызовов exec*() , за исключением того, который запускает сам sendmail .


Если вы все еще верите, что это ошибка,

  • вместо этого попробуйте совершенно не связанный файл:

    sendmail cat/etc/fstab
    

    Здесь fstab - это то, что обычно никогда не читается.

  • убедитесь, что sendmail не является псевдонимом или функцией оболочки:

    $ type sendmail
    sendmail is /usr/sbin/sendmail
    
  • И обновить Postfix.

    (да, он старый, но все же ...)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .