Дыра на free-lance.ru

Находка

Всё начиналось как обычно. Очередной вечер в поисках маленького проекта на 2-3 часа. Оставляю комментарий к проекту и жду ответа. Обновляю страницу, начинает тормозить интернет, нервничаю, раз 5 подряд жму F5. И что же я вижу:



Я искренне удивляюсь такой картине и обновляю страницу. Вижу что и должен — главную страницу. Решил повторить. Опять также самая ситуация. Просмотрев мельком код, решил прогуляться по include'ам, и тут обнаружил, что всё, что лежит в "/classes" отдаётся в исходных кодах без всяких дополнительных манипуляций. А вот и заветный config.php:



Саппорт

Ну поигравшись с файлам, пришло время писать саппорт проект. Описал проблему, условия возникновения. На следующий день мне ответили, поинтересовались используемым ПО и «С какой целью вы анализируете исходный код сайта?». Подробно ещё раз всё описал, приложил скриншоты. Ещё через один день поблагодарили за участие в жизни проекта и сказали, что исправят ошибку к утру. Мой гражданский долг был выполнен. Я могу спать спокойно.

Но не тут то было. На следующий день решил проверить работу саппорта. При попытке просмотра файлов из папки «classes» всё отлично — 403 ошибка. А вот index.php и все остальные файлы из корня, по-прежнему, отдаются при многократном обновлении страницы. И продолжалось это безобразие ещё примерно неделю. Вот теперь точно можно быть спокойным.

