Как стать автором
Обновить

Комментарии 49

Вывод всей статьи: как стартап может вылететь из индекса в одночасье — прописанные редиректы чужими руками в вашем коде =)
Не менее интересно как у вас это произошло, пару слов?
присоединяюсь, это же самое интересное… есть ли история коммитов? сервер был взломан? или инсайдер в команде?
В то время (а мы были тогда еще сравнительно начинающим проектом) конечно же было проведено расследование инцидента. Схема заражения была достаточно стандартна, через вызов кода стороннего php файла в корне сайта с определенными параметрами в query string. На момент расследования было несколько версий от взлома аккаунта на сервере до инсайдерской закладки. В конечном итоге последняя версия подтвердилась. В любом случае, эта история научила нас серьезней относиться как к вопросам безопасности и аудита, так и к внутренней дисциплине. Был проведен серьезный аудит скриптов движка, настроек сервера. Написали отдельную систему аудита, автоматизировали бекап (Bacula для скриптов и Percona для SQL)
Это не тире, а дефис.
Спасибо, поправили.
Это не дефис, а минус. На клавиатуре нет символа дефис.
"‐" это дефис
"-" это минус
"—" это тире
Минус вот: −
этот знак препинания в этой истории — самое важное, разумеется
Не умничайте. На клавиатуре нет символа минус, а вот дефис как раз-таки есть.
Проверил комментарии перед отправкой, но всё равно не успел. Извините.
На самом деле дефиса тоже нет.
Если совсем строго, то таки да, hyphen-minus. Ниже вот подсказывают.
>«Написали письмо в саппорт сервиса, сообщили об ошибке, а в ответ получили письмо, где техподдержка сообщила о том, что наш основной домен отдает 301-ый редирект для поисковых роботов на адрес комовского сайта-паразита, соответственно, роботы при заходе на основной ресурс получали сигнал о том, что данный домен является неосновным зеркалом нового сайта-клона.

Благодаря 301 редиректу «зеркальщик» яндекса благополучно склеил наш основной домен с новым паразитным доменом, и именно поэтому сайт-клон начал индексироваться и появился в результатах поисковой выдачи вместо основного ресурса. „

А можно ликбез… :(
Прошу прощения за безграмотность…

Исамый важные вопросы:
1) Как обнаружить, что есть 301 редирект?
2) Какие ЕЩЁ могут быть последствия?
3) Что нужно предпринять, чтобы 301 редиректа не было?
1. О том, что стоит 301 редирект можно понять несколькими методами:
1.1 Если в Яндекс Вебмастер сайт не добавляется, в ответ система выдает сообщение о том, что «данный сайт является неглавным зеркалом istbudget.com» — так было в нашем случае.
1.2 Различные программы парсинга сайтов, например Xenu, отказываются обрабатывать ресурс, и пишут что данный сайт отдает 301 редирект.
1.3 Есть сервисы, которые разбирают код ответа сервера, т.е. они показывают какой код ответа отдается роботам, какой браузерам (т.е. пользователям) один из них: www.cy-pr.com/tools/header/ — тут можно выбрать агента и посмотреть какой для него отдается ответ.

2. Страницы которые отдают 301 редирект — выпадают из индекса, в нашем случае 301 редирект отдавала каждая страница сайта, т.е. был организован постраничный редирект с основного домена на домен-клон, в результате основной домен выпал из индекса и начал индексироваться новый сайт, т.е. в поисковой выдаче появился новый сайт-клон вместо основного сайта. Последствия — потеря посещаемости и прибыли, если сайт — инструмент заработка.

