1 poin oleh GN⁺ 3 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Halaman default IIS bukan jalan buntu, melainkan titik awal rekonesans bug bounty; server yang terekspos dan vhost tersembunyi bisa dipersempit lewat Shodan, Google dork, dan header respons
  • Request HTTP/1.0, HTTPAPI 2.0 404, sertifikat SSL, dan brute force header Host menjadi petunjuk awal untuk menemukan IP internal, hostname Exchange, dan virtual host
  • Tilde shortname enumeration berbasis DOS 8.3 di IIS dapat mengungkap nama file dan direktori pendek meski directory listing dimatikan, lalu GitHub search, BigQuery, LLM, dan crunch dipakai untuk menebak kandidat nama lengkap
  • Fuzzing khusus IIS/.NET sebaiknya lebih dulu membidik path dan ekstensi bernilai tinggi seperti web.config, trace.axd, elmah.axd, appsettings.*.json, dan .aspx/.ashx/.asmx/.config
  • Eksposur web.config, normalisasi path pada cookieless session, reverse proxy path confusion, NTFS alternate data stream, bypass ekstensi upload, dan HPP menunjukkan bagaimana salah konfigurasi dan perilaku legacy bisa berkembang menjadi permukaan serangan

Cara melakukan rekonesans untuk menemukan server IIS

  • Target IIS bisa lebih dulu dicari lewat mesin pencari dan layanan pencarian aset internet
  • Kueri Shodan mempersempit server IIS dengan menggabungkan sertifikat SSL domain target, nama organisasi, dan http.title:"IIS"
    • Contoh target mencakup server staging, panel admin yang terlupakan, dan tool internal yang terekspos ke internet
    • Selain Shodan, fofa, censys, netlas, dan odin juga menyediakan indeks internet yang berbeda
  • Google dorking digunakan untuk menemukan halaman yang mengindeks jejak IIS
    • Folder aspnet_client dan _vti_bin diperlakukan sebagai sinyal IIS
    • ext:aspx mencari halaman ASP.NET dan mengisyaratkan ada IIS di belakangnya
    • Pencarian wildcard seperti site:*.target.com dan site:*.*.target.com dipakai untuk menemukan subdomain bertingkat yang terlewat oleh enumerasi subdomain dasar
  • Header respons adalah petunjuk termudah untuk mengidentifikasi IIS
    • Server: Microsoft-IIS/10.0
    • X-Powered-By: ASP.NET
    • Untuk verifikasi skala besar, httpx atau nuclei bisa dipakai untuk membuat daftar target IIS

Petunjuk awal yang didapat setelah mengonfirmasi IIS

  • Beberapa konfigurasi IIS, terutama front-end Exchange atau OWA, dapat membocorkan informasi internal pada request HTTP/1.0
  • Header Location bisa berisi IP internal seperti https://192.168.5.237/owa/
  • Header X-FEServer dapat mengungkap hostname internal server Exchange
  • Informasi seperti ini dapat berlanjut menjadi information disclosure yang berguna di tahap berikutnya

Otomatisasi dan menemukan virtual host tersembunyi

  • Setelah memperoleh daftar target IIS, pekerjaan berulang bisa dikurangi dengan menjalankan nuclei memakai tag seperti microsoft, windows, asp, aspx, iis, azure, config, exposure
  • HTTPAPI 2.0 404 belum tentu berarti memang tidak ada apa-apa
    • Bisa jadi instance IIS terikat ke virtual host tertentu dan request menghasilkan 404 karena header Host tidak cocok
  • Ada dua cara menemukan vhost tersembunyi
    • Mencari hostname yang diperlukan dari subject sertifikat SSL atau field SAN
    • Jika sertifikat tidak membantu, lakukan brute force vhost dengan ffuf dan wordlist header Host
  • Jika hostname yang benar ditemukan, aplikasi sebenarnya bisa merespons alih-alih 404 biasa

