Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Впрочем, в работе локально добавляются ещё и другие прелести жизни – эта атака использует небезопасное создание временных файлов. Для лучшего понимания опять-таки рассмотрим пример: пусть существует база данных, которая во время запуска создаёт временный файл /tmp/NameOfFile.some_addition. Зачастую все, что находится до точки – не изменяется от запуска к запуску, а вот то, что после точки – должно быть всё время и, что немаловажно, уникальным. Наша программа будет иметь SUID-бит и создавать временный файл по следующей схеме – /tmp/NameOfFile.PID, где PID – это, соответственно, номер процесса. Вполне возможно, что такой файл будет уникальным, однако его имя будет предсказуемо, и в этом заключается главная ошибка. Директория /tmp обычно разрешает запись в неё любых файлов, любого пользователя, и потому можно создать символическую ссылку на файл, который нужно переписать, но который имеет «недостижимые» для нас права доступа. Кроме того, пусть наша база данных записывает в файл аргументы, с которыми она была вызвана. Тогда делаем просто – создаём ссылку, скажем, с /etc/passwd на /tmp/NameOfFile.Guesed_PID. Далее вызываем нашу базу данных с параметрами root::0:0:root:/root:/bin/sh. Допустим, по причине неправильных аргументов программа завершается, но что оказывается в файле /etc/passwd? Правильно – наша запись, которая позволяет заходить любому пользователю в качестве суперпользователя без пароля. Кстати, неплохо было бы сделать копию переписываемого файла, чтобы не было сильно заметно, что что-то произошло (благо /etc/passwd читаем любым пользователем). Вот и все.
Remote root attack
После краткого экскурса по локальному получению прав суперпользователя перейдём к гораздо более опасным атакам – получение root удалённо. Алгоритм здесь похож (и, можно сказать, является доведённым до ума) на алгоритм D.o.S.-атак, только с той разницей, что теперь необходимо не просто выбить программу, а заставить её выполнить необходимый код. Естественно, желательно, чтобы эта программа работала от имени суперпользователя. В таком случае, при применении эксплоита, человек получает полноценный шелл (shell), что называется, не выходя из дома.
Здесь нет особых премудростей (в использовании «дырок» по готовому шаблону), необходимо «просто» найти машину с уязвимой программой. Для этого даже существуют специальные сканеры. Алгоритм их работы прост – либо генерируется случайный IP-адрес, либо его задаёт пользователь. Далее этот адрес пингуется; в том случае если машина отвечает, происходит подключение к определённому порту. Если все эти шаги проходят удачно, то в зависимости от искомого сервиса либо посылается какая-нибудь строка, либо нет. В любом случае «грабится» (grab – захватывать) так называемый банер (то, что выдаёт программа подключившемуся клиенту) и анализируется версия программного обеспечения (которая обычно выводится в банере). Если она удовлетворяет необходимым условиям – то всё хорошо, адрес машины заносится в лог-файл (log file), и сканер переходит к следующему адресу. В том случае если происходит провал хотя бы на одной стадии, то адрес отвергается и берётся следующий. Существует ряд людей, которые либо предоставляют подобные сканеры через веб-доступ (то есть для этого совершенно не нужно что-либо знать и иметь специального образования), нередко ещё рядом можно найти инструкцию «по применению» и всё необходимое программное обеспечение. Другие люди занимаются подобным сканированием со своих собственных машин и в большинстве случаев далеко не для того, чтобы получив root shell, сразу же послать письмо администратору с тем, что его машина уязвима, а с несколько другими целями. Если оставить споры о том, как можно называть таких людей, то можно сказать, что это своего рода санитары леса.