Я часто сталкивался с проблемами при использовании других веб-шеллов:
Они используют новые возможности синтаксиса PHP, несовместимые со старыми версиями PHP,
работающими на некоторых целях.
Они делают неверные предположения об удалённом URL, что нарушает внедрение PHP-кода или
(не)ожидаемое сервером поведение GET-параметров.
Они часто выводят только стандартный поток вывода, отбрасывая stderr.
Они плохо обрабатывают специальные символы в выводимых данных (например, <).
Они не позволяют загружать файлы или предлагают метод, не поддерживаемый/блокируемый
настройками цели.
Они требуют ручной модификации в зависимости от того, работает ли цель
на UNIX-подобной или Windows-системе.
Вот моя попытка решить эти проблемы. В отличие от некоторых других решений,
это даже не претендует на звание «полнофункционального фреймворка для
пост-эксплуатации». Его единственная цель — обеспечить стабильный и
надёжный способ получить точку опоры на цели, максимально придерживаясь
принципа KISS и оставаясь достаточно универсальным, чтобы вы могли строить
дальше то, что вам нужно, не мешая вам.
PHP web shell от WhiteWinterWolf:
Доступ может быть защищён паролем.
Совместим как с UNIX-подобными, так и с Windows-системами без каких-либо изменений.
Пытается очистить выходной буфер PHP (то есть отбросить любой «мусорный» код, уже
созданный атакуемым приложением) и принудительно завершить выполнение PHP-кода,
чтобы обеспечить максимально чистое и стабильное поведение.
Форма отправляется как POST-запрос с сохранением того же самого URL (включая
те же самые GET-параметры, ничего не добавляется и не удаляется), который использовался
для первоначального доступа к ней. , что делает её
подходящей для сложных техник внедрения кода. Кроме того, удалённый сервер может не
вести журнал POST-данных и, следовательно, не записывать фактические команды,
выполняемые на цели.
Никаких предположений не делается
Применяются разумные значения по умолчанию:
Текущая рабочая директория устанавливается в фактическую текущую рабочую
директорию. Это даёт дополнительное преимущество: легко определить тип
удалённой системы (/var/www/html против C:\Inetpub\wwwroot).
Хост источника загрузки устанавливается на ваш IP-адрес, видимый с целевого
сервера.
Вы можете свободно задавать рабочую директорию, и её значение сохраняется между командами.
При этом отображается специальное предупреждение, если настройка PHP open_basedir
может ограничить вашу возможность перемещения по серверу.
Есть два разных способа загрузки файлов на вашу цель:
Классическая форма загрузки, если настройки удалённого PHP это позволяют.
Загрузка файла с заданного хоста и URL (обычно хоста, контролируемого
атакующим). Эта функция реализует очень базовую функциональность HTTP-загрузки,
позволяющую обойти ограничение настройки PHP url_allow_fopen. Она не
обрабатывает такие сложные вещи, как HTTP-редиректы или аутентификацию, но может
обрабатывать SSL/TLS, если добавить соответствующий префикс к имени хоста
(tls://203.0.113.37).
Ссылка Clear cmd позволяет очистить поле ввода команды и установить на него фокус
в один клик. Мне это удобно для быстрого выполнения нескольких произвольных
команд на сервере, но эта функция relies on JavaScript. Если вы хотите избежать
JavaScript, вы можете удалить эту однострочную ссылку — это не повлияет
на остальную часть веб-шелла, который больше нигде не использует JavaScript.
Этот скрипт применяет настройки формы в следующем порядке:
Текущая рабочая директория.
Файлы для загрузки.
Команда для выполнения.
Это позволяет загрузить файл в заданную директорию и сразу же выполнить его
в одном HTTP-запросе.
Более подробную информацию можно найти на [основной странице проекта][].
Этот скрипт предоставляется только для исследований в области безопасности и целей оценки.
Не используйте его ни для чего незаконного!