
pinky - The PHP mini RAT (Remote Administration Tool)
Загрузка веб-шелла почти всегда является следующим шагом после эксплуатации веб-уязвимости, но такие сервисы, как Cloudflare, и новое поколение межсетевых экранов отлично справляются с предотвращением выполнения команд злоумышленниками на целевой системе через HTTP или HTTPS. С другой стороны, фильтрация текстового содержимого и политики разрешённых приложений могут быть легко обойдены с минимальными усилиями, и pinky — это PoC данной концепции.
Во-первых, pinky пытается определить, какая функция разрешена для выполнения системных команд; после нахождения наилучшей PHP-функции всё общение шифруется, так что даже если межсетевой экран настроен на чтение трафика, он не сможет определить, является ли активность вредоносной. Кроме того, pinky способен взаимодействовать через любой прокси. Вдобавок к этому нам необходимо отправлять базовую аутентификацию (полностью небезопасную, знаю!), чтобы предотвратить общение других с агентом pinky.
$ git clone [email protected]:davidtavarez/pinky.git
Cloning into 'pinky'...
remote: Counting objects: 223, done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 223 (delta 54), reused 72 (delta 27), pack-reused 103
Receiving objects: 100% (223/223), 385.73 KiB | 73.00 KiB/s, done.
Resolving deltas: 100% (101/101), done.
$ cd pinky
$ php pinky.php
_ _
_ __ (_)_ __ | | ___ _
| '_ \| | '_ \| |/ / | | |
| |_) | | | | | <| |_| |
| .__/|_|_| |_|_|\_\__, |
|_| |___/ v2.0
The PHP Mini RAT.
+ Author: David Tavarez
+ Twitter: @davidtavarez
+ Website: https://davidtavarez.github.io/
+[WARNING]------------------------------------------+
| DEVELOPERS ASSUME NO LIABILITY AND ARE NOT |
| RESPONSIBLE FOR ANY MISUSE OR DAMAGE CAUSED BY |
| THIS PROGRAM ¯\_(ツ)_/¯ |
+---------------------------------------------------+
[-] I need a json file containing the settings.
Сначала эксплуатируйте уязвимость, обнаруженную на целевой системе.
Теперь мы готовы сгенерировать нашего агента с помощью встроенного генератора вот так:

Я использую Obfuscator-Class от Pierre-Henry Soria для обфускации агента, потому что результаты получаются довольно хорошими.

После того как агент сгенерирован, его необходимо загрузить на целевую машину и вставить URL в ранее созданный JSON-файл. Если мы хотим (и должны) использовать SOCKS5-прокси, нужно добавить настройки:
{
"key":"[KEY]",
"url":"[URL]",
"login":{
"username":"[LOGIN]",
"password":"[PASSWORD]"
},
"proxy":{
"ip":"127.0.0.1",
"port":9150,
"type":"SOCKS5"
},
"cookies": "[COOKIES]"
}
Последний шаг — загрузить агента, открыть терминал и передать JSON-файл в качестве параметра.
$ php pinky.php config.json


Чтобы внести свой вклад, пожалуйста, сделайте форк этого проекта, создайте новую ветку от master и отправьте мне PR. Также вы можете помочь, добавив новые страницы в Вики :)