Subdomain izlash

≡ Barcha darslar
Tezkor 🔎 Indeks
🌐

Subdomain izlash

Yashirin subdomain topish
Dars 34 O'rta o'z saytingizda
1

Maqsad

yashirin subdomen va xizmatlarni topish

Ko'pincha dev, staging, api, mail kabi subdomenlar faol bo'ladi va himoyasi zaif. Ularni topish — pentestning birinchi bosqichi.

2

Tushuntirish

manbalar
ManbaQo'ldaAvtomatik
Certificate Transparencycrt.sh sayticertspotter
DNS bruteforcedig + so'zlarsubfinder, puredns
Arxiv (Wayback)web.archive.org—
JS fayllargrep api.LinkFinder, gospider
robots.txtDisallow ro'yxati—
DNS TXT/SPFdig 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 javobiNima 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 javobiNima 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