Всем привет! В этой публикации я хочу поделиться с вами информацией о проекте российских разработчиков. Проект носит название Razboynik (Разбойник) и, по мнению авторов, призван стать лидером в плане использования уязвимостей PHP-скриптов. Как пишут разработчики, предыдущие версии инструмента, были, громоздкими и требовали точной настройки и плюс ко всему ее сложно, было осуществить. Разбойник был разработан, чтобы решить эти проблемы. Основные моменты: Он легко устанавливается (об этом чуть позже), быстрее работает, и имеет гораздо больше функционала. · Шифрование всех запросов · Инфицирование запросов GET, POST, Headers and Cookies · Логгирование результатов в файл · Легкость в подключении плагинов · Проксирование (в разработке) Бинарные файлы: Для разных платформ (Linux, Windows позже Mac) доступны, здесь ./bin directory. Так, что если вы не хотите формировать приложение вы можете использовать их. Для платформы Windows запустите: ./bin/razboynik.exe. Для Linux (в терминале): > (root directory) ./bin/razboynik Требования для формирования приложения это только: · Goland Зависимости: · eatbytes/razboy (Business logic and core of razboynik) · urfave/cli (Usefull utility to handle flag and parse command) · chzyer/readline (Implementation of readline to loop on command) · fatih/color (Great colors to push on terminal) · golang library (fmt, strings, buffer, etc...) Теории, я полагаю достаточно, перейдем к установке, устанавливал я на Kali Linux 2016.2 x64: > git clone https://github.com/EatBytes/razboynik > cd razboynik Убедимся, что на нашей системе установлен go. Go (часто также Golang) — компилируемый многопоточный язык программирования, разработанный компанией Google. В терминале пишем: > go version Затем необходимо создать переменную GOPATH. Если вы не создали эту переменную во время установки Go, сделайте это сейчас. GOPATH — это путь к корневой директории, где будут жить все ваши исходные коды Go. Чтобы создать эту переменную, проделаем следующее: Создадим директорию: > mkdir ~/gocode Сообщим Go, чтобы он использовал эту директорию: > export GOPATH=~/gocode Сохраним GOPATH, чтобы впоследствии эта переменная использовалась автоматически: > echo GOPATH=$GOPATH >> .bash_profile > source .bash_profile (.bash.rc) Находясь в директории /razboynik выполняем команды: > go get github.com/eatbytes/razboynik/app > go build Запустим Разбойника: > ./razboynik Теперь я предлагаю использовать его на практике, для начала взглянем на способы использования Разбойника, предложенные авторами: · Представим, что вы обнаружили уязвимость на сайте, и она позволила Вам загрузить ваш PHP скрипт, к примеру по адресу : http://{website}/uploads/script.php · Учитывая это, запускаем Разбойник следующим образом ./razboynik run -u http://{website}/uploads/script.php or ./razboynik r -u http://{website}/uploads/script.php · Если вы хотите изменить параметр, добавьте флаг -р. Например: ./razboynik r -u ... -p myParameter. По умолчанию параметр "razboynik". Параметр это имя поля, заголовка или куки (зависит от методов), отправленные на сервер. Если метод GET, razboynik просто добавит его в конец URL = ?razboynik={request}. · Если вы хотите изменить метод, добавьте флаг –m, например: ./razboynik r -u ... -m POST. По умолчанию выбран метод GET. Вы можете выбирать между : GET, POST, HEADER (вредоносный запрос будет отправлен в заголовках), COOKIE (not available for now). · Для получения расширенных настроек добавьте -h флаг. Если вы хотите конфигурировать Разбойник пошагово запустите его из консоли - ./razboynik. Источник - https://github.com/EatBytes/razboynik Попробуем использовать его на действующем сайте, уязвимом к загрузке PHP-скриптов, чтобы не сильно заморачиваться я поднял вновь Sick OS 1.1. т.к. там присутствует возможность загрузки скрипта на сайт. Затем загружаем PHP – скрипт на сервер: И находясь в директории, /razboynik, выполняем следующую команду: > ./razboynik run -u http://192.168.0.109:3128/wolfcms/public/php2-reverse-shell.php php2-reverse-shell.php – нуждается в предварительной настройке, всю информацию по Sick OS 1.1 Вывод был примерно следующим: Полагаю, сложности добавил, тот момент, что сервер находится за Squid. Далее я поднял свою связку Apache + PHP + MySQL на адресе 172.16.0.189 и загрузил несколько PHP скриптов: И пробовал, по очереди обращаться к ним используя разные методы POST, GET и т.д. Результат был везде примерно одинаковым: Вот, как это пофиксить, я не знаю… Если есть у кого-то идеи, жду в комментариях. А так, то я уверен, что инструмент неплохой, просто нужно разобраться в нем.