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

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-4

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.
Fig. 1: Tahap pipeline dari daftar aset sampai hasil tersimpanDaftar 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:61

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:267

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:242

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:376 Pola serupa memakai --match-regex untuk menyaring berkas JavaScript yang memuat addEventListener. README.md:54

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:125 Pada keluaran XML, jc --xml -p mengubah nmap -oX menjadi JSON yang bisa dibaca jq. README.md:404

Tahap terakhir adalah verifikasi berbasis exit status, bukan parsing keluaran. grep -q "root:x" menentukan status keluar, lalu && echo "VULN! %" mencetak temuan. README.md:23 Varian yang sama dipakai untuk header redirect README.md:30, untuk reflected XSS README.md:383, dan untuk cabang gagal || printf ... "Not Vulnerable". README.md:68

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:23 | | xargs dengan placeholder berspasi | xargs -I % python3 paramspider.py -l high -o ./OUT/% -d % | README.md:274 | | 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 25 pada xargs dan -j100 pada parallel mengirim puluhan request serentak. Pada README.md:186 seratus proses menembak dns.google.com sekaligus, dan pada README.md:23 dua puluh lima curl berjalan 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:355 Bentuk loop yang keluarannya masih dipipe dipakai untuk menyambung parallel per item. README.md:186

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.
Fig. 2: tee memecah satu aliran menjadi berkas dan tahap berikutnyaKeluaran 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:48 Pada entri lain, tee OUT.txt ditempatkan di ujung sehingga seluruh keluaran dalfox pipe tersimpan. README.md:42

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:249 Bentuk cat HOSTS.txt | httprobe | xargs curl | tok | ... | sort -u | tee -a FILE.txt hanya menyimpan hasil akhir rangkaian. README.md:253

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:61

⚠️ Pada README.md:35 seluruh respons dibuang ke /dev/null, sehingga url-redirect.txt adalah satu-satunya artefak yang tersisa dari putaran itu.

Toolchain yang Berulang

ToolPeran dalam pipelineContoh
subfinderproducer subdomainREADME.md:61
assetfinder, amassproducer tambahan yang menulis dengan >>README.md:267
filter-resolved, cf-checksaringan sebelum port scanREADME.md:242
naabu, httprobeport scan dan probe HTTPREADME.md:242
httpxprobe status dan filter -mc 200README.md:376
gfpemilihan URL per kategori lfi, redirect, url, xssREADME.md:23
qsreplacepenggantian nilai parameterREADME.md:30
dalfox ... pipepemindai XSS yang membaca stdinREADME.md:42
jq, jcnormalisasi JSON dan konversi XMLREADME.md:404
sort -u, cut, seddedup dan pemotongan kolomREADME.md:125
xargs, parallelfan-out paralelREADME.md:274
tee, anewpenyimpanan hasilREADME.md:48
grep -qverifikasi berbasis exit statusREADME.md:68

Jebakan di Pipeline

⚠️ Pada README.md:249, rm FILE2.txt | sed -i -e ... tidak menyaring apa pun: rm tidak menghasilkan keluaran, jadi pipe ke sed -i kosong. Penyuntingan tetap terjadi karena sed -i menerima FILE1.txt sebagai argumen, bukan dari stdin.

⚠️ Pada README.md:23 dan README.md:30, redirection 2>&1 mencampur stderr curl ke dalam masukan grep -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:383 mencari <script>alert(1)</script> persis, dan README.md:68 mencari root, sehingga payload dengan encoding berbeda tidak akan tertangkap.