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:101. 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.Tabel berikut merangkum sumber, endpoint, dan cara penyaringan tiap one-liner sebelum dedup.
| Bagian README | Endpoint | Penyaringan sebelum dedup | Rujukan |
|---|---|---|---|
| Get Subdomains from RapidDNS.io | rapiddns.io/subdomain/$host?full=1#result | ambil baris <td> yang memuat $host, lalu grep -oP '(?<=<td>)[^<]+' | README.md:114-1192 |
| Get Subdomains from BufferOver.run | dns.bufferover.run/dns?q=.HOST.com | jq -r .FDNS_A[] lalu cut -d',' -f2 | README.md:121-1263 |
| Get Subdomains from BufferOver.run (varian TLS) | tls.bufferover.run/dns?q=$domain | jq -r .Results'[]', rev, cut -d ',' -f1, rev, lalu grep "\.$domain" | README.md:128-1314 |
| Get Subdomains from Riddler.io | riddler.io/search/exportcsv?q=pld:HOST | grep -Po pola (([\w.-]*)\.([\w]*)\.([A-z]))\w+ | README.md:133-1385 |
| Get Subdomains from VirusTotal | virustotal.com/ui/domains/HOST/subdomains?limit=40 | grep -Po pola yang sama, lalu sort -u | README.md:140-1456 |
| Get Subdomain with cyberxplore | subbuster.cyberxplore.com/api/find?domain=HOST | grep -Po saja, tanpa sort -u | README.md:147-1527 |
| Get Subdomains from CertSpotter | certspotter.com/api/v1/issuances?...&expand=dns_names | jq .[].dns_names lalu grep -Po | README.md:154-1598 |
| Get Subdomains from Archive | web.archive.org/cdx/search/cdx?url=*.HOST/* | sed -e 's_https*://__' lalu sed untuk memotong path | README.md:161-1669 |
| Get Subdomains from JLDC | jldc.me/anubis/subdomains/HOST | grep -Po lalu sort -u | README.md:168-17310 |
| Get Subdomains from securitytrails | securitytrails.com/list/apex_domain/HOST | grep -Po lalu grep ".HOST" | README.md:175-18011 |
| Get Subdomains With sonar.omnisint.io | sonar.omnisint.io/subdomains/HOST | grep -oE "[a-zA-Z0-9._-]+\.HOST" | README.md:189-19412 |
| Get Subdomains With synapsint.com | synapsint.com/report.php (POST name=https%3A%2F%2FHOST) | grep -oE pola yang sama | README.md:196-20113 |
| Get Subdomains from crt.sh | crt.sh/?q=%25.HOST&output=json | jq -r '.[].name_value' lalu sed 's/\*\.//g' | README.md:203-20814 |
| Sort & Tested Domains from Recon.dev | recon.dev/api/search?key=apikey&domain=HOST | jq -r '.[].rawDomains[]', sed 's/ //g', lalu httpx -silent | README.md:210-21515 |
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-20814). 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-1263). 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-1314). Keduanya bergantung pada jq.
⚠️ Varian
dnsmenulis query literal.HOST.com; ganti seluruh string itu, bukan hanya tokenHOST, 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-1192); 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-1527).
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-26816).
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.| Opsi | Nilai di one-liner | Peran |
|---|---|---|
-w | FILE | berkas daftar host yang diuji |
-t | 100 | jumlah thread |
-timeout | 30 | batas waktu per host |
-ssl | aktif | mengaktifkan pemeriksaan SSL pada subjack |
-c | $GOPATH/src/github.com/haccer/subjack/fingerprints.json | berkas fingerprint takeover |
-v | 3 | tingkat verbosity |
>> | takeover | tujuan penulisan hasil |
⚠️ Ketiga enumerator memakai
>>, bukan>. BilaFILEsudah berisi hasil run sebelumnya, host lama tetap ikut diuji dantakeovermenumpuk temuan dari beberapa run. KosongkanFILEsebelum menjalankan ulang.
⚠️ Path
-cmengasumsikan subjack berada di bawah$GOPATH/src/github.com/haccer/subjack. Jika$GOPATHtidak 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-18717 dan README.md:217-22218. Hasil Recon.dev yang langsung diteruskan ke httpx -silent (README.md:210-21515) menyambung ke Pemetaan URL, Berkas JavaScript, dan Endpoint, sedangkan pemetaan IP dan ASN ada di IP, ASN, dan Pemindaian Port.