Написано R a v e N`ом для BSRF (http://blacksun.box.sk)
17/7/2000
"Атаки Подтверждения Ввода". Некоторых из вас может испугать этот термин. Но,
скажу вам правду, это очень просто и даже весело. А теперь, позвольте мне
объяснить.
Что такое IVA?
IVA расшифровывается как Атака Подтверждения Ввода. Постараюсь
объяснить это проще, насколько это вообще возможно, так что даже те, кто не имеет никакого
опыта программирования, должны все понять. Предположим, что у вас есть программа, в которую нужно что-либо вводить. Это
может быть практически все, что угодно. Фактически, почти в каждое приложение
нужно что-то вводить. Когда вы сообщаете своему браузеру адрес нужного вам
сервера, вы вводите этот адрес в его командной строке. Когда вы играете в
компьютерную игру, вам предлагается ввести свое имя для учета результатов.
Или когда вы вводите свой пароль. Случалось ли когда-нибудь так, что программа
не проверяла правильность введенных данных?
Предположим, что вы, вводите что-либо, а после этого вводите какой-то
определенный символ и команду, и, в последствии, эта команда будет выполнена.
Или может быть, что при вводе вами очень длинного пароля, программа глюканет
и пропустит вас без пароля. Или может быть, она пропустит вас, если совсем
ничего не набрать.
Программа не проверяет, что то, что вы ввели - правильно... Так, давайте
уточним, что это - это баг, или дырка в программе, встречающаяся там,
где надо что-нибудь вводить, и программа не проверяет, что то, что вы ввели -
допустимо, тем самым позволяя нам использовать эту дыру. Теперь, несколько примеров,
для лучшего усваивания и демонстрации того, как это может быть осуществлено и использовано.
Примеры
Наилучший возможный реальный пример, который я могу объяснить, это дырка
в PHF. Да, PHF! Некоторые из вас уже могли знать об этой дыре. Да, да, мы знаем, что этот
скрипт появился в 1996 году, но давайте забудем об этом в течение секунды и
сконцентрируемся на этой работе.
Давайте представим, что мы в 1996 году. PHF это CGI-скрипт, который идет
в стандартной поставке Apache Web Server`а - всемирно популярного вебсервера
(и по сегодняшний день). Все было бы хорошо, если бы не Jennifer
Myers, обнаруживший, что скрипт PHF, принимая символ новой строки, вводит команды в
командную строку с привилегиями вебсерверов. Это означает, что httpd
(HTTP-демон, то есть программа, висящая на 80 порту (по умолчанию) и
ожидающая HTTP-соединений, термин "демон" более подробно рассматривается в
других статьях BSRF) запускающийся на правах root (что является очень
глупым действием. Вебсерверы должны работать с более ограниченного
аккаунта), может выполнять каждую команду с привилегиями
root.
В основном, для получения файла паролей, все, что вы должны сделать, это ввести:
http://www.какой-то-уязвимый-вебсервер.com/cgi-bin/phf?Qalias
=x&0a/bin/cat&20/etc/passwd
Затем вы получите файл паролей, как будто у вас были права root на доступ к
консоли терминала и как будто вы ввели в cat /etc/passwd (если этот файл
зашадоуэн, вы также можете получить /etc/shadow. В конце концов, у вас есть
root-разрешение). На этом этапе, все, что вы должны сделать, это запустить
крякер паролей и ждать. Продвинутые крякеры могут предоставлять и другие возможности. Например, они могли
бы создать файл .rhosts в корневой директории и добавить туда ваше имя хоста
и имя пользователя, для того, чтобы потом удаленно входить в эту систему, просто
используя rlogin (если такая услуга доступна и не фильтруется файрволлом. Но,
кроме того, если админ достаточно глупый, и не сможет сделать, чтобы httpd не
запускался на правах root, вы сможете пользоваться этой ошибкой неограниченно).
Анализ атаки
http://www.какой-то-уязвимый-вебсервер.com/
cgi-bin/phf?Qalias=x&0a/bin/cat&20/etc/passwd
Хмм...
Ужасно длинная, не правда ли? Давайте рассмотрим отдельно каждую часть.
http://www.какой-то-уязвимый-вебсервер.com
Нет смысла объяснять, что это - эта часть сообщает вашему броузеру,
с каким сервером надо связаться.
/cgi-bin/phf
Эта часть сообщает вашему броузеру, что запрашивается файл, называющийся phf,
находящийся в каталоге cgi-bin, который, в свою очередь, находится в
корневом каталоге (это главная директория, подобная c:\ в DOS/Windows
системах).
?
Передает то, что вы хотите ввести в phf, cgi-скрипт.
Qalias=x
Пока ввод идет нормально, эта программа (и программист)
находится в режиме ожидания.
&0a
Это самая веселая часть. &0a это метасимвол новой строки. Он сообщает
PHF, чтобы тот начал полностью с новой командной строки.
/bin/cat&20/etc/passwd
Это команда исполнения. Сообщаем PHF, что мы хотим запустить следующую команду:
/bin/cat/etc/passwd
Программа cat является стандартной Unix-программой. Ваш компьютер проверяет,
не переназначен ли выход (на принтер, в файл, или, в нашем случае, через сокет
TCP/IP прямо в наш броузер. &20 это другой метасимвол, который представляет
собой "пробел" (он используется вместо настоящих пробелов, поскольку httpd
не распознает пробелы в URL).
Как защититься от таких атак
Прежде всего, убедитесь, что запуск программ с привилегированного акаунта,
по возможности ограничен, и что пользователи могут иметь доступ только к
тем файлам, которые вы разрешите (и если так, постарайтесь минимизировать
доступ. Например: веб-сервер должен быть способен прочитать
html, gif, jpg, cgi-скрипты, или другие файлы, имеющие определенное расположение на сервере,
но не показывающие пути к ним). Таким образом, вы минимизируете, или же
полностью устраните любую возможность причинения вам ущерба.
Также, как разработчик, вы должны взять на вооружение свой ум при написании
своих программ и при тестировании их в неожиданных условиях. Другими словами,
когда вы тестируете новую модель автомобиля, вы проверяете его во всех, разного
рода необычных ситуациях и диких авариях, водите его в разных типах местностей.
Просто вы должны убедиться, что его можно водить и затем выставлять на рынок,
в противном случае, люди поймут, что, хотя машина и работает отлично в нормальных
условиях, но в нестандартных условиях она работает хуже, и, в конечном счете,
переключатся на другого производителя.
Благодарю за прочтение этой статьи. Вы можете скачать другие статьи о BSRF
с blacksun.box.sk - просто найдите страницу со статьями. И помните, если у
вас есть вопросы, на нашем сайте есть форум, вы можете задать свой вопрос там.