5
Alur Pipeline dan Toolchain
README menyebut isinya sebagai kumpulan one-liner untuk bug bounty yang disumbangkan penulis maupun komunitas, dan hampir semuanya ditulis sebagai satu baris perintah yang siap disalin. README.md:2-41
Pola yang berulang di seluruh entri sama: satu producer mengeluarkan daftar, satu atau dua filter mempersempitnya, satu pemeriksa memverifikasi dugaan, lalu hasilnya disimpan ke berkas. Halaman ini membahas kerangka tersebut dan tool yang muncul berulang. Teknik per tahap dibahas di Teknik Recon dan Pengumpulan Aset dan Deteksi Kerentanan, sedangkan arti setiap placeholder ada di Placeholder dan Konvensi Penulisan One-liner.
graph TD
SRC["HOSTS.txt dan URLS.txt"] --> ENUM["enumerate: subfinder, assetfinder, amass, gau"]
ENUM --> PROBE["probe: filter-resolved, cf-check, naabu, httprobe, httpx"]
PROBE --> FILT["filter: gf, sort -u, -mc 200"]
FILT --> NORM["normalisasi: jq, cut, sed, awk"]
NORM --> VER{"verify: curl lalu grep -q"}
VER -->|cocok| VULN["echo VULN! URL"]
VER -->|tidak cocok| DROP["dibuang"]
VULN --> OUT["OUT.txt: tee atau anew -q"]
style SRC fill:#336791,color:#fff
style ENUM fill:#8b5cf6,color:#fff
style PROBE fill:#f59e0b,color:#000
style FILT fill:#8b5cf6,color:#fff
style NORM fill:#8b5cf6,color:#fff
style VER fill:#f59e0b,color:#000
style VULN fill:#2d7d46,color:#fff
style DROP fill:#dc2626,color:#fff
style OUT fill:#336791,color:#fff
%% fig: Tahap pipeline dari daftar aset sampai hasil tersimpan
%% desc: Daftar aset mengalir dari producer ke tahap probe, disaring dan dinormalisasi, diverifikasi lewat exit status, lalu hanya hasil yang cocok yang disimpan.Dari Enumerate sampai Simpan
Bentuk paling ringkas untuk tiga tahap sekaligus ada di satu baris: subfinder -d HOST -all -silent | httpx -silent -threads 300 | anew -q FILE.txt. Producer mengeluarkan subdomain, httpx memprobe, dan anew -q menulis hanya baris yang belum ada di FILE.txt. README.md:612
Enumerate bisa berlapis dan menulis ke satu berkas yang sama. Tiga producer dijalankan berurutan dengan >> FILE, lalu subjack -w FILE membaca berkas itu sebagai daftar masukan. README.md:2673
Tahap probe kadang diperluas sebelum menyentuh port: filter-resolved membuang host yang tidak resolve dan cf-check menyaring host di belakang Cloudflare, baru naabu -rate 40000 dan httprobe dijalankan. README.md:2424
Filter status code dipakai untuk membuang respons yang tidak menarik. httpx -silent -follow-redirects -mc 200 menyisakan respons 200, lalu cut -d '/' -f3 mengambil nama host saja. README.md:3765 Pola serupa memakai --match-regex untuk menyaring berkas JavaScript yang memuat addEventListener. README.md:546
Normalisasi JSON selalu dilakukan sebelum filter teks. jq -r .FDNS_A[] memecah array, cut -d',' -f2 mengambil kolom kedua, dan sort -u menutup baris. README.md:1257 Pada keluaran XML, jc --xml -p mengubah nmap -oX menjadi JSON yang bisa dibaca jq. README.md:4048
Tahap terakhir adalah verifikasi berbasis exit status, bukan parsing keluaran. grep -q "root:x" menentukan status keluar, lalu && echo "VULN! %" mencetak temuan. README.md:239 Varian yang sama dipakai untuk header redirect README.md:3010, untuk reflected XSS README.md:38311, dan untuk cabang gagal || printf ... "Not Vulnerable". README.md:6812
Paralelisasi dengan xargs dan parallel
Fan-out selalu ditulis sebagai flag pada satu tool, bukan sebagai loop manual. | Bentuk | Kutipan flag | Rujukan |
| --- | --- | --- |
| xargs dengan placeholder dan batas proses | xargs -I% -P 25 sh -c '...' | README.md:239 |
| xargs dengan placeholder berspasi | xargs -I % python3 paramspider.py -l high -o ./OUT/% -d % | README.md:27413 |
| xargs tanpa batas proses | xargs curl | README.md:253 |
| parallel per baris | parallel -j 10 curl --proxy http://127.0.0.1:8080 -sk | README.md:35 |
| parallel dengan output ringkas | parallel -j50 -q curl -w 'Status:%{http_code}...' | README.md:281 |
| parallel di dalam loop | parallel -j100 -q curl -s -L --silent | README.md:186 |
⚠️
-P 25padaxargsdan-j100padaparallelmengirim puluhan request serentak. Pada README.md:18617 seratus proses menembakdns.google.comsekaligus, dan pada README.md:239 dua puluh limacurlberjalan paralel ke host target. Turunkan nilainya bila target punya rate limit.
Pipeline yang butuh variabel antara memakai loop, bukan pipe. while read url; do ... done menjalankan beberapa perintah per baris masukan. README.md:35518 Bentuk loop yang keluarannya masih dipipe dipakai untuk menyambung parallel per item. README.md:18617
Menyimpan Hasil dengan tee dan anew
graph LR
IN["URLS.txt lewat gf url"] --> TEE["tee url-redirect.txt"]
TEE --> F1["url-redirect.txt"]
TEE --> RD["cat url-redirect.txt"]
RD --> PAR["parallel -j 10 curl --proxy 127.0.0.1:8080"]
PAR --> NULL["/dev/null"]
style IN fill:#8b5cf6,color:#fff
style TEE fill:#f59e0b,color:#000
style F1 fill:#336791,color:#fff
style RD fill:#8b5cf6,color:#fff
style PAR fill:#f59e0b,color:#000
style NULL fill:#dc2626,color:#fff
%% fig: tee memecah satu aliran menjadi berkas dan tahap berikutnya
%% desc: Keluaran gf url disalin ke url-redirect.txt, lalu berkas itu dibaca ulang untuk diteruskan ke parallel, sementara respons curl dibuang ke dev null.tee memecah aliran menjadi dua: satu salinan ke berkas, satu salinan lanjut ke tahap berikutnya. Pada entri XSS, sort -u | tee FILE.txt && cat FILE.txt | dalfox menyimpan kandidat parameter sebelum dipindai. README.md:4819 Pada entri lain, tee OUT.txt ditempatkan di ujung sehingga seluruh keluaran dalfox pipe tersimpan. README.md:4220
tee -a menumpuk hasil beberapa producer ke satu berkas wordlist, sehingga gau HOST | unfurl -u keys | tee -a FILE1.txt dan gau HOST | unfurl -u paths | tee -a FILE2.txt mengisi dua berkas sekaligus. README.md:24921 Bentuk cat HOSTS.txt | httprobe | xargs curl | tok | ... | sort -u | tee -a FILE.txt hanya menyimpan hasil akhir rangkaian. README.md:25314
anew muncul satu kali di README, yaitu anew -q FILE.txt di ujung pipeline subdomain, dan berperan menulis baris yang belum ada tanpa mengulang baris lama. README.md:612
⚠️ Pada README.md:3515 seluruh respons dibuang ke
/dev/null, sehinggaurl-redirect.txtadalah satu-satunya artefak yang tersisa dari putaran itu.
Toolchain yang Berulang
| Tool | Peran dalam pipeline | Contoh |
|---|---|---|
subfinder | producer subdomain | README.md:612 |
assetfinder, amass | producer tambahan yang menulis dengan >> | README.md:2673 |
filter-resolved, cf-check | saringan sebelum port scan | README.md:2424 |
naabu, httprobe | port scan dan probe HTTP | README.md:2424 |
httpx | probe status dan filter -mc 200 | README.md:3765 |
gf | pemilihan URL per kategori lfi, redirect, url, xss | README.md:239 |
qsreplace | penggantian nilai parameter | README.md:3010 |
dalfox ... pipe | pemindai XSS yang membaca stdin | README.md:4220 |
jq, jc | normalisasi JSON dan konversi XML | README.md:4048 |
sort -u, cut, sed | dedup dan pemotongan kolom | README.md:1257 |
xargs, parallel | fan-out paralel | README.md:27413 |
tee, anew | penyimpanan hasil | README.md:4819 |
grep -q | verifikasi berbasis exit status | README.md:6812 |
Jebakan di Pipeline
⚠️ Pada README.md:24921,
rm FILE2.txt | sed -i -e ...tidak menyaring apa pun:rmtidak menghasilkan keluaran, jadi pipe kesed -ikosong. Penyuntingan tetap terjadi karenased -imenerimaFILE1.txtsebagai argumen, bukan dari stdin.
⚠️ Pada README.md:239 dan README.md:3010, redirection
2>&1mencampur stderrcurlke dalam masukangrep -q. Pesan error transport ikut diuji sebagai kandidat temuan, sehingga pipeline bisa melaporkan hasil palsu bila pola cocok di stderr.
⚠️ Sensitivitas deteksi bergantung pada string pembanding. README.md:38311 mencari
<script>alert(1)</script>persis, dan README.md:6812 mencariroot, sehingga payload dengan encoding berbeda tidak akan tertangkap.