Szybkie przejęcie subdomeny 2000 $
KIM JESTEM
Nazywam się Alexandar Thangavel AKA ValluvarSploit, pełnoetatowy łowca błędów i trener. Uwielbiam rekonesans. Jestem założycielem i CEO ValluvarSploit Security. W ValluvarSploit Security zapewniamy szkolenie Bug Bounty podczas indywidualnych sesji online. Aby uzyskać więcej informacji, sprawdź naszą stronę LinkedIn.
CEL
Dzisiaj podzielę się tym, jak znalazłem lukę w zabezpieczeniach Fastly związaną z przejęciem subdomeny i jak zdobyć nagrodę w wysokości pierwszych czterech cyfr. Zacznijmy.
HISTORIA
Rozpoczęło się to w niedzielę 2 października 2022 r. Dzień zaczął się jak zwykle. Obudziłem się o 6 rano, skończyłem rutynową pracę, sprawdziłem saldo danych mobilnych (pozostało 1,3 GB), włączyłem mobilny hotspot, podłączyłem laptopa i wznowiłem polowanie na prywatnym programie. Spędziłem kilka godzin nad aplikacją docelową, ale nic nie znalazłem, więc zrobiłem sobie krótką przerwę. Co najmniej raz na sześć miesięcy wracałem do moich starych prywatnych programów. Przejrzałem więc moje prywatne zaproszenia, wybrałem stary program i zacząłem wyliczać subdomeny (nazwijmy nasz cel jako redacted.com).
PRZEJĘCIE SUBDOMY
Przejęcie subdomeny ma miejsce, gdy atakujący przejmuje kontrolę nad subdomeną domeny. Dzieje się tak z powodu błędnej konfiguracji / błędów DNS.
WYLICZANIE SUBDOMENY
Zacząłem wyliczanie subdomen za pomocą narzędzi Google Dorking, OWASP Amass i Gobuster .
# Passive Subdomain Enumeration using Google Dorking
site:*.redacted.com -www -www1 -blog
site:*.*.redacted.com -product
# Passive Subdomain Enumeration using OWASP Amass
amass enum -passive -d redacted.com -config config.ini -o amass_passive_subs.txt
# Subdomain Brute force using Gobuster
gobuster dns -d redacted.com -w wordlist.txt - show-cname - no-color -o gobuster_subs.txt
# Merging subdomains into one file
cat google_subs.txt amass_passive_subs.txt gobuster_subs.txt | anew subdomains.txt
# Enumerate CNAME records
./cname.sh -l subdomains.txt -o cnames.txt
# We can use HTTPX tool as well
httpx -l subdomains.txt -cname cnames.txt
# Probe for live HTTP/HTTPS servers
httpx -l subdomains.txt -p 80,443,8080,3000 -status-code -title -o servers_details.txt
Zacząłem analizować plik cnames.txt i znalazłem jedną subdomenę, która wskazywała na dwa różne rekordy CNAME. Uruchomiłem polecenie Dig na subdomenie i otrzymałem następujące informacje,
dig next.redacted.com CNAME
DNS query for CNAME record
Zacząłem analizować plik servers_details.txt w poszukiwaniu interesujących rzeczy i znalazłem tę linię. Zwróć uwagę na kod stanu i tytuł witryny.
https://next.redacted.com [500] [246] [Fastly error: unknown domain next.redacted.com]
W większości przypadków nie możemy przejąć usługi Fastly. Na przykład poniższy przypadek,

Ale jeśli domena nie jest już zajęta przez innego klienta, możemy przejąć domenę i całkowicie przejąć subdomenę.
POTWIERDZENIE PODATNOŚCI
Poszedłem na oficjalną stronę Fastly i wykonałem poniższe kroki:
1. Założyłem konto na fastly.com używając tymczasowej poczty.
2. Zalogowałem się do mojego Fastly Dashboard i kliknąłem przycisk „Utwórz usługę dostawy”.
3. Wpisałem docelową nazwę subdomeny (next.redacted.com) i kliknąłem przycisk Dodaj.
Spodziewałem się wyświetlenia komunikatu o błędzie („domena jest już zajęta przez innego klienta”), ale komunikatu o błędzie nie było. Zostałem przekierowany na następną stronę „Strona hostów”. Byłem zaskoczony.

KROKI TWORZENIA POC
Po potwierdzeniu luki zalogowałem się na moim serwerze VPS i utworzyłem katalog o nazwie „hosting”. Następnie w katalogu „hosting” utworzono prosty plik HTML o nazwie „index.html”.
mkdir hosting
cd hosting
nano index.html
<!DOCTYPE html>
<html>
<head><title>STO PoC</title></head>
<body>
<h1>ValluvarSploit PoC</h1>
</body>
</html>
python3 -m http.server 80

Po kilku sekundach otworzyłem nowe okno przeglądarki i odwiedziłem „http://next.redacted.com/index.html” strona. Mój plik PoC został pomyślnie wyrenderowany. Napisałem szczegółowy raport i przesłałem go na HackerOne.

NAUKA POPRZEZ MONITOROWANIE LOGÓW SERWERA
Utrzymywałem działanie usługi Fastly przez 3 dni i monitorowałem logi serwera w poszukiwaniu poufnych informacji. Fajnie było oglądać inne metodologie łowców błędów.

NAGRODA
Moje zgłoszenie zostało sklasyfikowane jako luka o WYSOKIEJ wadze i nagrodzona 2000 USD w ciągu 10 dni.

KLUCZOWE NA WYNOS
1. Powróć do swoich starych celów co najmniej raz na 6 miesięcy.
2. Wyliczenie subdomeny jest kluczowe. Wyliczaj jak najwięcej subdomen.
3. Nie poddawaj się.
Dziękuję za poświęcenie czasu na przeczytanie mojego wpisu.
Obserwuj mnie na:
Świergot