
единственный PHP-веб-шелл, который вам нужен.
php веб-шелл
Поскольку я облажался и забыл рассказать об использовании, вот оно.
Для работы этого шелла вам понадобятся две вещи: жертва, которая разрешает загрузку PHP-файлов (вы сами, в образовательной среде), и способ отправлять HTTP-запросы к этому веб-шеллу (клиентский скрипт — на 100% лучший способ общения с этим шеллом).
Спасибо за всю поддержку, которую оказало сообщество, это много значит для нас. Теперь о том, что будет добавлено в этот шелл, чтобы сделать его ещё более крутым.
Текущее обнаружение VT: 2/59 (самая новая версия)
Текущее обнаружение VT (обфусцированная версия): 1/59 //Это доработанная версия облегчённого дроппера. Общая длина файла чуть менее 2 КБ. Slopshell теперь корректно присваивает рандомизированный user-agent с правильным значением user-agent, то есть настоящим user-agent, например Mozilla, Opera, Chrome, Chromium и т.д.
Проблема с этим обнаружением в том, что я не нашёл жизнеспособного обходного пути для ключевого слова eval; если бы не было вызова eval, этот скрипт был бы необнаружимым.
Итак, поехали, народ. У меня было желание написать что-то на PHP, и вот результат. Этот веб-шелл имеет несколько фишек, и каждый день добавляются новые. Вам понадобится работающий сервер PostgreSQL, которым вы управляете. Как вы это реализуете, решать вам.
Debian: apt install -y postgresql php php-pear python3-pip php-readline php-curl libsodium libsodium-dev && python -m pip install proxybroker --user
Системы RHEL: dnf -y -b install postgresql-server postgresql php php-pear python3-pip php-readline php-curl libsodium libsodium-devel && python -m pip install proxybroker --user
WIN: установите MSI PHP и убедитесь, что у вас есть работающий сервер PostgreSQL, к которому вы можете подключиться.
После того как вы всё правильно настроите и убедитесь, что они работают, я рекомендую использовать команду pg_ctl для создания базы данных, или хотя бы для инициализации и запуска. После этого все запросы к БД будут работать нормально.
Вам нужно перейти в /lib/ и выполнить composer install для установки серверных зависимостей, необходимых для работы клиента. Теперь клиент работает намного быстрее, чем раньше.
Вы можете заметить, что это переработка другого бэкдора для WordPress, и как только я снова найду этот репозиторий, я обязательно отдам должное за функцию выполнения команд, которая присутствует в этих шеллах. Я не люблю воровать код и считаю, что нужно указывать авторство. Спасибо, добрый человек, вы очень помогли мне, сделав свои скрипты общедоступными.
Внося некоторые изменения, я подумал: почему бы не добавить способ, чтобы сам шелл мог прятаться от невнимательного администратора. Почистил методы выполнения кода, почистил весь скрипт. Больше не будет отображаться поддельная страница 500, так как это привлекает слишком много внимания от наблюдательного администратора (судя по моему опыту работы администратором PHP-стека на сервере). Сообщения об ошибках 500 привлекают много внимания, что означает, что шелл с большей вероятностью будет обнаружен. Однако ответ 404 гораздо реже привлекает взгляд администратора сервера. Это делает сам шелл гораздо более сложным для обнаружения и поиска, в дополнение к смене имени файла. Найти этот шелл будет сущим кошмаром. Настройка User-Agent всё ещё требуется, или нужно будет использовать уникальное значение cookie вместо значения User-Agent; это не будет установлено мной, и я позволю более опытным пользователям настраивать этот шелл по своему усмотрению. Опять же, если вы заметите какие-либо проблемы или недостатки (большинство я исправил и обновил этот шелл до PHP8 по большей части; подсказки типов я всё ещё не могу добавить по причинам обратной совместимости), пожалуйста, откройте issue и сообщите мне, что не так, и я постараюсь это исправить. Спасибо, делайте добро, боритесь со злом, получайте удовольствие.
Вот что мне удалось придумать для добавленных методов уклонения:
По мере моего роста в языке PHP, весь этот проект будет расти, и классы станут полноценными, с пространствами имён и всем остальным. Просто нужно время, чтобы привести код к более распространённым стандартам PHP-разработки. Я, вероятно, добавлю способ упаковки этого шелла как плагина WordPress, чтобы его можно было использовать также и в WordPress (полноценный плагин). Теперь клиент создаёт полноценные плагины WordPress, которые подключаются к функции init сайта WordPress. Я ещё не полностью это протестировал, поэтому, если возникнут какие-либо проблемы, пожалуйста, создайте новый issue и опишите проблему. Активатор для плагина WordPress оставлен пустым, так как я ищу способы сделать активатор безопасным/зашифрованным уникальным значением, которое невозможно воспроизвести. Пожалуйста, будьте терпеливы.
Когда вы вызываете функцию cqI, она выводит более релевантную информацию, а не... знаете, мусор.
Max file uploads: 20
Safemode: cannot set safemode.
File_Uploads: true
Upload Temp Dir: cannot set upload_tmp_dir
Maximum File upload size: 2M
Include Path: .:/usr/share/php8:/usr/share/php/PEAR:/var/www/somesite/html/public/.scache/
---------------- SLOP DEFINES ---------------------
slopMTLS: true
slopEncryption: true
slopOS: LIN
slopShell: bash
slopTor: false
slopPGP: false
.scache full path: /var/www/somesite/html/public/.scache/
Они будут цветными в зависимости от вывода: false по умолчанию красный, true по умолчанию зелёный, за небольшим исключением для slopOS и sloppyshell — они всегда зелёные.
Использование клиентского скрипта:

Обратное соединение, инициированное клиентским скриптом:

Рандомизированные лендинговые страницы:

Я как мейнтейнер никоим образом не несу ответственности за неправильное использование данного продукта. Он был опубликован для легитимных целей пентестинга/red teaming и/или в образовательных целях. Знайте применимые законы в вашей стране проживания перед использованием этого скрипта и не нарушайте закон при его использовании. Спасибо и хорошего дня.
Поскольку большинство серверов блокируют возможность для скриптов записывать в обслуживаемый каталог (как и должно быть), я по умолчанию использую полный шелл. Версия этого шелла для WordPress по-прежнему будет работать корректно, просто она подключается к функции init вместо того, чтобы быть просто шеллом, болтающимся на ветру.