Небезопасная зависимость в printf при запуске setgid - PullRequest
2 голосов
/ 10 ноября 2010

В рамках моего класса безопасности нам пришлось использовать ряд уязвимостей в менее защищенной версии Ubuntu.Я решил все проблемы, однако натолкнулся на одну проблему, которая, я надеюсь, кто-то может пролить некоторый свет.

Каждая задача была двоичным файлом setgid, который, когда он был принят, давал злоумышленнику право следующего уровня.Чтобы быть добавленным в группу этого уровня, нужно было запустить команду l33t, которая по существу выполняла adduser <user> <group>.

. В одном из моих эксплойтов мой шелл-код просто сделал вызов exec l33t, и я получил это сообщение:Небезопасная зависимость в printf при запуске setgid в строке /usr/share/perl5/Debian/AdduserCommon.pm 64.

Чтобы обойти эту проблему, я создал двухстрочную оболочку Борна, которая работала нормально:

#!/bin/sh
l33t

Кто-нибудь может объяснить, почему я увидел проблему небезопасной зависимости?

1 Ответ

0 голосов
/ 10 ноября 2010

Если вы еще не знаете о режиме испорченного текста : он вызывает пометку всего пользовательского ввода как «испорченного» и откажется выводить любое «испорченное» значение (подразумевается, что вы должныявно «untaint» ненадежный ввод).

В любом случае, строка 64 из AdduserCommon.pm - это sprintf в функции dief… Так что я подозреваю, что происходит, когда вы вызываете l33t напрямую, скрипт adduser встречает какую-то ошибку, затем возникает ошибка, когда adduser пытается сообщить об этой ошибке.

...