P.S. Всё это происходило в начале декабря. Публиковать не собирался, но так же как и многие получил сегодня письмо о «ежегодной смене паролей», прочел топик "Принудительная смена паролей на сайте, или забота о моей безопасности. Или free-lance.ru сломали?" и решил, что опубликовать стоит потому, что ничто не мешало увести базы.
Поделиться публикацией
Похожие публикации
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 196
  • +5
    Интересно, что это за баг, при котором отдается исходник? Может, какая-то защита не так сработала?
    • +50
      Этот баг называется «кривые руки администраторов и программистов»
      Файлы должны лежать выше корня! Тогда всё, что увидит при сбое сервера потенциальный злоумышленник:
      <?php require_once '../engine/index.php';
      
      • +12
        наверное перемудрили с защитой от DDoS, но вместо статики или заглушки отключалась интерпретация PHP и отдавался исходник.
        • 0
          Показ исходников из корня ещё можно как-то объяснить. Но вот почему файлы из classes отдавались в исходников без всяких дополнительных манипуляций — загадка.
          • +24
            Потому, наверное, что разработчики сего чуда получают не так много денег. Мне шепнули, что человеку из каталога специалистов по ИБ предлагали вчера (рассылкой, второе письмо) работать на них за 20 тыщ. О какой безопасности может идти речь с такими зарплатами.
            • +8
              В наших краях программист, который зарабатывает 20к — уважаемый человек = )
              • +5
                Что-то у Вас совсем уж дальние края.
                • +3
                  Для небольших городом (300-400к населения) это нормальная зарплата.

                  Например вот опрос на неофициальном сайте г. Нижнекамск, посетители сайта это жители города от школьников и заканчивая пенсионерами, различные слои населения (встречался с активным косятком сайта несколько раз :)
                  www.pronk.ru/content/vash-ezhemesjachnyj-dohod

                  Больше 20 000 з/п только у 14% опрошенных
                  • +3
                    Нормальный программист хоть в деревне с 10 тыс. населения может получать 1000-2000$ без особых проблем, удаленную работу никто не отменял и специалисты всегда нужны.
                    • +2
                      Это уже зависит от личности программиста :)
                      Бывают люди, которые не любят удаленную работу.
                      Бывают люди, которым не нужно зарабатывать 1-2к$ потому что их 700, которые они получают спокойно сидя в офисе в своем городе, им с лихвой хватает на все потребности и еще нормально остается на излишества типа сходить в ресторан побухать и т.д.
                      • –1
                        странные какие-то люди, если честно
                        • +2
                          Не у всех самоцель заработать больше денег.
                          Если денег хватает на все, что нужно — зачем больше? Под матрас складывать чтоли?
                          • +4
                            я абсолютно согласен, что не деньги рулят в жизни. но я просто не представляю как может хватать 20т на все. Ну ладно, ты такой аскет, можешь на фигне прожить. Но жена, дети, квартира наконец. Впрочем тем, кого кормят родители это может быть непонятно :) Вон, Перельман тоже поди нормальный :)
                            • +3
                              Об аскетизме никто не говорит. Вот смотри расклад:
                              1. Мы с женой тратим сейчас примерно 2000-3000 в неделю на еду домой (фрукты, мясо, всякие картошка и т.д.)
                              2. Я в неделю трачу примерно 1500-2000 на проезд на работу/с работы и обеды на работе, жена не работает, обеды сама себе готовит дома.
                              3. 1500 средняя квартплата
                              Ну +- еще пару тыщ бывает потратишь на что нибудь.

                              Итого 25 000 в месяц это так сказать прожиточный минимум для семьи из 2 человек в городе миллионнике, где доехать до работы стоит 150-200 рублей на такси, а обед на работе еще в 100р встревает.

                              В маленьком городе же цены еще ниже за счет: более дешевого проезда, более низких цен на обеды, там в неделю у обычного работника уходит гораздо меньше тысячи, порядка 500-700 рублей, если не меньше.

                              Итого в небольшом городе «прожиточный минимум» для 1 человека примерно 10 000, это чтобы жить без напрягов, дома всегда была еда и т.д. При з/п 20 000 у обычного человека, который живет 1, остается еще 10 000 на «не-аскетское» существование.

                              10 000 это достаточно чтобы каждый день ходить в кино (100 рублей билет + 150 рублей попкорн)

                              10 000 это достаточно чтобы 2-3 раза в неделю ходить и бухать в хорошем баре (1000 — 1500 рублей это 3-4 литра приличного темного пива + закуска (гренки и т.д.) + 1 горячее блюдо)

                              Что еще надо для не-аскетского существования? :)

                              Я если что не про себя говорю, у меня жена и ребенок на подходе, да и город не маленький, но в небольших городах знаю множество семей, которые живут на з/п 20 000 в месяц и не жалуются, если и муж и жена работают то денег вполне хватает.

                              Насчет квартиры — например нижнекамск живет за счет нижнекамскнефтихима — огромного завода, который кормит весь город. Сейчас добавляют еще 1 завод — танэко. На танэко ищут молодых специалистов, кому негде жить — выдают квартиры, которые через некоторое время переходят в собственность, или ее можно купить по ипотеке по спец условиям, например когда за тебя вносят первый взнос, или значительную его часть, а ежемесячный платеж тоже частично или полностью оплачивается работодателем, с условием естесвенно что ты довольно долго будешь у него работать.

                              В общем 20 000 в маленьком городе это довольно богатая жизнь.
                              Аскетская это 5-7 т.р., но и так люди тоже умудряются проживать.
                              • +4
                                жизнь удалась, чо :)
                                • +5
                                  «1500 квартплата» — я так понимаю, у вас собственная квартира (т.к. на арендную плату ну о-о-очень непохоже)? Причём не купленная в ипотеку?
                                  Ну так это совсем другой расклад.
                                  • 0
                                    Ну насчет квартиры как я уже говорил тут тоже есть варианты:
                                    — соципотека, если работаешь на госучерждении — там довольно низкие ежемесячные выплаты
                                    — служебная квартира — в нижнекамске например я когда последний раз интересовался они специально для молодых семей отгрохали коттеджный городок, и там выдают 1 коттедж на 2 семьи, два отдельных входа и т.д. Причем с мебелью и всем остальным. Если не семья а одинокий работник то ему просто служебную однушку. Если долго работаешь то вроде есть варианты перехода в собственность этого жилья.

                                    Можно тупо снять квартиру, ну там подороже, в небольшом городе вроде порядка 4000 это будет стоить за однокомнатную (а зачем больше если один живешь). Т.е. надо накинуть сверху еще 2.5, остается 7500 на гуляния — что ж пару раз придется обойтись без ресторана :)
                                    • 0
                                      Что то вы брешите!
                                      Какие к чорту 4тысячи в месяц?
                                      10 как минимум.
                                      Живу в Чите.
                                      • 0
                                        10 000 минимум это ипотека или съеманая квартира?

                                        Для казани 10 000 за съем квартиры это уже можно найти трехкомнатную квартиру, 8 000 это двухкомнатная в хорошем районе

                                  • +1
                                    Даже для белорусского города, с населением 400К, приведенные вами расценки слишком занижены. :) На 300$ у нас даже нормально не проживешь. Рента — 150, кварплата — 100, еда — 150, и это еще по божески… итого 400$
                                    А интернет, и пр.?

                                    500$ — прожиточный минимум даже для белорусской провинции, и я не преуменьшаю…
                                    • 0
                                      Это на одного человека. Для Минска x1.5.
                                      Для Москвы, я полагаю, хотя бы 30 тыс.
                                      • 0
                                        Речь не о москве, а о российской глубинке.

                                        Расценки вполне реальные, забыл только про интернет: надо еще тысячу накинуть на интернет и телефон
                                        • 0
                                          Просто я сам лично жил 2 года на 8 т.р. в месяц, правда у меня была своя квартира. Если бы не было нужно к этой сумме добавить 4к за съем квартиры, у меня друг за такие деньги в это же время снимал.

                                          Итого 12к вполне хватало мне на месяц когда я был студентом, в эту сумму входил и интернет, и квартаплата, и квартира, и еда и еще побухать 2-3 раза в неделю, и изредка купить какую нибудь одежку
                                          • 0
                                            Ну, прибавьте инфляцию, и получите почти 15к. Прожиточный минимум на одного _в провинции_. :) О чем я и говорил.
                                            • +1
                                              В том то и дело что жил я не в провинции а в миллионнике:)
                                • –2
                                  гы, странные люди меня заминусовали :)))
                              • 0
                                Мне всегда казалось что удаленная работа выгодна для работодателя тем, что не имеет смысла порой платить в питере кодеру 50к, если сибиряк будет делать тоже самое за 20к. Пускай и удаленно.
                                • 0
                                  Равшаны накодят за 5 000 руб
                                  • +3
                                    Зря утрируете. Удаленная работа — идеальное решение для того, чтобы люди в глубинке могли заработать немного больше чем у себя, а работодатель заплатит намного меньше, чем у себя в городе. При этом удалённик экономит время и средства для «походов» на работу, а работодатель на «содержание» рабочего места.
                          • 0
                            а в наших и 10К неплохая зарплата. Даже чуть выше средней ))
                            • 0
                              здесь речь идет о столичном офисе, как я понимаю
                            • +1
                              Не хотелось отвечать на вашу провокацию. Но всё таки напишу комментарий чтобы развеять данные слухи.
                              Мы никому вчера не предлагали у нас заниматься ИБ за «20 тыщ».

                              Я прекрасно видел из чего вы высосали данную «информацию».
                              Пруф линк на ваш же блог:
                              habrahabr.ru/blogs/infosecurity/112173/#comment_3588736

                              Человек написал, что ему приходило предложение о работе в котором было сказано, что его профиль нашли на нашем сайте.
                              Какое отношение администрация сайта имеет к данному предложению — вообще загадка.
                              Кроме того, вы ещё и от себя добавили: «что человеку из каталога специалистов по ИБ».
                              Судя по профилю, человек не занимается ИБ и вы это придумали для полноты картины.
                              А про «20 тыщ» вообще ниже написал другой человек.

                              yellowpress, мечтает о вас )
                              • 0
                                Допустим, предложение не от вас. Но даже с той формулировкой, что приведена в цитате, можно смело вас подозревать, т.к. ваше же письмо о смене паролей составлено не шибко рационально и конкретно.
                                • +1
                                  Я вам честно скажу, что если бы такое предложение было, то оно исходило бы от меня.
                                  И я бы об этом знал :) Поэтому в данном случае вы сделали выводы из воздуха.
                                  Для подтверждения моих слов достаточно запросить скриншот письма у того человека. Я совершенно точно уверен, что он разрушит все ваши подозрения.
                            • +2
                              Что-то сомнительно выглядит файл класса)).
                              • +15
                                — как на пэхе сделать клсаа?
                                — положить его в папку classes?
                                • +68
                                  А откуда у вас переписка админов free-lance.ru?
                              • +9
                                — Здрасьте, я админ. Нужен портал, суть такова…
                                — Напишу за отзыв!
                            • +8
                              По хорошему в корне сайта вообще не должно быть исполняемых скриптов. И сервер не должен поддерживать их исполнение. Тогда, даже если злоумышленник в корень эксплойт протащит, он не сможет его исполнить.

                              По крайней мере я свои проекты в таком режиме стараюсь использовать :)
                              • 0
                                А что мешает злоумышленнику «протащить» эксплоит не в корень сайта, если уж такая возможность есть?
                                Или вы имеете ввиду хранить скрипты выше docroot веб-сервера?
                                • +3
                                  Да, хранить скрипты выше docroot. Ну и держать их в R/O. А в docroot'е (и каталогах, доступных на запись) — запретить исполнение всего.
                                  • 0
                                    Раз пошла такая пьянка, спрошу и я: а чтобы отдавался index.php не из docroot мы его прописываем в .htaccess примерно, как RewriteRule ../engine/index.php так?
                                    • 0
                                      Я тупо в nginx или lighttpd указываю скрипт-обработчик. Например, так:
                                      # ...
                                      set $bors_loader /var/www/$host/bors-site/bors-loader.php;
                                      # ...
                                      fastcgi_param SCRIPT_FILENAME $bors_loader;
                                      # ...
                              • –12
                                Не всякий хостинг позволяет разместить файлы выше корня сайта. Если же позволяет — тогда да.
                                • +11
                                  у такого крупного сайта хостинг за 5 баксов?
                                  • +5
                                    вы считаете, что free-lance.ru хостится на шаред хостинге? :)
                                    • 0
                                      У меня на шаред-хостинге, кстати, есть возможность назначить корнем сайта любую директорию. Если что. )
                                      • +16
                                        cool story, bro ;)
                                        • +2
                                          Не, а вдруг кто не знал? :)
                                          • 0
                                            На самом деле, я не знаю :) Можете просвятить?
                                            К шаредхостингам всегда относишься как к некой болванке, где только html\простой php положить можно :)
                                            • +2
                                              В админке шаред-хостинга на GoDaddy, для каждого домена указывается произвольная корневая директория (может находиться на любом уровне вложенности). Собственно, всё.

                                              * просветить
                                  • +2
                                    А еще файлы должны лежать в директории, прописанной в include_path
                                    php.net/manual/en/function.set-include-path.php

                                    Тогда не надо будет использовать страшные $_SERVER['DOCUMENT_ROOT'] в каждой строчке…
                                    • +7
                                      Умнее использовать __autoload() или, еще лучше, spl_autoload_register().

                                      Вместо $_SERVER['DOCUMENT_ROOT'] использовать getenv('DOCUMENT_ROOT'). Еще лучше приучить себя к получению документ-рут через rtrim(getenv('DOCUMENT_ROOT'), '/').'/', чтобы не думать, поставил админ в хосте завершающий слэш или нет. И, конечно, вынести, в статический метод, например Config::getInstance()->getDocumentRoot.
                                      • +1
                                        А еще умнее str_replace( array('/','\\'), DIRECTORY_SEPARATOR, basename(__FILE__) );
                                        Но только для задания в include_path. Тогда не придется при require заботиться о месте нахождения файла. PHP найдет его где угодно, главное, чтобы путь был в include_path.

                                        > Умнее использовать __autoload() или, еще лучше, spl_autoload_register().
                                        тогда и тут не надо будет городить абсолютных путей. Но опять же, эти функции только на случай, когда по имени класса мы определяем путь и имя файла. Есть фреймворки, где это сделано не так. Но в целом согласен ))
                                        • +1
                                          «найдет где угодно»
                                          Да, обожаю таких как вы. Читаешь исходник сначала, а потом ищешь файл пол часа по папках если проект большой.
                                          • +3
                                            Такие как мы пользуемся IDE ;)) И компутер ищет файлы за нас ))) Советую!!! blogs.jetbrains.com/webide
                                            Экономит кучу времени и сил.
                                            • +3
                                              Ага…

                                              Значит, это после таких как вы структура include_paths — широка и безбрежна? А методы и атрибуты объектов ОченьДлинныИКрасноречивыЧтобыНеЗабытьИхНазначение?

                                              Хорошие практики и стиль в коде — они не зависят от инструмента.
                                              • 0
                                                Нет, я не говорил, что пишу в include_paths все подряд. Только то, что необходимо.
                                                • 0
                                                  [sarcasm]
                                                  Да нет же! Мы пишем всегда вот так:
                                                  class MySprCls{function sPrMThd($r,$d){$d=-$d++|$r--;return $d;}}
                                                  

                                                  Дёшево и… коротко! А главное долго изучать будут, а значит чтут!
                                                  [/sarcasm]
                                                  • 0
                                                    Верх крутости — начинать имена классов и всего остального с собственных инициалов. Я до сих пор ненавижу буквосочетание bsw.
                                              • –1
                                                В include_path лучше не пихать все подряд.
                                                Specifies a list of directories where the require(), include(), fopen(), file(), readfile() and file_get_contents() functions look for files.

                                                Просто использовать в именах классах их позицию в структуре директорий:
                                                -classes
                                                    -validator
                                                        -string
                                                            -multibyte
                                                

                                                Создавать экземпляры, а-ля, new Multibyte_String_Validator(), подключая их в автолоадере через str_replace('_', '/', $sClassName)…

                                                Холивар по поводу пространства имен просьба не начинать :-).

                                            • 0
                                              А лучше использовать фреймворк.
                                              • 0
                                                Все зависит от задач.
                                          • +1
                                            Корня ваще не должно быть ;-)
                                          • +1
                                            Скорее всего там апач на другом порту за nginx прячется, а картинки идут напрямую. Но по кривизне рук отдавали как статику вместе с картинками часть скриптов.
                                            • +2
                                              Судя по симптомам, у них несколько серверов, как round robin (или еще какая-то балансировка) подключены. На одном забыли обработку PHP врубить.
                                              Возможно только подключили его, собственно переконфигурацией и работами на движком и обусловлены тормоза были.

                                              Но искать и настраивать сбойный сервак неделю… В общем, это только втроем можно. Иначе будет скучно уже к третьему часу и все таки сервер будет донастроен.
                                              • +1
                                                Нда. Поторопился, ответ руководителя проекта не прочитал.
                                                Но мне кажется моя версия убедительней правды с Opera. :)
                                              • 0
                                                Судя по скриншотам можно предположить, что это short_tags = Off :)
                                              • +10
                                                Скорее всего был просто криво настроен веб-сервер.
                                                • +25
                                                  Был бы такой сбой ВКонтакте. (Зловещий смех) ^^
                                                  • +9
                                                    Да уж, «ежегодная смена паролей пользователей» и «профилактическое мероприятие»… Теперь они каждый год так фэйлиться будут? =)
                                                    • +12
                                                      WildZero — вы Джентльмен!
                                                      • +78
                                                        Спасибо маме и папе за воспитание.
                                                      • 0
                                                        Вот она, долгожданная статья. Сейчас сделаю на нее ссылку в своем топике.
                                                        • +27
                                                          Жаль, что об этом мы узнали от вас, а не от самой администрации, с её туманным «в целях безопасности»…
                                                          • +1
                                                            Ну пароль и логин к базе еще не позволяет увести ее содержимое. Фильтр по IP же есть. У меня он всегда стоит.

                                                            А вообще странный баг. Как буд-то какой-то модуль не успевает (многократное нажатие F5) исполнится, и поэтому исполняется действие по умолчанию — отдать содержимое файла. Кто объяснит как такое возможно?
                                                            • +1
                                                              у некоторых IP меняется при каждом подключение VPN соединения
                                                              • 0
                                                                Имеется ввиду, что к базе можно подключиться только с 127.0.0.1
                                                                • 0
                                                                  все зависит от настроек
                                                                • 0
                                                                  Не, я имел ввиду привязку пользователя базы данных к IP. Почти всегда так и есть.
                                                                  • 0
                                                                    да, чуть выше уже объяснили.
                                                              • +15
                                                                нервничаю, раз 5 подряд жму F5. И что же я вижу:


                                                                Попробовал так сделать на хабре, результат: QRATOR HTTP 503
                                                                Защита от DDoS скорее всего.

                                                                пошел лихорадочно тыкать F5 на сайтах)

                                                                • +21
                                                                  Предлагаю законодательно запретить и обязать пользователей выковырять клавишу F5 со своих клавиатур, как вредоносное средство для проведения DDoS атак =)
                                                                  • +2
                                                                    да легко, заставляйте. Все равно у меня есть Refresh =)
                                                                    • +3
                                                                      CTRL+R, не?
                                                                      • +2
                                                                        В опере дык вообще есть функция — обновлять с интервалом.
                                                                        Запустил сайт в 10 вкладках и обновляешь в каждой его раз в секунду, а сам спишь
                                                                      • +4
                                                                        Бывает. Только на минутку: «А ничего, что я когда-то туда перечислял деньги?». А код то, говнокодец, не для командной разработки. Интересно, что там глубже и как написано.
                                                                        • +1
                                                                          Очевидно, администрация была занята загребанием вечнозеленых единиц, вот и не успела за месяц дырку залатать.
                                                                          ONEGiN, а почем нынче база фрилансру? :)
                                                                          • +2
                                                                            Столько интересного вокруг может найтись, если что-то нестандартно делать. Везде нужно тестеров)


                                                                            • +57
                                                                              Давеча заметил что если ручку смесителя в ванной поставить в среднее положение (не у всех смесителях есть такое) и открыть горячую и холодную воду, то холодная будет вытеснять горячую (затрат воды нет, она просто перетекает из трубы в трубу) и при этом счетчик горячей воды крутится в обратную сторону. Даже не знаю, писать баг-репорт или нет)
                                                                              • 0
                                                                                Гы. Это шутка? Или чистая правда?
                                                                                • 0
                                                                                  Правда) Конечно может быть и наоборот, горячая вытесняет холодную, надо смотреть что б было слабенькое давление горячей)
                                                                                  • +6
                                                                                    А должны стоять клапана, перед каждым счетчиком.
                                                                                • 0
                                                                                  Счётчик горячей воды крутится в обратную сторону, но счётчик холодной — в прямую.
                                                                                  • +14
                                                                                    Это да, но холодная то дешевле в разы)
                                                                                    • +4
                                                                                      Но горячая-то дороже!
                                                                                      • +1
                                                                                        Если достаточно активно крутить горячую в минус, то можно заработать :)!
                                                                                    • +30
                                                                                      Простите меня, но ваш комментарий написан более мелким шрифтом. Что это значит? Вы гном?
                                                                                      • +1
                                                                                        Туда куда вы хотите написать баг репорт, не знают что такое баг репорт. (и не надо им знать, хе-хе)
                                                                                        • +2
                                                                                          Осторожнее! Читерство может быть причиной бана.
                                                                                          • +17
                                                                                            ONEGiN заблокирован администратором . Причина бана: использование не документированных возможностей смесителя.
                                                                                            • 0
                                                                                              Главное — счетчик в минуса не загнать.
                                                                                              • +2
                                                                                                Угу, а то еще должны останутся…
                                                                                            • +3
                                                                                              исходник смесителя можно?
                                                                                              • +1
                                                                                                он проприетарный
                                                                                              • +10
                                                                                                А потом соседка сверху (вероятно) удивлялась, почему у ней и из «холодного „и из “горячего» одинаково теплая вода идет…
                                                                                                • 0
                                                                                                  У вас не правильно сделана система водоснабжения. Скорее всего подключен водонагреватель, через который это дело и происходит.
                                                                                              • 0
                                                                                                Как вообще, сайт открывался (php интерпретировался) если некоторые модули не открывались и не интерпретировались?

                                                                                                Уму не прилажу, как так можно сделать специально.
                                                                                                • 0
                                                                                                  Так самому PHP пофиг, хоть файл *.exe через require/include подсовывай, все равно будет его интерпретировать как скрипт на PHP. А вот nginx или бэкэнд, если nginx там выступает только как прокси, при неумелом/неосторожном обращении вполне можно сконфигурировать на такое странное поведение. Другой вопрос, куда смотрели ответственные за безопасность и администрирование люди, ведь если первый прокол, с F5, я бы простил, то как можно было недоглядеть за /classes/*.php…
                                                                                                • +2
                                                                                                  Интересно, почему автолоадом не пользуются… (про код)
                                                                                                  • 0
                                                                                                    А что вы удивляетесь? Они даже deprecated short tags используют.
                                                                                                  • 0
                                                                                                    Скорее всего short_open_tags выключили, а потом исправляли <? на <?php
                                                                                                    • 0
                                                                                                      хотя какой нахер short_open_tags при многократном открытии страницы, тут видимо интерпретатор php не успевал обработать запрос.
                                                                                                      • +2
                                                                                                        С баша:

                                                                                                        9th: я хуже разработчиков не встречал
                                                                                                        9th: у них руки не то что из жопы растут, у них руки в жопу расту

                                                                                                        Описывает на 100% работу спецов фриланса :)
                                                                                                        • +13
                                                                                                          Скорее всего, если у них не один сервер, а несколько за лоад балансером, то один из них не был неправильно настроен и когда реквест шел на него, получался вот такой фейл. Остальные были ок и для других запросов отдавался правильный контент
                                                                                                      • 0
                                                                                                        Кто-нибудь может объяснить глубокий смысл массива $g_folders? :)
                                                                                                        • +6
                                                                                                          Это точка g сайта free-lance.ru. Если поменять значения этого массива, то всем пользователям будет оплачен pro на полгода.

                                                                                                          Так-то.
                                                                                                          • +1
                                                                                                            Для того чтобы понять смысл, нужно работать за еду и быть школьником :) А у них на проекте по всей видимости именно такие «спецы» и работают.
                                                                                                          • +1
                                                                                                            Ой красавцы блин :)
                                                                                                            • +1
                                                                                                              друзья, какой фриланс?
                                                                                                              вы вон посмотрите что сделали с сайтом Связнойбанк
                                                                                                              www.svyaznoybank.ru/
                                                                                                              • –1
                                                                                                                Редирект?
                                                                                                                • 0
                                                                                                                  да, там вчера вечером вообще непонятно что открывалось, я обслуживаюсь в этом банке, хотел вчера зайти в инет банк а там вот такое, боюсь чтобы данные не уперли
                                                                                                                  • 0
                                                                                                                    Когда вот такое с банком это вообще беда :o банк не надумываете сменить?)))
                                                                                                                • +2
                                                                                                                  Что с ними было? Волнует
                                                                                                                • +1
                                                                                                                  И продолжалось это безобразие ещё примерно неделю.
                                                                                                                  Отличный подход к высоконагруженному проекту! С моей бы работы мне в 5 утра позвонили, случись чего такое :)
                                                                                                                  • –2
                                                                                                                    Если есть необходимость, то мы не спим всей командой по несколько дней.

                                                                                                                    Подробнее написал тут причину такой задержки:
                                                                                                                    habrahabr.ru/blogs/infosecurity/112237/#comment_3591958
                                                                                                                    • +3
                                                                                                                      А обычно вы спите всей командой? вместе??? Йоптыть…

                                                                                                                      P.S. Просто повеселило, сорри если что.
                                                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                    • 0
                                                                                                                      Угу. Видимо, вопрос «какого хрена исходный код сайта попал к кому-то постороннему „на анализ“» их заинтересовал куда меньше.
                                                                                                                    • +5
                                                                                                                      я так и не понял, ссылка на архив с исходниками где?
                                                                                                                      • +23
                                                                                                                        Просто сайт free-lance.ru делали «первобытные» фрилансеры, за отзывы :)
                                                                                                                        • 0
                                                                                                                          Две последние вкладки на скриншоте: free-lance.ru — удален, и Database Error. Вы зачем такие вкладки держите у себя на компьютере? :)
                                                                                                                          • 0
                                                                                                                            Это я игрался с базой:)
                                                                                                                            • +2
                                                                                                                              free-lance.ru — удален

                                                                                                                              Это я игрался с базой:)

                                                                                                                              так вот, кто из предыдущего топика так и не смог авторизоваться!
                                                                                                                            • 0
                                                                                                                              Мы тут спорили в каком же виде у них хранятся пароли, может глянь — навярняка ещё пароль не сменили и доступ изве есть — узнаем хешируют они пароли или нет
                                                                                                                              • +1
                                                                                                                                обычно, самый простой тест на хранение пароля — это его восстановление. Если присылают пароль, значит не хешируют. Если предлагают сменить значит хешируют.
                                                                                                                                • 0
                                                                                                                                  Я думаю за полтара месяца они всё же сменили пароли
                                                                                                                                  • 0
                                                                                                                                    Естественно, пароли хранятся шифрованные и с солью. Поэтому при попытке восстановления пароля, вам не приходит ваш старый пароль (мы его не знаем), а приходит новый.

                                                                                                                                    При регистрации пароль отправляется на e-mail до того, как мы его зашифровали и положили в базу.
                                                                                                                                    Хорошо или плохо отправлять пароль на e-mail при регистрации — это уже другой разговор.
                                                                                                                                    • –1
                                                                                                                                      Очень-очень-очень плохо. Ломаешь мыло и всё, на руках пароли от чего только можно.
                                                                                                                                      • +1
                                                                                                                                        В целом, я согласен что лучше пароль не отправлять в открытом виде даже при регистрации. Думаю, мы поправим этот момент.

                                                                                                                                        Но:
                                                                                                                                        >Очень-очень-очень плохо. Ломаешь мыло и всё, на руках пароли от чего только можно.

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

                                                                                                                                        Итог: сильно легче вам от этого не будет.
                                                                                                                                        • –1
                                                                                                                                          Ретрив может быть ограничен, как у вас например, по телефону. А вот зная пароль, заходим в открытые двери.
                                                                                                                                  • 0
                                                                                                                                    Пароли, исходный код… Я вот после смены пароля на сайт не могу зайти, сколько бы не менял пароль на другой. Проект стоит, а саппорт кормит ответами об очистке кэша и кукис.
                                                                                                                                    В общем, epic fail.
                                                                                                                                    • 0
                                                                                                                                      Классика жанра, зашифровали, а про сравнение наверно забыли:)
                                                                                                                                    • 0
                                                                                                                                      Я хоть надеюсь, что у них пароли были зашифрованы в md5 с солью? А то у меня уже начинается мания преследования…
                                                                                                                                      • +22
                                                                                                                                        администрация фриланса была бы умнее, дала бы денег ТС как за услугу проверки безопасности сайта и получили бы неразглашение, а так зажмотили пару сотен и теперь лицом в гавно. Ежегодная смена паролей блядь.
                                                                                                                                        • 0
                                                                                                                                          Ага, а когда настанет момент использования крана по назначению, вы этот счетчик обратно намотаете, пока будет протекать холодная вода из горячего крана =)
                                                                                                                                          • 0
                                                                                                                                            Можно же больше, чем твои трубы вмещают, и тогда остальную холодную соседи пропустят
                                                                                                                                          • +1
                                                                                                                                            За такое ТС должен был бы получить денежное вознаграждение.
                                                                                                                                            • +7
                                                                                                                                              Здравствуйте.

                                                                                                                                              Данная ошибка никаким образом не связана со вчерашней сменой паролей.

                                                                                                                                              Ошибка действительно была в самом начале декабря.
                                                                                                                                              Повторялась ошибка у некоторых пользователей и только с определенной версией браузера Opera, в которой наши заголовки обрабатывались некорректно. Причем в других браузерах и версиях всё было хорошо.

                                                                                                                                              Мы подкрутили настройки сервера, поменяли все нужные пароли и круглосуточно контролировали ситуацию, чтобы никого постороннего до нашей базы данных не добралось.
                                                                                                                                              Кроме того, извне к нашей базе достучаться сложно. А если возможно, то стоит ограничение доступа по определенным IP-адресам разработчиков.

                                                                                                                                              Второй печальный момент в этой истории — низкая квалификация и плохая реакция нашего сотрудника обратной связи. К сожалению, не сразу после прихода заявки сотрудник начал бить тревогу и продолжил вести разъяснительные беседы с пользователем.
                                                                                                                                              Сотрудник был уволен.

                                                                                                                                              Итог: максимум, что можно было выжать из этой истории — полюбоваться (или ужасаться) кодом нашей системы. До базы добраться у вас не получилось бы.

                                                                                                                                              Мы приносим свои извинения ещё раз и обещаем, что ситуация не повторится в будущем.

                                                                                                                                              С уважением, Дмитрий Григорьев
                                                                                                                                              Руководитель отдела разработки Free-lance.ru
                                                                                                                                              • 0
                                                                                                                                                yes!
                                                                                                                                                • +1
                                                                                                                                                  Повторялась ошибка у некоторых пользователей и только с определенной версией браузера Opera, в которой наши заголовки обрабатывались некорректно. Причем в других браузерах и версиях всё было хорошо.

                                                                                                                                                  IE7 выдавал тоже самое.
                                                                                                                                                  • +2
                                                                                                                                                    К сожалению, у нас получилось повторить только в Opera.

                                                                                                                                                    В любом случае, причина была одна — криво настроен сервер.
                                                                                                                                                    • 0
                                                                                                                                                      А при этом была уволена какая-то девушка, которая в силу своего «незнания», пытался выяснить побольше информации для разработчиков, а не бить тревогу.
                                                                                                                                                      • +6
                                                                                                                                                        У нас есть определенные требования для всех сотрудников. Если возникает критическая ошибка, то первым делом нужно в любое время дня донести её до меня.
                                                                                                                                                        И все критические ошибки мы исправляем сразу же, бросаем все силы на это.

                                                                                                                                                        Кроме того, с заявками на ошибки у нас работают тестировщики. Которые должны быть в состоянии отличить критическую ошибку от не критической.

                                                                                                                                                        Поэтому не беспокойтесь, сгоряча никто не рубил головы.
                                                                                                                                                        • 0
                                                                                                                                                          Ребята, после взлома вашей базы пошел СПАМ, которого я в Gmail за всю свою историю пользования не встречал:
                                                                                                                                                          img-fotki.yandex.ru/get/5500/aikongroup.0/0_500d3_a98f558a_L
                                                                                                                                                          • 0
                                                                                                                                                            Никакого «взлома нашей базы» не было.
                                                                                                                                                            habrahabr.ru/blogs/infosecurity/112237/#comment_3591958

                                                                                                                                                            Причину спама нужно искать в другом месте. Скорее всего, вам приходило письмо от спам-бота, а вы приняли его за письмо от работодателя и ответили на него.
                                                                                                                                                            После этого, ваш e-mail автоматически попал в спам-лист.

                                                                                                                                                            Это очень популярная практика для того чтобы собрать актуальную спам-базу с определенного ресурса.
                                                                                                                                                            • 0
                                                                                                                                                              Писем не было, я сам забыл, что у меня есть регистрация на фри-ланс.ру, т.к. гикогда ей не пользовался. Можно объяснить только совпадением. Но вы мами то в них верите?
                                                                                                                                                    • +17
                                                                                                                                                      Очень весело )) особенно про оперу и заголовки.
                                                                                                                                                      Объясните мне, кто понял, КАК ЭТО? Веб сервер видит что это опера и забывает отдать запрос на back-end, возвращая text-plain?
                                                                                                                                                      На самом деле даже интересно. Насколько я понял подобное происходило только при обращении к файлам с расширением php. И то, через раз. Насколько я понимаю в nginx`е получается несколько правил отправки запроса на back-end, соответственно для файлов с расширением php несколько иное правило, чем для других, не статичных uri. Но даже если и так, каким образом мы получаем text-plain? Ведь даже если предположить, что back-end в данный момент занят, должна вылетать 504, запрос не должен обрабатываться без back-end`а на прямую.
                                                                                                                                                      Вероятнее всего дело в кеше фриланса. Все мы помним замечательные глюки при переходе фриланса на кеши. Быть может для основного локейшена были прописаны заголовки кеширования, которые возвращали статику в виде сгенеренных страниц без участия back-end`ов, а для локейшена обработки .php файлов эти заголовки были не дописаны?
                                                                                                                                                      • +13
                                                                                                                                                        Простите за нескромный вопрос как к руководителю разработки, вы сами верите про Оперу и определенную версию? Не, я так, чисто гипотетически…
                                                                                                                                                        • +3
                                                                                                                                                          Нет, конечно. Не всё так просто.
                                                                                                                                                          Ошибка действительно у нас повторялась только в определенной версии Opera.

                                                                                                                                                          Но как я уже сказал, причина одна — криво настроенный сервер. Видимо, я совсем корректно написал про оперу в своем первом сообщении. Извиняюсь за это.

                                                                                                                                                          Если дальше вдаваться в детали, то баг был связан с:
                                                                                                                                                          sysoev.ru/nginx/docs/http/ngx_http_core_module.html#internal
                                                                                                                                                          Директивы nginx при определенной ситуации срабатывали не так, как нам хотелось.

                                                                                                                                                          Дальше раскрыть подробности я не могу. Конфиг сервера я показать не могу.
                                                                                                                                                          Ошибка была исправлена в декабре месяце.
                                                                                                                                                          • +7
                                                                                                                                                            Деректива тут не при чём ) я делал пару файл-хостеров, не очень больших. Порядка 20-30 файл-серверов, миллионы файлов, на каждом сервере по 2/4 интерфейса в пик забиты по самые помидоры. Дериктива internal ни разу не подвела вот уже за 3 года.
                                                                                                                                                            Другое дело не верное её использование?
                                                                                                                                                            Да ладно вам, покажите часть условия, которое было написано не верно ) людям интересно.
                                                                                                                                                            • –4
                                                                                                                                                              >Другое дело не верное её использование?

                                                                                                                                                              Это верно. Поэтому я и написал «срабатывали не так, как нам хотелось».

                                                                                                                                                              >Да ладно вам, покажите часть условия, которое было написано не верно ) людям интересно.

                                                                                                                                                              К сожалению, нет такой возможности. В данный момент мы её не используем.
                                                                                                                                                              • +5
                                                                                                                                                                Тем более, если сервер сейчас настроен иначе, покажите где была потенциальная дыра. Глядишь, избавите ещё кого-нибудь от подобной проблемы.
                                                                                                                                                                • –3
                                                                                                                                                                  Как я понял он пытается объяснить что их сервер при запросе к /classes/*.php должен был возвращать 404, и использовали они для этого директиву internal.

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

                                                                                                                                                                  Потом оказалось что все-таки вина не оперы, а сервер виноват — internal не всегда срабатывала и вместо 404 отдавала 200 и исходный код.

                                                                                                                                                                  Звучит правда такое объяснение странновато, и таки непонятно в чем была ошибка. Может это баг nginxа, а может косяк программиста, а может (с учетом множественного F5) у них балансировщик отдавал часть запросов на другой сервер на котором не был настроен internal, или еще чего — не знаю.
                                                                                                                                                                  • +3
                                                                                                                                                                    ни опера, и любой другой браузер не подставляет контент в зависимости от заголовков. Т.е. даже если ты отправляешь 404, но при этом отдаёшь нормальную страницу, браузер покажет нормальную страницу. По крайней мере потому, что решит, что это код 404 страницы сайта.
                                                                                                                                                                    • +1
                                                                                                                                                                      Разве ж я спорил?

                                                                                                                                                                      Я просто пытаюсь из объяснений Дмитрия Григорьева составить какую-то логически стройную схему, а не так что «опера неверно обрабатывала заголовки, отправляемые нашим сервером» а потом «nginx неверно работал, директива internal глючит», а что за заголовки, как глючит, что вообще произошло так и не понятно.
                                                                                                                                                                      • +1
                                                                                                                                                                        Я не говорил «nginx неверно работал, директива internal глючит». Давайте не будем слова перефразировать — это всегда неприятно. Нам некого винить, кроме самих себя.

                                                                                                                                                                        habrahabr.ru/blogs/infosecurity/112237/#comment_3592122

                                                                                                                                                                        Не вижу смысла сейчас ещё раз обсуждать, что мы не правильно использовали данную директиву и какой у нас был конфиг месяц назад. В данном случае это не изменит ситуацию.

                                                                                                                                                                        У нас всё было примерно так:

                                                                                                                                                                        location ~* ^/(classes|бла-бла) {
                                                                                                                                                                        internal;
                                                                                                                                                                        }

                                                                                                                                                                        Уточнил только что у системного администратора.