Enumerasi tilde shortname di IIS

  • Karena perilaku lama yang berasal dari aturan nama file DOS 8.3, IIS dapat mengizinkan enumerasi nama pendek file dan direktori lewat request khusus
  • Meski directory listing dinonaktifkan, fragmen seperti WEB~1.CON, GLOBAL~1.ASA, SITEBA~1.ZIP, ADMIN~1 tetap bisa terungkap
  • shortscan digunakan sebagai tool enumerasi shortname IIS
  • burp’s IIS Tilde Enumeration Scanner juga bisa digunakan sebagai alternatif
  • Ada beberapa cara mengubah nama pendek menjadi nama file lengkap
    • LLM: menghasilkan kandidat nama file yang mungkin memuat fragmen shortname
    • GitHub code search: mencari nama file nyata berdasarkan 6 karakter pertama sebelum ~1 dan ekstensinya
    • GSNW: menerima fragmen shortname lalu mengumpulkan nama file yang cocok dari GitHub code search
    • GitHub-IIS-Shortname-Generator: membuat wordlist dengan pendekatan serupa
    • shortnameguesser: membuat wordlist target dengan mengueri beberapa sumber dari output scanner
  • Pendekatan BigQuery mencari path file yang cocok dengan pola shortname di dataset publik GitHub pada Google BigQuery
  • Jika LLM, GitHub, dan BigQuery gagal, gunakan crunch untuk membuat wordlist kombinasi string yang tersisa lalu coba dengan ffuf
    • Variasi nama file seperti tanda hubung, garis bawah, spasi yang di-URL-encode, dan tanpa pemisah juga ikut diperiksa
    • Windows mengizinkan spasi dalam nama file dan IIS juga dapat menyajikannya

Fuzzing khusus IIS/.NET

  • Hanya mengandalkan wordlist umum bisa membuat file dan endpoint khas ekosistem IIS/.NET terlewat
  • Target bernilai tinggi yang sebaiknya diperiksa lebih dulu meliputi
    • /web.config, /web.config.bak, /web.config.old, /web.config.txt
    • /global.asax
    • /trace.axd
    • /elmah.axd
    • /connectionstrings.config
    • /appsettings.json, /appsettings.Development.json, /appsettings.Staging.json, /appsettings.Production.json, /appsettings.Local.json
    • /secrets.json
    • /WS_FTP.LOG
    • /_vti_pvt/service.cnf
  • trace.axd adalah ASP.NET trace viewer; bila aktif, ia bisa mengekspos log request/response yang berisi header, cookie, dan kadang kredensial
  • elmah.axd bisa tetap tertinggal sebagai endpoint debug yang tidak dimatikan pengembang, dan menampilkan log error
  • Target fuzzing ekstensi khusus IIS mencakup .asp, .aspx, .ashx, .asmx, .wsdl, .wadl, .config, .xml, .zip, .txt, .dll, .json
  • Wordlist yang layak dipakai meliputi
    • secLists IIS.txt: memuat path dasar IIS, handler umum, dan file legacy
    • orwa’s iis.txt: diperkenalkan sebagai daftar IIS yang dipakai di program bug bounty nyata
    • orwa’s aspx.txt: daftar berfokus pada endpoint .aspx
    • wfuzz iis.txt: daftar kecil yang berfokus pada path IIS rentan yang sudah dikenal
    • dirbuster-ng iis.txt: daftar ringkas yang membidik kelemahan khusus IIS
    • Assetnote wordlists: dibuat otomatis dari data crawling nyata, diperbarui tiap bulan, dan daftar ASP serta ASPX direkomendasikan
    • OneListForAll: onelistforallshort.txt cocok untuk eksekusi target, sedangkan daftar penuh untuk eksekusi jangka panjang
  • Karena IIS tidak peka huruf besar-kecil, wordlist mixed-case bisa menghasilkan request duplikat
    • Praktik yang digunakan adalah memakai daftar lower-case atau menormalkannya dengan tr '[:upper:]' '[:lower:]' | sort -u

Eksposur web.config dan kode

  • Jika web.config bisa dibaca melalui path traversal, file backup yang salah terekspos, atau penemuan berbasis shortname, dampaknya pada target IIS bisa besar
  • web.config IIS dapat berisi machine keys yang dipakai untuk penandatanganan dan enkripsi ViewState
  • Jika machine keys tersedia, penyerang dapat memalsukan payload ViewState serialisasi berbahaya dan berujung pada remote code execution berbasis deserialization
  • ysoserial.net adalah tool yang membantu membuat payload ketika key tersedia
  • Jika ada parameter download file atau baca file, alurnya berlanjut dengan mencoba ../../web.config dan variasi URL-encoded
  • Fitur legacy ASP.NET cookieless session dapat menaruh token sesi berbentuk (S(X)) di path URL
    • Saat IIS menghapus segmen tersebut dalam normalisasi path, pembatasan akses ke direktori /bin bisa dilewati
    • Newtonsoft.Json.dll sendiri adalah library umum dan mungkin tidak berisi rahasia aplikasi
    • Jika berhasil mendapatkan DLL aplikasi yang sebenarnya, file itu bisa didekompilasi dengan dotPeek atau dnSpy untuk melihat kredensial hardcoded, API key, logika endpoint internal, dan implementasi autentikasi kustom