3. Замечательный вопрос ))) Нужно убирать 301 редирект, находить и закрывать уязвимости ресурса, проводить постоянный мониторинг — страницы сайта должны отдавать код ответа сервера 200 OK
Кхм… Зайти на сайт браузером с открытым веб-тулом на вкладке network и увидеть 301/302 ответ на запрос страницы?..
Насколько я понял редирект был только для роботов:
техподдержка сообщила о том, что наш основной домен отдает 301-ый редирект для поисковых роботов на адрес комовского сайта-паразита
верно, при прямом «человеческом» заходе на домен RU редирект на клон не происходил
это и сбило с толка
В таком случае можно завести какой-нибудь Fiddler, в котором иметь запросы, имитирующие роботов. Но в общем да — если не ожидаешь, то проблему можно прощёлкать.

PS да и в браузерах тоже можно изменённые запросы слать :-)
1) curl -I site.ru
Тут в заголовках если красуется не 200 то значит что-то не так )
А вот и не 200…

[srv@16:04] ~# curl -l yandex.ru
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://www.yandex.ru/">here</a>.</p>
</body></html>

[srv@16:14] ~# curl -l google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
Всегда можно проанализировать дальнейший путь, добавив ключ -L:
Лог
arth@arth:~$ curl --head -L yandex.ru
HTTP/1.1 302 Found
Date: Tue, 24 Jun 2014 14:10:55 GMT
Location: http://www.yandex.ru/
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1
Transfer-Encoding: chunked

HTTP/1.1 200 Ok
Server: nginx
Date: Tue, 24 Jun 2014 14:10:55 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 250330
Connection: close
Cache-Control: no-cache,no-store,max-age=0,must-revalidate
Expires: Tue, 24 Jun 2014 14:10:56 GMT
Last-Modified: Tue, 24 Jun 2014 14:10:56 GMT
P3P: policyref="/w3c/p3p.xml", CP="NON DSP ADM DEV PSD IVDo OUR IND STP PHY PRE NAV UNI"
Set-Cookie: yandexuid=9082494791403619056; Expires=Fri, 21-Jun-2024 14:10:55 GMT; Domain=.yandex.ru; Path=/
X-Frame-Options: DENY
X-XRDS-Location: http://openid.yandex.ru/server_xrds/

arth@arth:~$ curl --head -L google.com
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.ru/?gfe_rd=cr&ei=-IepU8HjFYvGYKrkgLAP
Content-Length: 256
Date: Tue, 24 Jun 2014 14:15:20 GMT
Server: GFE/2.0
Alternate-Protocol: 80:quic

HTTP/1.1 200 OK
Date: Tue, 24 Jun 2014 14:15:20 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=windows-1251
Set-Cookie: PREF=ID=d8dc3a068fefdb9b:FF=0:NW=1:TM=1403619320:LM=1403619320:S=rjIi5DC9YagrMH5R; expires=Thu, 23-Jun-2016 14:15:20 GMT; path=/; domain=.google.ru
Set-Cookie: NID=67=MnQP1pfgfrCPxew-Pi2H5QNmmK6md6tuZ8D2ZDFqtt7wmsRNLpqxL9cSqyx4qbuELezmF2qMqmYOX6Yy7RWQoHMA8IdpOwhG1eT5rW4i3sRJyZYUU13sMkzy_2-VjQlw; expires=Wed, 24-Dec-2014 14:15:20 GMT; path=/; domain=.google.ru; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic
Transfer-Encoding: chunked

Так все правильно. У них основые домены с www, а при обращении к адресу без www происходит редирект.
Важное уточнение, которого не было сначала в Вашем комментарии ;)
наш основной домен отдает 301-ый редирект… К слову, паразитный код нашелся довольно легко по вызову eval(base64_encode()).
Сколько времени боролись, и не проверяли сайт на вирусы, не сравнили исходники с репозиторием??
Итак, наш основной ресурс находится по адресу: www.ist-budget.ru: там есть своя постоянная аудитория, массив проиндексированных страниц, например, справочник организаций: www.ist-budget.ru/customers.php и www.ist-budget.ru/customers.php, где в общей сложности содержится более 5 млн. страниц; разный интерактив, перспектива развития и прочее.

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

