Lompat ke konten
dokumentasi.id
Commit 89c41b0
v1
Star3,2 rb

3.1

Enumerasi Subdomain dan Deteksi Takeover

Halaman ini membahas one-liner pengambilan subdomain secara pasif dari layanan pihak ketiga, lalu pengujian takeover atas hasilnya. Semua perintah memakai placeholder HOST, yaitu satu hostname, (sub)domain, atau IP, sesuai definisi di README.md:10. Arti placeholder lain seperti HOSTS.txt dan OUT.txt dijelaskan di Placeholder dan Konvensi Penulisan One-liner.

Aliran sumber pasif ke daftar subdomain unik

Sejumlah bagian README mengambil nama subdomain dari sumber pasif yang berbeda. Hampir semuanya menutup pipeline dengan sort -u, jadi satu sumber sudah menghasilkan daftar unik. Penggabungan antar sumber tidak dilakukan oleh satu perintah pun di halaman ini; pekerjaan itu pindah ke langkah pengujian takeover yang membaca berkas hasil.

graph LR
  RD["RapidDNS.io"] --> D["sort -u"]
  BO["BufferOver FDNS_A / TLS"] --> D
  VT["VirusTotal"] --> D
  CRTS["crt.sh name_value"] --> D
  JLDC["JLDC anubis"] --> D
  SONAR["sonar.omnisint.io"] --> D
  CS["CertSpotter"] --> D
  AR["web.archive.org cdx"] --> D
  D --> LIST["FILE / HOSTS.txt"]
  LIST --> SJ["subjack -w FILE -ssl"]
  SJ --> OUT["takeover"]
  style D fill:#8b5cf6,color:#fff
  style LIST fill:#336791,color:#fff
  style CRTS fill:#f59e0b,color:#000
  style SJ fill:#8b5cf6,color:#fff
  style OUT fill:#2d7d46,color:#fff
%% fig: Sumber pasif ke daftar subdomain unik lalu pengujian takeover
%% desc: Sembilan sumber pasif mengalir ke dedup sort -u, hasilnya menjadi berkas masukan subjack, dan temuannya ditulis ke berkas takeover.
Fig. 1: Sumber pasif ke daftar subdomain unik lalu pengujian takeoverSembilan sumber pasif mengalir ke dedup sort -u, hasilnya menjadi berkas masukan subjack, dan temuannya ditulis ke berkas takeover.

Tabel berikut merangkum sumber, endpoint, dan cara penyaringan tiap one-liner sebelum dedup.

