wwwolf's PHP web shell
Я часто сталкивался с проблемами при использовании других веб-шеллов:
- Они используют новые возможности синтаксиса 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-запросе.
Более подробную информацию можно найти на [основной странице проекта][].
Этот скрипт предоставляется только для исследований в области безопасности и целей оценки.
Не используйте его ни для чего незаконного!