Пару месяцев назад нами была обнаружена уязвимость, присущая в основном
большим интернет-проектам (вроде Рамблера, Мейла, Яндекса, Оперы и пр.). Удалось
получить доступ к файловым структурам известнейших сайтов (в общей сложности
3320 сайтов) и в ряде случаев их полные исходные коды.
Казалось бы, что в XXI веке трудно найти подобную уязвимость. Кажется, что
уже всё найдено, а то что не найдено, сидит где-то очень очень глубоко.
Оказалось, что корнем сегодняшнего зла является вполне повседневная вещь.
Наверняка каждый из вас когда-нибудь имел дело с системой контроля версий SVN.
SVN является продвинутым средством для организации совместной разработки
десятков, а то и сотен разработчиков. В силу особенностей архитектуры, SVN
хранит в каждой директории проекта свои метафайлы, аккуратно сложенные в скрытую
директорию .svn. В одном из файлов под названием entries находится список всех
файлов и директорий, расположенных в той же папке, что и .svn. Так же там
находится информация о расположении репозитория, размере файлов, даты их
изменения и логины пользователей, работающих над проектом. Уже не плохо, правда?
Объясню, получается, если проект разрабатывается с помощью SVN, то заглянув по
адресу draftcopy.ru/.svn/entries мы увидим файловую структуру корня проекта с
авторами, последними изменениями, ссылкой на основную ветку репозитория и т.п.
Но можно пойти и далее. В той же папке .svn находится директори text-base, в
которой лежат последние версии всех файлов, находящихся в репозитории. Картину
дополняет так же и то, что файлы имеют не стандартное расширение (например .php),
которое позволяет их сразу отправить на интерпретатор, а дополнительное
расширение .svn-base, благодаря которому файл отдается запросившему его человеку
«как есть», т.е. голый исходный код!
draftcopy.ru/.svn/text-base/index.php.svn-base
Стоит заметить, что описанная картина является идеальной и хоть она и была
таковой в большинстве случаев, все же большой процент исходных кодов не удалось
получить по тем или иным причинам.
Впервые осознав, что обнаруженная уязвимость присуща большинству проектов
последние девять лет, было решено полностью просканировать рунет чтобы
посмотреть чем живут интернет-проекты и получить интересную статистику. Но перед
историей о том как это было, следует рассказать седым админам, как защищаться от
подобного…