SVN: Полгода спустя

    В продолжение работы, которую пол-года назад проделали компания 2Товарища и Антон Исайкин, мы (aldonin и dasm32) решили провести сканирование 1000000 самых популярных сайтов современного Web-а, начиная от google.com и заканчивая wordpress.com.

    Мы использовали Perl для написания сканера. Первая его версия не использовала богатые возможности по созданию и использованию потоков. Но когда в течении 3х дней в результате было просканировано всего лишь 25% сайтов — жалкие 250000, срочно был поднят вопрос о повышении производительности :)
    После небольшой, но неоценимой помощи товарищей с perlmonks.org многопоточность была вполне задействована, и всего за день была проверена остальная часть имеющейся у нас базы.

    Результаты, конечно же, нас удивили.
    Было обнаружено около 4500(точнее — 0.43%) сайтов с вышеуказанной «уязвимостью». Процент оказался даже несколько выше, чем у 2Товарищей и Антона Исайкина. Среди них оказалось очень много крупных и популярных порталов и сервисов, имена и адреса которых мы не будем публиковать, последуя принципу авторов, обнаруживших этот аспект невнимательности многих веб-мастеров и администраторов. Также за время сканирование на наш сервер было прислано всего одно гневное письмо от одного немецкого сайта, в котором, кстати, было написано, что мы «нагружаем» их веб-сервер :)). Одним жалким запросом. Ну да ладно.

    Несмотря на то, что в наше время доступ во всемирную компьютерную сеть уже присутствует почти в каждом доме, и новости ИТ-сообщества давно стали интернациональными, наши зарубежные коллеги похоже так и не узнали об опасности, которая может позволить даже простому пользователю получить в свои руки святая святых — работающие механизмы чужих веб-проектов, больших и маленьких. Нас порядком удивила такая безалаберность, которая оказалась присуща даже опытным и «закалённым в боях» создателям веб-сервисов.

    Вполне понятно, что например для большинства российских сотрудников ИТ-индустрии чтение информации на иностранном языке — не такая уж и проблема, особенно при наличии множества компьютеризованных словарей, но даже далеко не все из них были готовы к такого рода «проверке» — при сканировании было обнаружено примерно 80 крупных проектов в зоне .ru с открытым «дверями» для получения исходников.

    Статистика
    Самой популярной зоной с открытыми любопытному взору SVN-ами, как и ожидалось, окажется зона .com, насчитывающая добрую половину уязвимых сайтов. Распределение сайтов по географическим доменным зонам можно увидеть в этой диграмме.



    Так же был проведен анализ по рейтингу PR (PageRank — ссылочное ранжирование от небезызвестного Google).



    И как позже выяснилось, по версии McAfee SiteAdvisor, из 4373 сайтов примерно на 43х были обнаружены вредоносные скрипты.

    Немного о самой «уязвимости»
    Используя специально составленный запрос в браузере, мы можем получить своеобразный список файлов проекта, а также их владельцев и время последнего изменения, а также и сами исходные коды страниц сайта.



    Хотя это выходит не всегда :)



    Как может воспользоваться полученной информацией злоумышленник — известно только ему.
    Возможно, он просто возьмет список пользователей и начнет подбирать пароль к администраторской части Вашего сайта, имея логины, которые могли быть использованы Вами не раз. Может, он воспользуется доступом к исходникам, чтобы получить файлы с конфигами типа config.inc.php, в которых так любят хранить данные для соединения с сервером БД многие популярные системы управления контентом, или просто скачать весь сайт и спокойно искать в нем уязвимости уже на своём компьютере, не беспокоя Ваш сервер подозрительными запросами. А может, он воспользуется исходниками, и выставит в Сеть аналог Вашего сервиса… Да мало ли какие еще можно придумать способы использования подобной «вкусности»?

    Как же нам защититься от этого? Не будем заниматься наглым копи-пастингом, а лишь отправим обеспокоенного читателя по ссылке на пост первопроходцев.
    В нижней его части находятся необходимые рекомендации по защите.
    К Вам это не относится? Если Вы не используете SVN на своём веб-сайте — тогда действительно «да». Иначе попробуйте пройти по ссылке vash-site.ru/.svn/entries и проверьте, не «светит» ли ваш entries-файл всему миру.

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

    С уважением, aldonin и dasm32.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 36

      +4
      Пользуясь случаем, хочу извиниться перед Нигмой. Когда пол-года назад мы писали об этой ошибке, ее домена по какой-то случайности не оказалось в наших базах, поэтому мы не предупредили команду перед публикацией. Благодаря этому факту во внутренностях ее фронта покопалось много публики.
      Так как мы не сканировали ее сами, то не можем знать, что было открыто, а что нет.
        +32
        Честно говоря не пойму, за что извиняться. Вы-то ни в чём не виноваты. Это разработчики нигмы (и многих других сайтов) не осилили svn export вместо svn checkout.
          +2
          Очень дельный коммент. Я думаю, его стоит добавить в UPD в статье!
        +72
        Пользуясь случаем, хочу передать привет маме. Мама, привет! я на хабре!
        • UFO just landed and posted this here
            +2
            если ваши сурсы лежат выше корня веб-приложения, то вам нечего боятся. Чтобы проверится — посмотрите скрытую диру .git, её содержание, попробуйте открыть файлы через браузер
              +2
              На С++? Тогда это зависит от того, а присутствуют ли вообще исходники вашего проекта в document root сервера. Т.к. если уж писать на С++, то логичнее, что они там не присутствуют вообще (просто всё компилируется в один бинарник).
              +1
              Я думаю, что на эти грабли будут наступать постоянно.
              Что же касается диаграмм, то ни, к сожалению (я уверен на 90%) совпадут с распределением сайтов по доменному признаку и пейдж-ранку с общим количеством сайтов.
                +4
                Я думаю, что
                        location ~ /\. {
                            deny  all;
                        }
                


                Надо отлить в граните :)
                  –2
                  я думаю, что в граните надо отливать не это, а svn export
                    +2
                    тут дело не только в svn. По стандарту, всё что начинается с "." это скрытые файлы и не должны показываться лишний раз.
                      –2
                      по какому, извините, стандарту?
                      это просто соглашение об именовании.
                      и учтите что в альтернативных (для серверов, а не десктопов) ОС файл начинающийся на. не становится скрытым автоматически.

                      ну а вообще, для дополнительной защиты ваш совет очень полезен, но вместо того чтобы защищаться, лучше вообще не допускать такой ошибки.
                        +1
                        Да, давайте похиворим тут ещё.
                  0
                  согласен, не вижу смысла в таком графике, я думаю, что сайтов с PR6 в 100500тыщ раз больше чем сайтов с PR10, не зависимо от их уязвимостей.
                    +1
                    Гораздо информативнее было бы не просто количество, а количество в процентах от общего числа.
                  0
                  >>88 сайтов с pr9
                  а сколько всего сайтов с pr9 участвовало в опросе?
                    0
                    к сожалению мы не подсчитывали...=)
                    +1
                    С ума сойти. Не подозревал, что их столько останется.
                      0
                      Вот и мы на самом деле тоже, но как бы в этом и была цель — посмотреть, сколько же их таки осталось
                      +1
                      кстати, ребята поделились частью списком сайтов, на которых была найдена уязвимость, сравнили его с тем что у нас с первого скана — ряды пополнились. Крупные проекты, которые еще с пол года назад не юзали svn и не были найдены (часть из них проверялась руками), ныне используют его, либо же каким-то образом открыли к нему доступ.
                        +3
                        Ежики плакали и кололись, н… ну вы поняли.
                          +1
                          Все проблемы появляются от того, что на одном и том же уровне лежат фаилы приложения и статические фаилы. Допустим в дефолтном проекте на ROR вся статика лежит в public, a .svn/.git/.hg на уровень выше.
                            +2
                            для svn ваше заявление не верно =)
                              +1
                              все потому, что эти умники не осилили ман до конца. для эти целей(деплой) есть svn export
                                +1
                                «Пока гром не грянет, мужик не перекрестится»…
                                –1
                                .svn, извините за грубость, срет своими файлами во все директории проекта. Может разве что, кроме тех, которые в svn:ignore добавленны, но не уверен.
                                0
                                Хе… Я на Python еще в прошлый раз написал сканер и в юзерагенте бота вставил ссылку на соответствующую статью в своем блоге… Довольно много народу потом туда пришло…

                                Да! и накачал исходников сайтов больше 35Гб (сканил Ru и COM, но не смог все обойти). Правда на половине сайтов даже скрипты с ".php.svn-base" расширениями интерпретировались php и скачать не получилось
                                  0
                                  А что сделали с исходниками? Засолили? :)
                                    0
                                    Ну, фактически да.
                                    Немного порылся в наиболее интересных, поискал на предмет наличия конфигов БД…

                                    Был довольно крупный адалт — сайт с паролем к админке вписанном прям в исходниках… К одной MySQL БД удалось подключиться… Но все исключительно в академических целях))
                                      +1
                                      >> Но все исключительно в академических целях))
                                      Знакомые академики попросили?
                                  –1
                                  А попросить ваш сервис сходить по какому-либо адресу с целью проверки можно? ;-)
                                    +1
                                    дык самому можно =)
                                    там же в статье написано
                                    > попробуйте пройти по ссылке vash-site.ru/.svn/entries и проверьте, не «светит» ли ваш entries-файл всему миру.
                                      –1
                                      Дык…

                                      «404: Запрашиваемая вами страница не найдена
                                      Если вы не можете найти необходимую информацию, пожалуйста, воспользуйтесь поиском.»

                                      я наверное тупой, да? :)
                                        0
                                        неее… значит всё ок. если бы по адресу vash-site.ru/.svn/entries была бы видна инфа соответствующая… т.е. контент файлика entries, то это плохо. Вобщем посмотри у себя на тачке файлик /.svn/entries (папочка .svn скрытая всегда) в любой директории которая под свн контролом, посмотри что в нём. Вот если чтото подобное видно из браузера, то можно достать много чего интересного с такого сервера =)
                                    0
                                    дайте пожалуйста линк на perlmonks насчет многопоточности. thx
                                      0
                                      www.perlmonks.org/?node_id=821680
                                      Толково разъяснили насчет безопасного общего доступа к данным для потоков вместо того велосипеда, который я пытался сделать в начале

                                    Only users with full accounts can post comments. Log in, please.