Поиск админок (панелей управления) на сайтах


Адрес административной панели нужно знать для ввода в неё добытых учётных данных. Также замечено, что «внутренним» узлам веб-сайтов, которые не предназначены для широкого круга посетителей, некоторые программисты уделяют меньше внимания, там может обнаружиться, например, уязвимость SQL-инъекция.

Поиск административных панелей – это несложная задача, этим можно заниматься вводя в адресную строку браузера различные предполагаемые пути до страницы входа в панель. Имеется достаточно много разнообразных утилит, позволяющих автоматизировать и ускорить этот процесс. Рассмотрим программы для поиска страниц входа в административные панели (панели управления).

Поиск административных панелей из jSQL Injection

Если вы предпочитаете кроссплатформенную программу с графическим интерфейсом, то для поиска входа в панели управления можно воспользоваться jSQL Injection. Программа имеет инструмент, который называется «Поиск административной папки», он расположен на соответствующей вкладке программы:

В программу уже загружен достаточно большой список адресов страниц, по которым чаще всего располагаются админки. Вы можете отредактировать этот список: добавить новые значения или загрузить их из файла.

Для начала процесса введите адрес сайта, выделите желаемые или все значения в списке и нажмите кнопку «Поиск админки».

В целом программа показывает себя не очень хорошо, поскольку не позволяет менять настройку пользовательского агента (User-Agent). Из-за этого многие веб-серверы отбрасывают её попытки соединения.

DIRB

DIRB — это сканер веб-контента. Он ищет существующие (возможно, скрытые) веб-объекты. В основе его работы лежит поиск по словарю, он формирует запросы к веб-серверу и анализирует ответ.

Использование:

dirb <базовый_адрес> [<список(и)_словарей>] [опции]

В качестве словаря можно воспользоваться этим. Это словарь возможных адресов страниц, через которые может осуществляться вход в панель управления. Он собран из нескольких источников: список из jSQL Injection, а также из программы DW Admin and Login Finder v1.1.

Команда для скачивания словаря прямо из консоли:

wget https://kali.tools/files/admin_pages/Admin_and_Login_Finder_jsql-injection.txt

Рекомендуется использовать опцию -a <строка_агента> — с помощью неё вы можете задать ваш пользовательский USER_AGENT.

Пример команды:

dirb http://www.iso27000.ru/ Admin_and_Login_Finder_jsql-injection.txt -a 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'

Здесь:

  • dirb – исполнимый файл программы
  • http://www.iso27000.ru/  адрес для тестирования
  • Admin_and_Login_Finder_jsql-injection.txt – файл словаря
  • -a 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' – отправляемый пользовательский агент

Описание опций DIRB на странице https://kali.tools/?p=108

Gobuster

Gobuster — это инструмент для брут-форса:

  • URI (директорий и файлов) в веб-сайтах.
  • DNS субдоменов (с поддержкой подстановочных символов).

Нас интересует брут-форс (перебор) директорий и файлов.

Пример команды:

gobuster -e -u http://www.iso27000.ru/ -w Admin_and_Login_Finder_jsql-injection.txt -a 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'

Здесь


  • gobuster – исполнимый файл программы
  • -e – означает расширенный режим, печатает полные URL
  • -u http://www.iso27000.ru/ – сайт для поиска админок
  • -w Admin_and_Login_Finder_jsql-injection.txt – файл словаря
  • -a 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' – заданный вручную пользовательский агент

Описание опций и примеры использования Gobuster: https://kali.tools/?p=2850

Cangibrina

Cangibrina — это мультиплатформенный инструмент, который предназначен для получения панелей управления (администрирования) сайтов используя брут-форс (перебор) по словарю, google, nmap и robots.txt.

Программа имеет встроенную опцию для работы через Tor. Также важно то, что с помощью опции —user-agent вы можете изменить пользовательский агент (user-agent) – имя, которым программа сканирования представляется веб-сайту. Рассматриваемые в этой заметке программы могут иметь проблемы со сканированием, если сайт находится за файловым менеджером. Притвориться другой программой, обычно браузером, это очень полезная функция.

Ещё программа умеет делать поиск по субдоменам. Чтобы вместо поиска по директориям программа начала искать админки в субдоменах, используйте опцию —sub-domain.

Примеры запуска программы вы найдёте на странице https://kali.tools/?p=3020.


adfind

adfind – это довольно простой поисковик панелей администрирования.

При запуске программы нужно указать адрес сайта и предполагаемый язык, на котором написан исходный код сайта (PHP, ASP и др.).

Подробности и процесс установки программы на странице https://kali.tools/?p=3027

