🌐
Subdomain izlash
Yashirin subdomain topish
1
Maqsad
yashirin subdomen va xizmatlarni topishKo'pincha dev, staging, api, mail kabi subdomenlar faol bo'ladi va himoyasi zaif. Ularni topish — pentestning birinchi bosqichi.
2
Tushuntirish
manbalar| Manba | Qo'lda | Avtomatik |
|---|---|---|
| Certificate Transparency | crt.sh sayti | certspotter |
| DNS bruteforce | dig + so'zlar | subfinder, puredns |
| Arxiv (Wayback) | web.archive.org | — |
| JS fayllar | grep api. | LinkFinder, gospider |
| robots.txt | Disallow ro'yxati | — |
| DNS TXT/SPF | dig TXT | — |
3
Qanday aniqlanadi
# 1) Certificate Transparency (eng foydali, ochiq) curl -s "https://crt.sh/?q=%25.site.uz&output=json" | jq -r '.[].name_value' | sort -u # 2) robots.txt va sitemap curl -s https://site.uz/robots.txt | grep -i disallow curl -s https://site.uz/sitemap.xml | grep -oE "https://[a-z0-9.-]+" | sort -u # 3) JS fayllarida subdomen curl -s https://site.uz/ | grep -oE "https?://[a-z0-9.-]+\.uz" | sort -u grep -rEo "https?://[a-z0-9.-]+\.uz" src/ 2>/dev/null | sort -u
4
Buyruqlar
qulay usul# 1) subfinder — barcha manbalardan (TEZKOR) subfinder -d site.uz -silent -o subs.txt wc -l subs.txt # 2) crt.sh orqali (qo'shimcha) curl -s "https://crt.sh/?q=%25.site.uz&output=json" | jq -r '.[].name_value' | sort -u > crt.txt cat subs.txt crt.txt | sort -u > all.txt # 3) bruteforce — katta ro'yxat bilan puredns bruteforce all.txt -r resolvers.txt -d site.uz --write all-resolved.txt # yoki klassik: for S in $(cat /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt); do dig +short "$S.site.uz" | grep -q . && echo "$S.site.uz" done > found.txt wc -l found.txt # 4) amass (kengroq manbalar) amass enum -d site.uz -o amass.txt -w amass enum -active -d site.uz -o amass-active.txt # 5) Wordlist bilan dnsx (tez, ko'p so'rov) dnsx -d site.uz -w biglist.txt -silent -o dnsx.txt -t 100 # 6) JS dan linklarni chiqarish cat /tmp/urls.txt | gospider -S /tmp/js/ --js -d 2 --sitemap # 7) topshilganlarni tekshirish while read S; do C=$(curl -s -m 5 -o /dev/null -w "%{http_code}" "https://$S") [ "$C" != "000" ] && printf " %-32s %s\n" "$S" "$C" done < all-resolved.txt | sort -k2
REM subfinder (Windows binary) subfinder.exe -d site.uz -silent -o subs.txt REM crt.sh (PowerShell) $r = Invoke-RestMethod "https://crt.sh/?q=%25.site.uz&output=json" $r | ForEach-Object {{ $_.name_value -split "`n" }} | Sort-Object -Unique REM Resolve-DnsName (bruteforce) $list = Get-Content biglist.txt foreach ($s in $list) {{ $r = Resolve-DnsName "$s.site.uz" -ErrorAction SilentlyContinue if ($r) {{ "$s.site.uz" }} }} | Tee-Object dns-found.txt REM nmap (DNS scriptlari bilan) nmap --script dns-brute -d site.uz --script-args dns-brute.domain=site.uz REM JS dan link (PowerShell) $js = (Invoke-WebRequest https://site.uz/).Content [regex]::Matches($js, 'https?://[a-z0-9.-]+\.uz') | ForEach-Object {{ $_.Value }} | Sort-Object -Unique REM topshilganlarni tekshirish Get-Content subs.txt | ForEach-Object {{ $c = (Invoke-WebRequest "https://$_" -UseBasicParsing -ErrorAction SilentlyContinue) if ($c) {{ " $_ -> $($c.StatusCode)" }} }}
# crt.sh — brauzerda ochish https://crt.sh/?q=%25.site.uz # JS fayllarni yuklab tekshirish (brauzer konsolida) (async () => {{ const r = await fetch('/'); const html = await r.text(); const srcs = [...html.matchAll(/src="([^"]+\.js)"/g)].map(m => m[1]); const hosts = new Set(); for (const s of srcs) {{ const t = await (await fetch(s)).text(); for (const m of t.matchAll(/https?:\/\/[a-z0-9.-]+\.uz/g)) hosts.add(m[0]); }} console.log([...hosts]); }})(); # Wayback Machine (arxividan) // https://web.archive.org/cdx/search/cdx?url=*.site.uz/*&output=json&limit=200
5
Natija
✓ MUvaffaqiyat — hujum ISHLADI
| Server javobi | Nima degani |
|---|---|
`dev.site.uz` → 200 | **Ochiq dev muhiti topildi** |
`staging.site.uz` → 200 (boshqa interfeys) | **Test muhiti sizib chiqdi** |
`api.site.uz` → ochiq endpoint | **API hujumga ochiq** |
`admin.site.uz` → 200 | **Boshqaruv paneli topildi** |
`old.site.uz` → eski versiya (boshqa tuzilma) | **Eski zaifliklar qoldi** |
✗ Rad etish — hujum ISHLAMADI
| Server javobi | Nima degani |
|---|---|
Faqat `www` va `site.uz` topildi | **Yaxshi** |
Wildcard yo'q (tasodifiy nom ishlamadi) | **To'g'ri** |
Dev muhit autentifikatsiya bilan | **Yaxshi qilingan** |
6
Zararni yopish
1. Dev/Staging ni yopish
// IP allowlist yoki to'liq o'chirish allow 1.2.3.4; deny all; # nginx // yoki zamonaviy himoya: auth_basic "Internal"; auth_basic_user_file /etc/nginx/.htpasswd;
2. Hamma subdomenlarni ko'rib chiqing
// har birini tekshiring:
- pochta (mx, webmail) → SPF/DKIM/DMARC
- api → autentifikatsiya, rate limit
- dev/staging → yo'q yoki himoyalangan
- eski subdomainlar → o'chirish
3. Monitoring
subfinder -d site.uz -silent > /dev/null 2>&1 # haftalik # yangi subdomen chiqsa → alert
4. Wildcard
# * CNAME bilan ochiq → izohlash qiyin, takeover xavfi # yoki: wildcard → HTTP redirect → subdomain oshkor qilinadi
7
Tekshirish ro'yxati
- `subfinder` / `crt.sh` bilan tekshirildi
- Dev va staging o'chirilgan yoki himoyalangan
- Har bir subdomenning vazifasi tushunarli
- Pochta uchun SPF/DKIM/DMARC bor
- Wildcard yo'q
- Yangi subdomen chiqishida alert bor