Workflow Katana + Nuclei + SQLMap yang Paling Kepake Buat Hunting
Catatan workflow combo Katana, Nuclei, dan SQLMap buat crawl, filter parameter, scan vuln, lalu tes SQLi dengan lebih rapi.
Gambaran singkat
Kalau lagi hunting bug bounty atau ngerjain pentest ringan, combo Katana + Nuclei + SQLMap itu lumayan sering gue pakai. Alurnya simpel: crawl dulu, saring URL yang menarik, scan vuln umum, baru kalau ada kandidat bagus lanjut ke SQLMap.
Intinya jangan langsung tembak SQLMap ke semua URL. Buang-buang waktu, noise banyak, dan hasilnya sering nggak enak dibaca.
Install tools
Kalau tools-nya belum ada, ini setup yang paling gampang buat stack ProjectDiscovery plus SQLMap.
# ProjectDiscovery stack
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
# SQLMap
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git
cd sqlmap && python3 sqlmap.py -hWorkflow yang paling kepake
Kalau mau rapi, gue biasanya jalanin 3 tahap ini:
- Crawl pakai Katana buat ngumpulin URL dan parameter.
- Filter URL yang punya query string biar fokus ke kandidat SQLi.
- Scan pakai Nuclei, lalu lanjut SQLMap ke target yang paling masuk akal.
1. Crawl pakai Katana
Katana enak buat ngumpulin URL dari target. Bisa sekalian crawl JavaScript, baca robots.txt, dan buang file statis biar hasilnya lebih bersih.
katana -u https://target.com \
-d 3 \
-jc \
-kf all \
-ef png,jpg,gif,svg,css \
-o katana_urls.txtKalau mau versi yang lebih clean buat dipipe ke tool lain, bisa pakai mode silent.
katana -u https://target.com -jc -silent | tee all_urls.txt2. Filter URL yang punya parameter
Ini bagian yang penting. Nggak semua URL layak diuji SQLi. Biasanya gue cari yang punya ? atau parameter query lain dulu.
# Pakai gf kalau sudah ada pattern sqli
cat all_urls.txt | gf sqli > sqli_candidates.txt
# Atau manual
cat all_urls.txt | grep -E "\?|&" > param_urls.txtKalau mau lebih fokus, Katana juga bisa dibikin ngeluarin URL yang relevan aja. Yang penting hasil akhirnya jangan kebanyakan sampah.
3. Scan awal pakai Nuclei
Sebelum masuk ke SQLMap, gue biasanya cek dulu pakai Nuclei buat cari indikasi vuln umum. Kadang dari sini udah kelihatan celah yang lebih gampang dieksekusi.
# Scan semua URL
nuclei -list all_urls.txt -t cves/ -t vulnerabilities/ -severity critical,high -o nuclei_results.txt
# Khusus kandidat SQLi
nuclei -list param_urls.txt -t http/cves/ -t http/vulnerabilities/sql/ -o nuclei_sqli.txt4. Lanjut SQLMap ke kandidat yang bagus
SQLMap paling enak dipakai kalau targetnya sudah dipersempit. Jangan asal brute force ke semua endpoint. Pilih yang memang punya parameter dan terlihat masuk akal.
# Tes manual, biasanya paling akurat
sqlmap -u "https://target.com/page?id=1" --batch --dbs --risk 3 --level 5Kalau mau jalanin ke banyak URL, bisa pakai loop sederhana. Tapi tetap hati-hati, jangan bikin traffic berisik kalau targetnya sensitif.
cat param_urls.txt | while read url; do
echo "[*] Testing: $url"
sqlmap -u "$url" --batch --dbs --risk 2 --level 3 --threads 5 --random-agent -o
doneOne-liner versi simpel
Kalau lagi males ribet, pipeline ini cukup buat baseline awal.
katana -u https://target.com -jc -silent | \
httpx -silent -mc 200 | \
nuclei -t ~/nuclei-templates/ -severity high,critical -o nuclei.txt && \
echo "Nuclei selesai, cek manual SQLMap"Masalah yang sering muncul
- Hasil Katana kebanyakan noise — biasanya karena file statis ikut kebawa atau crawl terlalu dalam.
- Nuclei terlalu banyak false positive — wajar, jadi jangan percaya mentah-mentah. Cocokkan manual.
- SQLMap lambat atau mentok — bisa jadi parameternya nggak valid, WAF aktif, atau endpoint-nya bukan target SQLi.
Solusi yang biasanya gue pakai
- Pakai
-efdi Katana buat buang file statis. - Saring URL pakai query string dulu sebelum masuk SQLMap.
- Tambahin
httpxdi tengah buat cek status code dan respons yang masih hidup. - Kalau perlu, simpan hasil crawl dalam format yang lebih kaya biar gampang dianalisis lagi.
Tips kecil biar workflow lebih enak
- Pakai
-f qurlkalau mau output URL yang fokus ke query string. - Kalau hasilnya mau diproses lagi, simpan dalam format JSONL biar lebih fleksibel.
- Jangan langsung gas SQLMap ke semua URL. Pilih yang paling berpotensi dulu.
- Kalau mau lebih rapi, pisahin hasil crawl, hasil scan, dan hasil testing manual.
Penutup
Menurut gue, workflow ini kepake banget karena alurnya jelas: crawl → filter → scan → test. Nggak fancy, tapi efektif. Buat hunting harian, justru model begini yang paling sering kepakai.
Kalau mau, gue bisa bikinin versi script bash full otomatis dari alur ini. Tinggal kasih target, nanti tinggal jalan.
Tags: Catatan Teknis, Bug Bounty, pentest, Katana, Nuclei, sqlmap