7
Взлом Приватность Трюки Кодинг Админ Geek
Выйти
ВЗЛОМ
Содержание статьи
01. Захват через забытый CNAME
02. Захват доменов на внешних ссылках
03. Угоняем сессии Outlook и OneDrive
03.1 Таймлайн
04. Что теперь? Захват поддоменов в 2020 году
04.1 Тихая разведка
04.2 Ищем забытые записи
05. Выводы
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>app.company.com Application</title>
<link rel="stylesheet" href="css/application.css">
</head>
<body>
<script src="https://subdomain.3rdparty.com/script.js"></script>
...
</body>
</html>
При регистрации любого сервиса Azure (например, виртуального сервера или виртуального
хостинга) указывается имя, по которому можно потом можно обращаться напрямую либо
через CNAME. Например, веб-приложение будет доступно по адресу XYZ.azurewebsites.net,
где XYZ — имя приложения.
Для различных сервисов Azure использует набор разных доменов, они также могут немного
отличаться и иметь префикс региона размещения ресурса:
*.cloudapp.net
*.cloudapp.azure.com
*.azurewebsites.net
*.blob.core.windows.net
*.cloudapp.azure.com
*.azure-api.net
*.azurehdinsight.net
*.azureedge.net
*.azurecontainer.io
*.database.windows.net
*.azuredatalakestore.net
*.search.windows.net
*.azurecr.io
*.redis.cache.windows.net
*.azurehdinsight.net
*.servicebus.windows.net
*.visualstudio.com
Что происходит после того, как сервис перестает использоваться Microsoft и удаляется? Мы
можем зарегистрировать сервис Azure на нашей учетной записи, но с тем же именем. Таким
образом, существующая запись CNAME будет указывать уже на созданный нами сервис,
который мы можем полностью контролировать.
Как это было на практике? Собрав списки поддоменов в логах Certificate Transparency, а
также с помощью атак по словарям я нашел те из них, что ссылались на облачные сервисы
Azure. Мое внимание привлек домен migreports.eduadmin.live.com. Он указывал (CNAME) на
домен ncuprdmigreporting.cloudapp.net, но далее домен не разрешался (NXDOMAIN):
$ dig migreports.eduadmin.live.com
;; Got answer:
Но сессионные куки были защищены флагом Secure, и передаваться они будут только по
HTTPS — для доступа к ним мне нужен SSL-сертификат. Сперва это казалось проблемой,
но, поразмыслив пару минут, я беспрепятственно его получил с помощью Let’s Encrypt, с той
же виртуальной машины. Бинго!
Мне повезло: я успешно получил сертификат. Часть доменов Microsoft находится в черном
списке Let’s Encrypt и для них запросы на получение сертификата блокируются, но live.com к
таким доменам не относился.
Мне также удалось проделать такой трюк с xbox.com — и получить доступ к данным
профиля пользователя. К тому же в логах веб-сервера я наблюдал большое количество
консолей Xbox, обращавшихся к моему серверу, — не исключено, что в плохих руках они бы
могли превратиться в ботнет.
←
Ранее
<
Таймлайн
14.07.2017: я сообщил в Microsoft об уязвимости
20.07.2017: подтверждение от Microsoft
14.12.2017: проблему пофиксили
28.10.2018: выплата Bounty
Искать домены можно активно либо скрытно. Во втором случае используются данные из
публичных сервисов. Среди них:
атаки на подбор, которые могут быть весьма эффективными при использовании хороших
словарей;
атаки AXFR, которые все еще зачастую возможны благодаря небезопасным конфигурациям DNS-
серверов.
Тихая разведка
Начнем со скрытого поиска. К нашим услугам много источников: поисковые системы, API
сканеров интернета и прочие сервисы. К счастью, ручным сбором инфы заниматься вряд ли
потребуется, равно как и изобретать свои средства автоматизации.
Amass
Amass — проект консорциума OWASP, неплохо выручает при сборе информации о
поддоменах. Чтобы воспользоваться этой утилитой, достаточно написать что-то в таком
духе:
Rapid7 DNS
Предлагаю дополнить наши результаты данными из Rapid7 Forward DNS (FDNS). Это архивы
DNS-записей интернета.
Такие записи можно скачать и отфильтровать вручную, однако, учитывая, что размер
архива больше 300 Гбайт, для экономии времени и места можно применить облачный
сервис Athena, принадлежащий Amazon. Он позволяет делать SQL-запросы к данным в
хранилище Rapid7, уже размещенном на S3.
Создадим новый Сrawler в сервисе AWS Glue. В качестве источника укажем S3-хранилище
Rapid7.
s3://rapid7-opendata/fdns/any/v1/date=202002
После сохранения настроек запустим краулер вручную. Теперь мы можем выполнять поиск
по данным через SQL-запросы.
SELECT *
FROM date_202002
WHERE name LIKE '%.company.com'
SELECT *
FROM date_202002
WHERE type = 'cname'
AND value LIKE '%.github.io';
Перебор
Для атак методом перебора хорошо работают словари commonspeak2, sublazerwlst, all.txt за
авторством jhaddix.
## Сканируем с massdns
massdns -s 15000 -o J -r resolvers.txt company_commonspeak2.txt > subdomains_massdns.txt
AltDNS
Как еще можно дополнить список имен? С помощью пермутаций для найденных имен.
Воспользуемся AltDNS. На вход подадим список доменов, про которые мы уже знаем:
## Генерируем пермутации
altdns -i subdomains_ok.txt -o subdomains_altdns.txt -w words.txt
## Сканируем с massdns
massdns -s 15000 -o J -r resolvers.txt subdomains_altdns.txt > subdomains_altdns_massdns
Другие имеют тип CNAME, но не имеют итогового адреса (NXDOMAIN). Найти такие можно,
разбирая логи amass либо вот такой функцией на Python.
import dns.resolver
def lookup(domain):
result = []
try:
myresolver = dns.resolver.Resolver()
myresolver.nameservers = ['8.8.8.8','8.8.4.4']
except dns.resolver.NoAnswer:
# Получаем A-запись для последнего CNAME
try:
for rdata in myresolver.query(domain, 'A'):
result.append("[A]"+rdata.address)
except dns.resolver.NoAnswer:
result.append("NoAnswer")
return result
except dns.resolver.NXDOMAIN:
result.append("NXDOMAIN")
return result
except:
pass
return result
Известно более 30 уязвимых сервисов, которые могут быть захвачены через забытый
CNAME. Их краткое описание есть в документе «Can I take over XYZ?».
Выводы
Итого на момент написания статьи amass без особого труда нашел для нас 72 187
поддоменов microsoft.com, 50 242 поддомена для live.com и 620 — для xbox.com. Неплохо!
Практика показывает, что компании недооценивают опасность этой атаки. Перед ней могут
быть уязвимы любые клиенты облачных сервисов, будь то маленький стартап, известный
банк или крупная технологическая компания. В ходе подготовки статьи стало понятно, что
проблема все еще остается актуальной для Azure. Недавние новости это подтверждают.
Александр Сидуков
Комментарий
ОТПРАВИТЬ
Кот-призрак. Как эксплуатировать NTFS изнутри. Как устроена Обнаружены вайперы, эксплуатирующие тему
новую RCE-уязвимость в веб-сервере файловая таблица MFT в Windows COVID-19 и перезаписывающие MBR
Apache Tomcat 29.01.2020 15 hour назад
22 hour назад
Малварь LimeRAT использует старый пароль по
Арсенал пентестера. Собираем Легкий софт. Собираем коллекцию умолчанию, подходящий для файлов XLS
утилиты для детекта операционки на компактных программ для Windows 17 hour назад
удаленном хосте 21.01.2020 Баг в плагине Rank Math позволяет присвоить
4 day назад привилегии администратора любому
пользователю
Шифрование по-индийски. Grand Partition Theft. Копаемся в UEFI
19 hour назад
Взламываем Tally ERP 9: аналог 1С из и пытаемся понять, почему у нас
страны контрастов отняли BIOS Специалисты опубликовали PoC-эксплоиты для
1 week назад 20.01.2020 уязвимости SMBGhost