Кстати, взываю к появлению домена первого уровня .DEBUG
по моему есть домен .dev
Спасибо!) Тот самый момент, когда комментарий полезнее статьи!
С таким же успехом можно сделать DEBUG третьим уровнем. Это можно сделать уже сейчас и бесплатно (без СМС).
Можно нарваться на протечку кукисов между своими субдоменами.
Дочитал, конечно.
Тем не менее, автор пишет
мы пригляделись и обнаружили, что в названии «песочницы» отсутствует знак тире, т.е. вместо адреса www.ist-budget.com был адрес www.istbudget.com, удивительно, что раньше мы на эту вещь внимания не обратили.


Раннее обнаружение — залог раннего исправления, не?

Опять же, промах маркетологов: сделать привлекательный для пользователя домен .com — но с запретом на вход.
Человек туда лезет, обламывается и исправляет ошибку в урле. А какие два способа исправления наиболее вероятны? Правильно: или выбрать один из наиболее популярных доменов первого уровня (для рунета это, очевидно, .ru и .com), или поиграть с пунктуацией — т.е. убрать дефис.
Просто подарок для фишинга, я считаю.
>К слову, паразитный код нашелся довольно легко по вызову eval(base64_encode()).
Вы наверное шутите, а почему не через
$ git diff

?
Потому что у них стояла другая система контроля версий — «ftp ой чего бы не пропустить»
Вы таки не поверите, но раз в несколько месяцев тут проскакивают посты из разряда «я словил неводомую хрень, потом мы две недели на баше писали скрипт который ищет во всех файлах и директориях eval(strange$$3somelongbullshit84675string)»
И обычно в комментах тусуется подбадривающая толпа «а еще надо искать strange_function_call_with_strange_behavor()»
Вроде бы xdebug-ом люди пользоваться научились, но почему не внедрить нормальный процесс разработки?
фейспалм.жпег
Наверно все же base64_decode, либо взломщики умалишенные :)
Решил посмотреть, чем вообще занимается компания, кликнул про первому из проспамленных линков. Ну и суровый же у вас «стартап»! Чуть менее чем сам оффсайт госзакупок )))
Не откажите себе в удовольствии почитать раздел «О компании» (в котором запятые расставлялись при помощи ГПСЧ) и многие вопросы отпадут сами собой, сразу прочувствуете всю стартаповость и прущую из всех щелей инновационность. Да что там, название компании говорит само за себя — «Инновационные поисковые технологии»! Каков полет, каков размах! Это звучит гордо, громко, быдло-бизнес по-русски, что ли!.. Тысячи их. Не то что какой-то там, я извиняюсь, Гугл, кхм-кхм… Ну чтоооа это такое, чесслово, матершина какая-то, ей Б-гу! Аж стыдно вслух сказать. Говорю Гугл, ничего не понятно, объясняй потом людям, что ты не то имел ввиду. Говорю «Инновационные поисковые технологии», слышу крымнаш и сразу все понятно, ничего не надо объяснять!
В общем, я что хотел сказать, государство надо носить на руках просто, что благодаря его головотяпости деятельности появляется такой бескрайний простор для рождения инновационных стартапов по разгребанию его говна! Что бы мы без него делали? Даже не знаю… Куковали бы сидели… И даже ни капельки бы экстремизма не было, ой, в смысле экстрима, скучно как прям в европах каких-нибудь было бы, прям Тоскана зеленая, а не жисть…
Также рекомендую к ознакомлению раздел «О себе» автора топика, это поистине шедевр современной прозы! Явамговорю! «Интерес — безразличие», «радость — грусть», ужас, в смысле, волшебно!..