Normalisasi path, NTFS, upload, dan bypass WAF

  • Saat IIS berada di belakang reverse proxy atau berperan sebagai reverse proxy, perbedaan normalisasi path dapat menyebabkan bypass kontrol akses
    • Proxy mungkin meneruskan path ter-encode sebagai resource berbeda, tetapi IIS mendekode %2f menjadi / dan menafsirkan traversal sehingga path terlindungi bisa diakses
  • IIS 7.5 dan versi serupa mungkin memungkinkan bypass basic authentication lewat perilaku NTFS alternate data streams dan index allocation
    • Modul autentikasi mungkin tidak mengenalinya sebagai path yang dilindungi, tetapi file system dapat menafsirkannya sebagai direktori yang sebenarnya
  • Pada fitur upload file, meski .aspx dan .asp diblokir, stored XSS tetap mungkin melalui ekstensi yang secara default disajikan IIS sebagai HTML
    • Contoh ekstensi yang dirender sebagai HTML: .cer, .hxt, .htm
    • Contoh ekstensi vektor XSS berbasis XML: .dtd, .mno, .vml, .xsl, .xht, .svg, .xml, .xsd, .xsf, .svgz, .xslt, .wsdl, .xhtml
  • IIS memiliki perilaku menghapus titik di akhir nama file, sehingga filter upload bisa dilewati dengan shell.aspx., shell.aspx.., shell.aspx...
  • Untuk target server-side includes, ekstensi .stm, .shtm, .shtml disebutkan sebagai kandidat
  • Jika WAF memblokir payload, HTTP Parameter Pollution dapat dipakai untuk memecah payload ke beberapa parameter duplikat
    • IIS dan ASP.NET secara default menggabungkan nilai parameter duplikat dengan koma, sehingga payload dapat tersusun ulang di belakang WAF

Pelajaran dan referensi yang tersisa dari bug bounty IIS

