Журнал "Information Security/ Информационная безопасность" #5, 2019

Во время аудита крупно- го банка через SSRF уда- лось получить доступ ко всем аккаунтам клиентов, фактически не нарушая внешний периметр банка. В Web-приложении одного из иностранных филиалов этого банка была найдена SSRF-уязвимость, через которую была просканиро- вана внутренняя сеть и выявлен список серверов баз данных MSSQL. 28 • ТЕХНОЛОГИИ Перед разработчиками стоят трудные задачи, решение которых не всегда оче- видно. Поэтому они сосредо- точены в первую очередь на поставленной задаче, а безопас- ность уже потом, когда решение будет найдено. Но так бывает не всегда. Разработчик, загру- женный большим объемом рабо- ты, может забыть уделить чему- то должное внимание и случайно что-то пропустить, а если систе- ма очень сложная – не заметить незапланированную возмож- ность использовать созданный функционал не так, как это заду- мывалось изначально. В результате возникают доста- точно интересные уязвимости, позволяющие атакующему зло- умышленнику влиять на взаи- модействие систем и серверов, стоящих "далеко" за интерфей- сом уязвимой системы и прямого доступа к которым нет. Отчасти это напоминает взлом замка отмычками, когда через замоч- ную скважину можно проводить манипуляции с элементами замка, не имея полного пред- ставления об устройстве систе- мы, но оказывая влияние на внутренние механизмы. В конеч- ном итоге это может дать доступ к части внутреннего функцио- нала системы, недоступного сна- ружи, а при дальнейшем разви- тии вектора – "открыть дверь" полностью. Лазейка для злоумышленников Суть уязвимости заключается в небезопасном применении пользовательских данных в выборе сервера или системы, к которым нужно обратиться за какой-либо информацией или ресурсами. Это может быть загрузка картинки с указанием ее ссылки в сети Интернет или некорректная организация работы с API-сервером. Для примера возьмем вариант с загрузкой аватарки на сервер по ссылке в GET-параметре. Вот как задумывалось использовать функционал изна- чально: GET /?url =http://images.com/ image.jpg. Однако если разработчики не уделили должное внимание без- опасности, то злоумышленник может указать ссылку, прово- цирующую сервер на несанк- ционированный запрос: l к серверам внутри корпора- тивной сети компании; l на системные Web-интерфей- сы самого сервера (localhost); l к файлам локальной файло- вой системы сервера; l на контролируемый злоумыш- ленником сервер; l другие менее распространен- ные варианты. А теперь пару слов о каждом пункте. Запрос к серверам внутри корпоративной сети компании В корпоративной (или иной) сети часто присутствуют разные Web-сервисы или другие служ- бы для внутреннего пользова- ния. Как правило, подобные сервисы не имеют авторизации или могут содержать конфи- денциальную информацию (например, внутренний портал о сотрудниках корпорации). SSRF-уязвимости бывают в системах с разным функциона- лом, каждый случай имеет свои особенности. В каких-то ситуа- циях можно получать ответ от внутреннего сервера и не особо влиять на содержимое запроса, а в других – полностью управ- лять соединением, вплоть до организации сессий с FTP-сер- вером или базами данных. Примеры запроса: l GET /?url =http://corp.local/; l GET /?url=http://192.168.0.33:22; l GET /?url=http://192.168.0.33:139; l GET /?url=http://192.168.0.33:3389. На практике для эксплуатации такой уязвимости пишется скрипт, который перебирает все возможные варианты внутрен- них IP-адресов и интересующих злоумышленника портов. На выходе атакующий знает рас- положение основных внутрен- них серверов и запущенные на них службы. Далее при позво- лении SSRF инициируются запросы уже к конкретной служ- бе для получения информации или подбора учетных данных. Например, во время аудита крупного банка через SSRF уда- лось получить доступ ко всем аккаунтам клиентов, фактически Где прячется SSRF-уязвимость? Кейсы и решения современном Интернете многие технологии плотно связаны друг с другом. Довольно сложно встретить серьезную информационную систему, не использующую контакт с внешним миром или не построенную на базе других решений, хотя бы частично. И это естественно. Мы с вами как пользователи систем видим только конечный интерфейс и результат работы, который он нам презентует, хотя даже за самым простым движением обычно стоит взаимодействие с другими системами, доступ к которым ограничен. Их сложность возрастает, а вместе с ней и вероятность где-то допустить ошибку при разработке. В Евгений Соболев, генеральный директор Practical Security Lab

RkJQdWJsaXNoZXIy Mzk4NzYw