Admin Page Finder

Admin Page Finder — это скрипт на Python, который ищет на заданном сайте возможные адреса административных интерфейсов перебирая большое количество вариантов.

Как и предыдущая, это очень простая утилита без дополнительных функций.

Установка и описание работы Admin Page Finder: https://kali.tools/?p=3034


Поиск панелей управления с patator

patator является самой гибкой, и, следовательно, и самой сложной из рассматриваемых программ.

У patator есть модуль http_fuzz, который может использоваться для брут-форса учётных данных, брут-форса адресов, субдоменов. Соответственно, им можно искать и админки. Нам нужен словарь возможных адресов админок, загрузим его:

wget https://kali.tools/files/admin_pages/Admin_and_Login_Finder_jsql-injection.txt

Пример команды patator для поиска панелей управления методом перебора по словарю:

./patator.py http_fuzz url=http://www.iso27000.ru/FILE0 0=./Admin_and_Login_Finder_jsql-injection.txt -x ignore:code=404 -x ignore,retry:code=500 header='User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'

Здесь:

  • ./patator.py – файл скрипта
  • http_fuzz – модуль для использования
  • url=http://www.iso27000.ru/FILE0 – адрес сайта, на котором ищем админки, вместо FILE0 будут подставляться значения из словаря
  • 0=./Admin_and_Login_Finder_jsql-injection.txt – путь до словаря, 0= означает, что строки из этого словаря будут подставляться вместо заполнителя, обозначенного чуть выше как FILE0, а ./Admin_and_Login_Finder_jsql-injection.txt, это название файла со списком адресов страниц, файл расположен в текущей директории
  • -x ignore:code=404 -x ignore,retry:code=500 – означает не выводить (игнорировать) результаты, если страница вернула код 404 (страница отсутствует), также не выводить записи и пробовать снова для страниц с ошибкой 500
  • header='User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' – отправлять заголовок с пользовательским агентом. Обязательно используйте эту возможность, иначе на большинстве сайтов вас ждёт неудача в сканировании на наличие админок.

Результаты сканирования:

Свой собственный скрипт для поиска админок

С учётом простоты задачи легко набросать свой собственный скрипт для этой цели.

Создайте файл fiad.sh и скопируйте в него:

#!/bin/sh

# ниже идёт название файла словаря, который должен лежать в той же папке,
# что и этот скрипт. Можете поменять на свой словарь.
dic="./Admin_and_Login_Finder_jsql-injection.txt"

echo "Ищем админки для сайта $1. Сайт должен быть указан с протоколом (HTTP или HTTPS) и без конечного слэша, например, https://example.com)."