1 komentar

 
GN⁺ 3 jam lalu
Komentar Hacker News
  • Alasan menaruh halaman landing IIS di depan setiap honeypot memang untuk memancing para black hat
    Membayangkan mereka membuang berjam-jam waktu hanya untuk mengejar ekor sendiri rasanya menyenangkan sekali

    • Bukan cuma itu, akan lebih seru kalau benar-benar menaruh server IIS di lapisan depan, lalu membuat honeypot berlapis seperti matryoshka untuk melihat seberapa jauh mereka masuk
    • Kalau tidak menjalankan honeypot di rentang IP milik organisasi yang sudah ada, pada akhirnya yang datang cuma traffic bot
      Black hat kelas atas memburu target besar, sedangkan kelas bawah fokus pada sasaran empuk yang ditemukan di Shodan atau application zero-day yang mereka temukan sendiri
    • Noise benar-benar lapisan keamanan yang diremehkan
    • Setelah membuka port Plex dan Nintendo Switch, scan berdatangan seperti orang gila
      Kalau ada cara untuk mengerjai para port scanner, saya ingin tahu lebih banyak
    • Membuat URL seperti aspnet_client/admin.php dan mengaturnya agar mengembalikan header WebObjects sepertinya bisa jadi hobi yang menyenangkan
  • Pernyataan bahwa “IIS memiliki perilaku legacy yang diwarisi dari aturan nama file DOS 8.3 lama” membuat saya penasaran apakah ini berarti perilaku sistem operasi dasar terekspos, apalagi document root IIS secara default adalah C:\Inetpub
    Di Windows 10/11, nama file 8.3 aktif secara default di drive C tetapi nonaktif secara default di drive lain
    PS> (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').DisplayVersion24H2
    fsutil 8dot3name query C: menghasilkan 8dot3 name creation is ENABLED, sedangkan fsutil 8dot3name query U: menghasilkan DISABLED

  • Gaya penulisan artikelnya cukup aneh

    • Beberapa kali saya sempat mengira ini ditulis Claude
  • Wah, ini benar-benar membangkitkan kenangan lama
    Dulu scanner IIS begitu banyak sampai log server praktis jadi tidak berguna
    Pernah ada kerentanan directory traversal yang cukup dengan URL-encode ../, dan selama berbulan-bulan seolah membakar seluruh internet

    • Upaya traversal seperti itu sampai sekarang masih sangat umum, berdampingan dengan serangan script kiddie PHP/WordPress
  • Masih ada yang memakai IIS?

    • Ada. Jika memakai Windows Server dan IIS, mesinnya terhubung ke domain dan biasanya punya SPN dalam bentuk HOST/MACHINE.DOMAIN
      Windows service dan IIS App Pool Identity login dengan (g)MSA atau akun virtual (NT Service*), jadi lingkungan Kerberos terkelola bisa berjalan dengan baik tanpa harus menangani rotasi kata sandi 30/60/90 hari secara manual
      Login ke MS SQL Server lewat Kerberos, lalu login ke alur OAuth2 webapp lain juga lewat Kerberos, semuanya berjalan mulus
      WinRM juga bisa dipakai dari shell Windows standar tanpa konfigurasi khusus, dan secara teknis bahkan bisa melewati 2FA, karena memang begitulah cara kerjanya di dunia nyata
      Apakah ini bisa di Linux? Bisa, tetapi kemungkinan terkonfigurasi dengan benar berbeda-beda tergantung lingkungan kerja, dan sejauh pengalaman saya tidak tinggi
    • Di departemen IT perusahaan masih dipakai sangat banyak
    • Saya sering berbicara dengan orang-orang yang masih menjalankan IIS di Windows Server
      Aplikasi lama jumlahnya sangat banyak, dan di antaranya ada yang sangat penting
    • Beberapa bank masih memakai IIS
      Jika perusahaan cukup besar untuk menjalankan intranet, kemungkinan di suatu tempat—mungkin bahkan di seluruh tempat—IIS sedang berjalan
      Integrasinya dengan AD sangat baik sehingga pekerjaan yang sangat rumit menjadi sangat sederhana
      Memang pemakaiannya berkurang saat dunia pindah ke AWS, tetapi itu juga sama bodohnya karena kembali terikat pada produk monopoli satu vendor lain (Amazon). Bedanya cuma kali ini Anda bahkan tidak memiliki perangkat kerasnya
      IT sektor publik menyukai IIS. Jika melihat situs pajak atau properti milik pemerintah daerah, kemungkinan besar ada banyak skrip .aspx
      Saya juga melihatnya di webapp sektor publik Eropa, dan sering kali aplikasi .NET kustom dengan backend SQL Server menjalankan seluruh pemerintahan daerah
      Asia, terutama China dan Taiwan, tampaknya menyukai IIS dan memakainya untuk meng-host segala macam hal
      Memang dunia pada umumnya sudah beralih, tetapi masih ada sangat banyak kode legacy di atas IIS yang menjalankan kota dan organisasi penting, dan itu tidak akan berubah
      Kalau menurut Anda itu buruk, masih ada juga tempat yang sampai sekarang menjalankan AS/400, Lotus Notes, dan Novell GroupWise di web
    • Benar. Dan sebagai orang yang tidak terlalu paham, lalu sekarang seharusnya memakai apa?
      Bayangkan perusahaan kecil yang membuat kode .NET Framework enterprise, semuanya Windows, pelanggan tidak menerima cloud, SOAP masih arus utama, dan satu-satunya orang IT bahkan tidak sempat peduli pada apa pun yang terjadi sejak 2010
      Menulis ulang total secara realistis mustahil, mereka ingin mendapat keuntungan keamanan tetapi tidak punya kapasitas untuk mengutak-atik konfigurasi secara mendalam, dan juga tidak bisa bertaruh pada sesuatu yang serumit Kubernetes
  • Saya ingin melihat artikel analisis seperti ini juga untuk nginx

  • Untuk browser desktop secara keseluruhan, desainnya sangat bagus, dan isinya juga luar biasa

    • Saya tidak tahu apakah ini sindiran, tetapi di browser desktop saya sidebar menimpa panel isi sehingga teks bertumpuk di atas teks
      Meski begitu, saya tetap suka presentasi selain itu
    • Menyebutnya “luar biasa” agak terlalu murah hati untuk konten setingkat script kiddie awal 2000-an
      Penulisnya tampaknya masih perlu belajar betapa bergantungnya peradaban pada orang-orang yang tidak saling berlaku jahat tanpa alasan
  • Saya tidak paham kenapa sidebar kiri menimpa teks isi