Добро пожаловать обратно, мои начинающие хакеры!
В этой серии статей о взломе веб-приложений мы рассмотрим различные способы взлома веб-сайтов и веб-приложений. В данном руководстве мы рассмотрим обход каталогов и путей. При таком типе атак хакер может получить доступ к файлам на базовом сервере, которые могут быть конфиденциальными или критически важными.
Как вы знаете, веб-сервер Apache (самый популярный веб-сервер в мире) размещает свои сайты в каталоге /var/www/html (на серверах Windows это c:inetpubwwwroot). Это означает, что при просмотре веб-страниц на сайте все эти страницы являются подстраницами или подкаталогами этого корневого каталога.
Что, если бы, пока мы подключены к веб-серверу, мы могли бы выходить из этого каталога в другие каталоги на сервере и отображать эти файлы в браузере? Если да, то мы могли бы найти важную информацию на сервере в каталогах /etc, /proc или даже /var. Таким образом, мы могли бы найти ключевую информацию на сервере, такую как данные о ключевых пользователях, конфиденциальную информацию, запущенные процессы, или даже получить доступ к файлу конфигурации Apache и изменить его.
В этом руководстве мы попытаемся выполнить обход каталогов на намеренно уязвимом веб-сайте DVWA, встроенном в Metasploitable.
Шаг №1: Войдите в систему и настройте безопасность
Первый шаг — войти в DVWA. Учётные данные — «admin» и «password» (кстати, Damn Vulnerable!).
Затем установите уровень безопасности на «низкий».
Шаг №2 : Проверьте URL
Если бы вы запустили сканер уязвимостей, такой как OWASP-ZAP, против DVWA, вы, скорее всего, обнаружили бы несколько каталогов, уязвимых для обхода каталогов (здесь это называется «просмотром каталогов»).
Эти каталоги часто заканчиваются URL-адресом, указывающим на внутренний файл, например index.html, аналогичный приведенному ниже.
/script.php?page=index.html
Здесь PHP-скрипт указывает на файл, например, index.html. Хакер или пентестер может воспользоваться этой уязвимостью в PHP-коде, чтобы перенаправить скрипт в другой файл на сервере и отобразить его.
На веб-сайте DVWA мы можем найти несколько URL-адресов, указывающих на внутренние файлы, такие как:
/dvwa/vulnerabilities/fi/?page=
Если мы сможем направить URL-адрес на внутренний файл на базовом сервере, мы сможем заставить его раскрыть ключевую или конфиденциальную информацию.
Помните, что сервер Apache обслуживает страницы из каталога /var/www/html . Это означает, что просматриваемые нами страницы находятся в следующем каталоге на сервере:
/var/www/html/dvwa/vulnerabilities/fi
Другими словами, страницы, отображаемые веб-сервером в браузере, находятся на 6 уровней выше корневого каталога /. Это означает, что если мы сможем заставить PHP-скрипт подняться на шесть уровней, мы окажемся в каталоге /. Можно использовать ../ для перехода на один уровень каталога вверх или использовать комбинацию из шести элементов для перехода на 6 уровней вверх.
Давайте попробуем использовать следующий URL-адрес, который переместится на 6 уровней вверх от указанного местоположения файла в каталог /, а затем предоставит нам файл /etc/passwd.
192.168.1.112/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd
Как видите, нам удалось отобразить все учетные записи пользователей на сервере Linux, лежащем в основе веб-сервера Apache!
Конечно, в файле /etc/passwd хранятся учётные записи пользователей, но не пароли. Пароли хранятся в виде хешей в /etc/shadow . Давайте попробуем получить доступ к этому файлу и посмотрим, сможем ли мы получить доступ к хешам паролей.
Как видите, этот метод НЕ сработает для доступа к хешам паролей, поскольку они доступны только пользователю root, а мы вошли на сервер как обычный пользователь без прав администратора. В результате мы получаем сообщение об отказе в доступе .
Шаг №3: Доступ к каталогу / proc
Кроме того, мы можем использовать тот же метод для доступа к ключевой информации из каталога /proc. Помните, что у каждого процесса есть файл в каталоге proc. Например, мы можем определить версию операционной системы по файлу /proc/version . Мы можем получить к нему доступ, создав URL, например:
http://192.168.1.112/dvwa/vulnerabilities/fi/?page=../../../../../../proc/version
Как видно на снимке экрана выше, этот переход в каталог /proc отображает версию базового сервера Linux (Linux Server 2.6.24). Эта информация может быть критически важна для определения способа компрометации и дальнейшей атаки на этот сервер (эксплойты обычно привязаны к версии ПО).
Открыв файл /proc/net/tcp на сервере, мы можем увидеть все TCP-соединения, установленные сервером. Аналогичные результаты для UDP-соединений можно получить, открыв файл /proc/net/udp .
Наконец, попробуем получить доступ к файлу /proc/sched_deb . Этот файл отвечает за планировщик процессов в системах Linux. Открыв его, мы сможем получить снимок запущенных в системе процессов, включая их PID.
Заключение
Веб-серверы, уязвимые для обхода каталогов или просмотра каталогов, могут быть использованы для предоставления хакеру конфиденциальных или критически важных данных, включая учетную запись пользователя, информацию о процессе или даже конфиденциальный файл, находящийся на сервере, такой как схема сети или оценка уязвимости.
В этой серии статей о взломе веб-приложений мы рассмотрим различные способы взлома веб-сайтов и веб-приложений. В данном руководстве мы рассмотрим обход каталогов и путей. При таком типе атак хакер может получить доступ к файлам на базовом сервере, которые могут быть конфиденциальными или критически важными.
Как вы знаете, веб-сервер Apache (самый популярный веб-сервер в мире) размещает свои сайты в каталоге /var/www/html (на серверах Windows это c:inetpubwwwroot). Это означает, что при просмотре веб-страниц на сайте все эти страницы являются подстраницами или подкаталогами этого корневого каталога.
Что, если бы, пока мы подключены к веб-серверу, мы могли бы выходить из этого каталога в другие каталоги на сервере и отображать эти файлы в браузере? Если да, то мы могли бы найти важную информацию на сервере в каталогах /etc, /proc или даже /var. Таким образом, мы могли бы найти ключевую информацию на сервере, такую как данные о ключевых пользователях, конфиденциальную информацию, запущенные процессы, или даже получить доступ к файлу конфигурации Apache и изменить его.
В этом руководстве мы попытаемся выполнить обход каталогов на намеренно уязвимом веб-сайте DVWA, встроенном в Metasploitable.
Шаг №1: Войдите в систему и настройте безопасность
Первый шаг — войти в DVWA. Учётные данные — «admin» и «password» (кстати, Damn Vulnerable!).
Затем установите уровень безопасности на «низкий».
Шаг №2 : Проверьте URL
Если бы вы запустили сканер уязвимостей, такой как OWASP-ZAP, против DVWA, вы, скорее всего, обнаружили бы несколько каталогов, уязвимых для обхода каталогов (здесь это называется «просмотром каталогов»).
Эти каталоги часто заканчиваются URL-адресом, указывающим на внутренний файл, например index.html, аналогичный приведенному ниже.
/script.php?page=index.html
Здесь PHP-скрипт указывает на файл, например, index.html. Хакер или пентестер может воспользоваться этой уязвимостью в PHP-коде, чтобы перенаправить скрипт в другой файл на сервере и отобразить его.
На веб-сайте DVWA мы можем найти несколько URL-адресов, указывающих на внутренние файлы, такие как:
/dvwa/vulnerabilities/fi/?page=
Если мы сможем направить URL-адрес на внутренний файл на базовом сервере, мы сможем заставить его раскрыть ключевую или конфиденциальную информацию.
Помните, что сервер Apache обслуживает страницы из каталога /var/www/html . Это означает, что просматриваемые нами страницы находятся в следующем каталоге на сервере:
/var/www/html/dvwa/vulnerabilities/fi
Другими словами, страницы, отображаемые веб-сервером в браузере, находятся на 6 уровней выше корневого каталога /. Это означает, что если мы сможем заставить PHP-скрипт подняться на шесть уровней, мы окажемся в каталоге /. Можно использовать ../ для перехода на один уровень каталога вверх или использовать комбинацию из шести элементов для перехода на 6 уровней вверх.
Давайте попробуем использовать следующий URL-адрес, который переместится на 6 уровней вверх от указанного местоположения файла в каталог /, а затем предоставит нам файл /etc/passwd.
192.168.1.112/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd
Как видите, нам удалось отобразить все учетные записи пользователей на сервере Linux, лежащем в основе веб-сервера Apache!
Конечно, в файле /etc/passwd хранятся учётные записи пользователей, но не пароли. Пароли хранятся в виде хешей в /etc/shadow . Давайте попробуем получить доступ к этому файлу и посмотрим, сможем ли мы получить доступ к хешам паролей.
Как видите, этот метод НЕ сработает для доступа к хешам паролей, поскольку они доступны только пользователю root, а мы вошли на сервер как обычный пользователь без прав администратора. В результате мы получаем сообщение об отказе в доступе .
Шаг №3: Доступ к каталогу / proc
Кроме того, мы можем использовать тот же метод для доступа к ключевой информации из каталога /proc. Помните, что у каждого процесса есть файл в каталоге proc. Например, мы можем определить версию операционной системы по файлу /proc/version . Мы можем получить к нему доступ, создав URL, например:
http://192.168.1.112/dvwa/vulnerabilities/fi/?page=../../../../../../proc/version
Как видно на снимке экрана выше, этот переход в каталог /proc отображает версию базового сервера Linux (Linux Server 2.6.24). Эта информация может быть критически важна для определения способа компрометации и дальнейшей атаки на этот сервер (эксплойты обычно привязаны к версии ПО).
Открыв файл /proc/net/tcp на сервере, мы можем увидеть все TCP-соединения, установленные сервером. Аналогичные результаты для UDP-соединений можно получить, открыв файл /proc/net/udp .
Наконец, попробуем получить доступ к файлу /proc/sched_deb . Этот файл отвечает за планировщик процессов в системах Linux. Открыв его, мы сможем получить снимок запущенных в системе процессов, включая их PID.
Заключение
Веб-серверы, уязвимые для обхода каталогов или просмотра каталогов, могут быть использованы для предоставления хакеру конфиденциальных или критически важных данных, включая учетную запись пользователя, информацию о процессе или даже конфиденциальный файл, находящийся на сервере, такой как схема сети или оценка уязвимости.