while read -r line
do

	t=$( curl -o /dev/null --silent --head --write-out '%{http_code}' -A 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36' "$1/$line" | grep -v '404' )
	if [ "$t" ]; then
		echo 'Найдена админка:'
		echo "$1/$line"
		echo ''
		t=''
	fi

done < $dic

В той же директории, что и скрипт, должен лежать словарь:

wget https://kali.tools/files/admin_pages/Admin_and_Login_Finder_jsql-injection.txt

Можете поменять словарь на свой собственный в строке:

dic="./Admin_and_Login_Finder_jsql-injection.txt"

Запускать так:

bash fiad.sh URL

Где вместо URL должен быть указан сайт с протоколом (HTTP или HTTPS) и без конечного слэша, например, https://example.com)."

Пример работы скрипта:

Заключение

При подготовке материала я тестировал все программы с произвольными веб-сайтами. Все программы можно разделить на те, которые позволяют устанавливать свой собственный User-Agent и те, которые не позволяют это сделать. Я обратил внимание, что у всех, кто не позволяет изменить User-Agent, возникают проблемы с большинством попробованных веб-сайтов. Судя по всему, дело в файловых файерволах, разнообразных системах предотвращения вторжений и т.п. Чуть лучший результат показала программа Cangibrina с опцией —user-agent. После этой опции нельзя указать желаемое значение, она только меняет передаваемый пользовательский агент на «chrome» — это позволяет обмануть совсем простые файловые файерволы.


Лучше всего себя показали программы DIRB, gobuster и patator. При этом в них нужно устанавливать User-Agent.

Кроме описанных инструментов, практически каждая программа для анализа веб-приложений и комплексный сканер (например, Burp Suite, zaproxy и многие другие) позволяют искать страницы по словарю. Можно применять и полный перебор (например, с помощью DirBuster) – результаты будут более полными, но процесс может занять значительно больше времени.


Рекомендуется Вам:

8 комментариев to Поиск админок (панелей управления) на сайтах

  1. тут дело тако, раз тулзы тупые, то можно их через proxy прогнать и модифицировать http заголовки. понятно, что скорее всего сам proxy скорее всего нельзя задать из-за этой же тупизны, но iptables+transparent proxy techniques рулят

    • Alexey:

      Да, в целом утилиты не очень, кроме patator, конечно. Проще не пытаться их допилить, а написать свой собственный Bash скрипт на несколько строк. Добавил раздел «Свой собственный скрипт для поиска админок». Получилось просто и довольно эффективно. Принцип работы: подставляет к указанному сайту значения из словаря, у получившихся адресов проверяет статус ответа. Статусы ответа 404 игнорируются, для всех остальных выводится адрес.

      Не будет работать на сайтах, где для ошибки «страница не найдена» не отправляется статус 404. Но для таких сайтов ни одна программа не будет работать.

      UPD: добавил ещё несколько программ.

  2. Mitai:

    а что делать если скрипт, нашел ну очеееень много ссылок на админку сайта, но ни одна из них не работает, просто редиректит на главную, чем дальше ломать сайт?

    • Alexey:

      Некоторые сайты вместо отправки кода ответа 404 (страница не найдена) отправляют код ответа 200 и показывают страницу ошибки. Или отправляют код ответа 302 и делают редерект – как в вашем случае.

      В любом случае, нужно проанализировать ответ. Для этого можно использовать curl, Burp Suite и т.п.

      Если используете curl то добавьте флаг -i, чтобы видеть заголовки протокола.

      А дальше делать перебор с patator, Burp Suite или модифицированным собственным скриптом, т.к. другие программы уже вряд ли помогут. Если есть редирект, то настроить patator игнорировать страницы с редиректом, если при любом запросе отправляется код 200, то игнорировать страницы, содержащие определённый текст (сообщение о том, что страница не существует).

      П.С.: Народ, накидайте сюда примеров «не берущихся» сайтов (не возвращающих код 404, с редиректами и т.п.) – в следующей статье покажу примеры анализа и использования различных программ, чтобы всё-таки можно было перебрать URI.

      • Mitai:

        #http://nw.opogame.com этот мучаю, браузерная игра ( хочу себе игровой валюты нарисовать )

        • Alexey:

          Этот сайт выдаёт ошибку 404, если страница не найдена – т.е. можно использовать программы из этой инструкции. Например, скачиваем словарь и patator:

          wget https://kali.tools/files/admin_pages/Admin_and_Login_Finder_jsql-injection.txt
          wget https://raw.githubusercontent.com/lanjelot/patator/master/patator.py
          chmod +x patator.py

          Запускаем patator:

          ./patator.py http_fuzz url=http://nw.opogame.com/FILE0 0=./Admin_and_Login_Finder_jsql-injection.txt -x ignore:code=404 -x ignore,retry:code=500 header='User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'

          Найдено два интересных адреса:

          Но при попытке открыть http://nw.opogame.com/admin/ всегда появляется ошибка 403 Forbidden. Можно дополнительно проверить:

          curl -s -D - http://nw.opogame.com/admin/ -o /dev/null

          Будет выведено:

          HTTP/1.1 403 Forbidden
          Server: nginx
          Date: Tue, 23 May 2017 06:32:07 GMT
          Content-Type: text/html; charset=utf-8
          Transfer-Encoding: chunked
          Connection: keep-alive
          Keep-Alive: timeout=10
          Vary: Accept-Encoding
          Expires: Sun, 19 Nov 1978 05:00:00 GMT
          Cache-Control: no-cache, must-revalidate
          X-Content-Type-Options: nosniff
          Content-Language: ru
          X-Frame-Options: SAMEORIGIN

          Выводы:

          1) скорее всего, страница администрирования расположена по адресу http://nw.opogame.com/admin/

          2) вероятно, доступ к ней разрешён только с определённых IP

          • Mitai:

            то есть все бесполезно? не удастся дойти до бд и нарисовать себе 5 мульонов золота?))

            • Alexey:

              Я бы считал вектор атаки на брут-форс учётных данных админа мало перспективным.

              Но никто не отменял другие векторы атак:

              • поиск уязвимостей;
              • социальная инженерия;
              • брут-форс других пользователей, у которых более высокие привилегии (ну или игровые ресурсы);
              • и т.д.

              Если это игра на движке, который можно скачать в Интернете, то начинать нужно со скачивания этого движка и анализа исходного кода на наличие закладок, бэкдоров и т.п. 

Добавить комментарий для Alexey Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *