В рамках моего класса безопасности нам пришлось использовать ряд уязвимостей в менее защищенной версии Ubuntu.Я решил все проблемы, однако натолкнулся на одну проблему, которая, я надеюсь, кто-то может пролить некоторый свет.
Каждая задача была двоичным файлом setgid, который, когда он был принят, давал злоумышленнику право следующего уровня.Чтобы быть добавленным в группу этого уровня, нужно было запустить команду l33t, которая по существу выполняла adduser <user> <group>
.
. В одном из моих эксплойтов мой шелл-код просто сделал вызов exec l33t, и я получил это сообщение:Небезопасная зависимость в printf при запуске setgid в строке /usr/share/perl5/Debian/AdduserCommon.pm 64.
Чтобы обойти эту проблему, я создал двухстрочную оболочку Борна, которая работала нормально:
#!/bin/sh
l33t
Кто-нибудь может объяснить, почему я увидел проблему небезопасной зависимости?