Чтобы далеко не ходить, наслаждайтесь.
О компании:
С 2008 года, наша компания работает в сфере государственных закупок. Наши работы в этой сфере в качестве подрядчиков проводились над созданием баз данных для лесохозяйственных регламентов, и лесных планов ряда субъектов РФ. Также велись активные работы в создании баз данных архивов БТИ некоторых субъектов РФ.
Накопленный опыт, и имеющиеся ресурсы поставили нас перед фактом, отсутствия удобного для нас инструмента анализа, и поиска информации о государственных закупках. Поэтому в 2010 году нашими программистами был создан удобный инструмент для работы с государственными закупками, он оказался настолько удачен, что было принято решение сделать его коммерческим, поэтому с 2011 года, наша система www.ist-budget.ru начала свое успешное наступление на рынок государственного заказа, и сегодня среди подобных мы определенно считаем ее самой современной, и совершенной. Выручка по этой сфере деятельности уже исчисляется 10-ками. млн., и идет постоянный прирост.
Самый популярный портал по госзакупкам в РФ, Тендеры.ру стал нашим ближайшим партнером, и выбрал наш поисковый модуль, для размещения на своей странице поиска тендеров.
Наши автоматические фильтры поиска, коррупционных тендеров использовались в проекте Народного фронта «За честные закупки»
На данный момент ведется активная работа в сфере социальных коммуникаций, идет тестирование первой версии усовершенствованного анонимного чата с расширенным функционалом:
stairschat.com/about-project


О себе:
Самое главное, что есть сказать о себе, это наверное то, что в жизни все сбалансировано, как это получилось, трудно сказать, бывают конечно временные перекосы, но все быстро возвращается к комфортному ощущению жизни. И в ней есть место, интересу и безразличию, радости и грусти, новизне и всему знакомому, но главное это всегда есть поиск. Именно он позволяет искать что-то новое и интересное, создавать и радоваться этому, терять и понимать, что это обязательная сторона жизни, и опять продолжать действовать… Результаты? Результаты конечно есть, и в разных сферах, из видимых для сети в области IT мой проект www.ist-budget.ru/, особенно приятно осознавать, что он состоялся как отдельный бизнес.
Теперь будем покорять еще одну вершину, новый социальный проект stairschat.com/about-project

мне тоже нравится форматирование, когда шрифт зачеркнутый
а в чем вообще был сакральный смысл именно так вас ломать и обходить выяснили?
Вот это и удивило, до сих пор загадка для нас.
элементарно же вроде… есть куча посетителей, им можно показывать рекламу… вполне возможно, что не вы одни такие…
Просто поразительное раздолбайство с вашей стороны ) При этом на сайте, как я понимаю, еще полно незакрытых уязвимостей. Ради интереса тыкнулся, сразу нашлась sql-injection.
Абсолютно согласен с Вами! Очень много вопросов к ТС.

— Безопасность разных компонентов настраивали?
— Анибрутфорсы какие-то были установлены и настроены?
— Почему просто не заблокировали адреса клона в фаерволле вместо танцев с бубном возле Апача?
— Почему не сыграли на опережение и не зарегистрировали незанятый скайп злоумышленника?
НЛО прилетело и опубликовало эту надпись здесь
Уважаемые хабровчане! Я от души хочу сказать спасибо хабровцам, которые помогли найти нам еще ряд уязвимостей! Вот это я понимаю, взаимовыручка и поддержка коллег. Еще раз спасибо
Какая CMS?
Самописный?
Взломали через «соседей» по серверу? Или прямо CMS?
> американский доменный регистратор CLOUDFLARE

Бросилось в глаза: CLOUDFLARE — не доменный регистратор, а CDN-сеть и, в случае с этим сайтом, DNS-хостер. Регистратор домена — SHANGHAI YOVOLE NETWORKS INC (судя по приведенным Вами данным).

Сначала они захостили DNS на Cloudflare, но не включили режим режим проксирования. После жалобы перенесли сайт к другому хостеру, включили проксирование у Cloudflare, и жили за ними как за стеной. За что CF и любят, собственно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий