Hook network memutuskan apakah tujuan request dari sisi server aman dari SSRF (request yang bisa diarahkan ke layanan internal, metadata cloud, atau host privat). Hook ini adalah engine deterministik di balik spesialisasi network, dan Anda bisa menjalankannya sendiri.
Menjalankan
Berikan setiap tujuan dengan --url. Hook ini mencetak satu kata per tujuan, yang dijelaskan di tabel di bawah.
- Satu tujuan
- Beberapa tujuan
npx lagune read network --url 'http://example.com/'
# => safe
npx lagune read network --url 'http://0x7f000001/'
# => private-target
Ulangi --url untuk menilai seluruh daftar izin atau daftar blokir dalam satu panggilan, satu putusan per baris, sesuai urutan.
npx lagune read network \
--url 'http://example.com/' \
--url 'http://[::1]/' \
--url 'http://allowed.com@evil.example/'
# => safe
# => private-target
# => parser-divergent
Hook ini meresolusi host dengan cara yang sama seperti jaringan, sehingga bentuk terenkode dari alamat internal tidak lolos: heksadesimal, oktal, desimal tanpa titik, bentuk singkat, IPv6, dan IPv4 yang dipetakan ke IPv6 semuanya terbaca private-target. Dan jika validator yang ceroboh dan fetcher sebenarnya akan membaca host yang berbeda, putusannya adalah parser-divergent.
Cara membaca putusan
| Putusan | Arti |
|---|---|
safe | Tujuan terhubung ke host publik, dan validator yang ceroboh akan membaca host yang sama. |
private-target | Host diresolusi ke alamat privat, loopback, link-local, unspecified, atau metadata cloud. |
parser-divergent | Validator teks yang ceroboh akan membaca host nyata yang berbeda dari host yang dihubungi fetcher. |
invalid url | String tidak bisa di-parse sebagai URL, jadi tidak ada yang bisa diambil. |
Hanya safe yang berarti diizinkan. Perlakukan private-target, parser-divergent, dan invalid url sebagai blokir.
Opsi CLI
| Opsi | Nilai | Deskripsi |
|---|---|---|
--url | URL atau host | Memeriksa satu tujuan. Ulangi untuk memeriksa beberapa, satu putusan per baris. |
Minimal satu --url wajib diberikan. Tujuan tidak pernah diberikan sebagai argumen posisional polos, jadi tidak bisa dikira sebuah flag.
Setiap tujuan diberikan sebagai nilai flag, tidak pernah disisipkan ke dalam perintah. Nilai yang berisi tanda kutip atau backtick tetap tidak berbahaya dan tidak bisa melakukan injeksi ke shell. Selalu apit nilainya dengan tanda kutip tunggal agar shell Anda tidak mengekspansinya lebih dulu.
Hook ini murni dan tidak pernah meresolusi DNS, jadi dua celah saat runtime berada di luar cakupan: DNS rebinding (nama yang diresolusi ke alamat publik saat diperiksa, tetapi ke alamat internal saat diambil) dan rantai redirect (lompatan pertama yang lolos, lalu dialihkan ke dalam). Tutup celah itu dengan meresolusi nama sekali saja lalu terhubung ke alamat yang sudah divalidasi, serta dengan menolak redirect. Hook ini langsung menetapkan nama loopback yang dicadangkan (localhost dan keluarga .localhost) sebagai internal tanpa lookup, tetapi nama DNS lainnya terbaca safe, karena memastikan nama itu diresolusi ke dalam memerlukan resolusi: daftar izin yang menjaga nama tersebut, dan daftar izin itulah yang divalidasi checker ini.
Ini adalah pengecekan yang sama dengan yang dijalankan spesialisasi network untuk membuktikan bahwa filter tujuan tetap efektif.
Pertanyaan yang sering diajukan
Jalankan hook network. Hook ini menilai tujuan request dan mengembalikan safe, private-target, parser-divergent, atau invalid url. Hanya safe yang berarti diizinkan.
URL yang dibaca secara berbeda oleh parser yang berbeda, yang merupakan cara klasik untuk menembus perlindungan SSRF. Hook network menandainya alih-alih mengizinkannya.