Bagian READMEEndpointPenyaringan sebelum dedupRujukan
Get Subdomains from RapidDNS.iorapiddns.io/subdomain/$host?full=1#resultambil baris <td> yang memuat $host, lalu grep -oP '(?<=<td>)[^<]+'README.md:114-119
Get Subdomains from BufferOver.rundns.bufferover.run/dns?q=.HOST.comjq -r .FDNS_A[] lalu cut -d',' -f2README.md:121-126
Get Subdomains from BufferOver.run (varian TLS)tls.bufferover.run/dns?q=$domainjq -r .Results'[]', rev, cut -d ',' -f1, rev, lalu grep "\.$domain"README.md:128-131
Get Subdomains from Riddler.ioriddler.io/search/exportcsv?q=pld:HOSTgrep -Po pola (([\w.-]*)\.([\w]*)\.([A-z]))\w+README.md:133-138
Get Subdomains from VirusTotalvirustotal.com/ui/domains/HOST/subdomains?limit=40grep -Po pola yang sama, lalu sort -uREADME.md:140-145
Get Subdomain with cyberxploresubbuster.cyberxplore.com/api/find?domain=HOSTgrep -Po saja, tanpa sort -uREADME.md:147-152
Get Subdomains from CertSpottercertspotter.com/api/v1/issuances?...&expand=dns_namesjq .[].dns_names lalu grep -PoREADME.md:154-159
Get Subdomains from Archiveweb.archive.org/cdx/search/cdx?url=*.HOST/*sed -e 's_https*://__' lalu sed untuk memotong pathREADME.md:161-166
Get Subdomains from JLDCjldc.me/anubis/subdomains/HOSTgrep -Po lalu sort -uREADME.md:168-173
Get Subdomains from securitytrailssecuritytrails.com/list/apex_domain/HOSTgrep -Po lalu grep ".HOST"README.md:175-180
Get Subdomains With sonar.omnisint.iosonar.omnisint.io/subdomains/HOSTgrep -oE "[a-zA-Z0-9._-]+\.HOST"README.md:189-194
Get Subdomains With synapsint.comsynapsint.com/report.php (POST name=https%3A%2F%2FHOST)grep -oE pola yang samaREADME.md:196-201
Get Subdomains from crt.shcrt.sh/?q=%25.HOST&output=jsonjq -r '.[].name_value' lalu sed 's/\*\.//g'README.md:203-208
Sort & Tested Domains from Recon.devrecon.dev/api/search?key=apikey&domain=HOSTjq -r '.[].rawDomains[]', sed 's/ //g', lalu httpx -silentREADME.md:210-215

crt.sh: membuang entri wildcard

crt.sh mengembalikan satu name_value per sertifikat, dan entri wildcard seperti *.domain.tld ikut terbawa. Karena itu pipeline menambahkan sed 's/\*\.//g' untuk menghapus prefiks *. sebelum sort -u (README.md:203-208). Tanpa langkah ini, nama wildcard dan nama apex-nya menjadi dua entri berbeda di daftar.

Dua endpoint BufferOver yang berbeda bentuk

Varian dns membaca kunci FDNS_A; setiap elemen berbentuk pasangan ip,host, sehingga cut -d',' -f2 mengambil nama host-nya (README.md:121-126). Varian tls membaca .Results, membalik string dengan rev, memotong cut -d ',' -f1, membalik lagi dengan rev, lalu menjaga hanya nama di bawah domain target lewat grep "\.$domain" (README.md:128-131). Keduanya bergantung pada jq.

⚠️ Varian dns menulis query literal .HOST.com; ganti seluruh string itu, bukan hanya token HOST, bila domain target bukan berakhiran .com.

RapidDNS dan cyberxplore: markup dan dedup manual

RapidDNS tidak memakai API JSON. Perintah mengambil halaman ?full=1#result lalu menyaring baris tabel <td> yang memuat $host (README.md:114-119); perubahan struktur HTML akan mengosongkan hasil. cyberxplore hanya memakai grep -Po tanpa sort -u, sehingga duplikat masih muncul dan perlu dirapikan sendiri (README.md:147-152).

Deteksi takeover dengan subjack

One-liner takeover menjalankan tiga enumerator sendiri, yaitu subfinder, assetfinder --subs-only, dan amass enum -norecursive -noalts. Ketiganya menambahkan hasil ke FILE dengan >>, lalu subjack membaca FILE dan menulis temuan ke takeover (README.md:263-268).

graph LR
  SF["subfinder -d HOST"] --> F
  AF["assetfinder --subs-only HOST"] --> F
  AM["amass enum -norecursive -noalts"] --> F
  F["FILE"] --> SJ["subjack -w FILE -t 100 -timeout 30 -ssl"]
  FP["fingerprints.json"] --> SJ
  SJ --> T["takeover"]
  style F fill:#336791,color:#fff
  style FP fill:#f59e0b,color:#000
  style SJ fill:#8b5cf6,color:#fff
  style T fill:#2d7d46,color:#fff
%% fig: Tiga enumerator mengisi FILE lalu subjack menguji takeover
%% desc: subfinder, assetfinder, dan amass menambahkan host ke FILE, subjack mencocokkannya dengan fingerprints.json, dan hasilnya masuk ke berkas takeover.
Fig. 2: Tiga enumerator mengisi FILE lalu subjack menguji takeoversubfinder, assetfinder, dan amass menambahkan host ke FILE, subjack mencocokkannya dengan fingerprints.json, dan hasilnya masuk ke berkas takeover.
OpsiNilai di one-linerPeran
-wFILEberkas daftar host yang diuji
-t100jumlah thread
-timeout30batas waktu per host
-sslaktifmengaktifkan pemeriksaan SSL pada subjack
-c$GOPATH/src/github.com/haccer/subjack/fingerprints.jsonberkas fingerprint takeover
-v3tingkat verbosity
>>takeovertujuan penulisan hasil

⚠️ Ketiga enumerator memakai >>, bukan >. Bila FILE sudah berisi hasil run sebelumnya, host lama tetap ikut diuji dan takeover menumpuk temuan dari beberapa run. Kosongkan FILE sebelum menjalankan ulang.

⚠️ Path -c mengasumsikan subjack berada di bawah $GOPATH/src/github.com/haccer/subjack. Jika $GOPATH tidak diset atau subjack dipasang dengan cara lain, path itu tidak menunjuk berkas fingerprint dan deteksi tidak berjalan.

Batas halaman ini

Bruteforce subdomain, baik lewat dns.google.com/resolve dengan parallel maupun ffuf dengan pola FUZZ.HOST, beserta penyusunan wordlist dibahas di Aset In-scope, Bruteforce, dan Wordlist README.md:182-187 dan README.md:217-222. Hasil Recon.dev yang langsung diteruskan ke httpx -silent (README.md:210-215) menyambung ke Pemetaan URL, Berkas JavaScript, dan Endpoint, sedangkan pemetaan IP dan ASN ada di IP, ASN, dan Pemindaian Port.