1 puan yazan GN⁺ 3 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • IIS varsayılan ekranı çıkmaz sokak değil, bug bounty keşfinin başlangıç noktasıdır; Shodan, Google dork ve yanıt başlıklarıyla açığa çıkan sunucular ve gizli vhost’lar daraltılabilir
  • HTTP/1.0 istekleri, HTTPAPI 2.0 404, SSL sertifikaları ve Host başlığı brute force denemeleri, iç IP’ler, Exchange host adları ve sanal hostları bulmak için ilk ipuçlarını verebilir
  • IIS’in DOS 8.3 tabanlı tilde shortname enumeration davranışı, dizin listeleme kapalı olsa bile kısa dosya ve dizin adlarını ortaya çıkarabilir; GitHub araması, BigQuery, LLM ve crunch ile tam ad adayları tahmin edilebilir
  • IIS/.NET’e özgü fuzzing’de önce web.config, trace.axd, elmah.axd, appsettings.*.json, .aspx/.ashx/.asmx/.config gibi yüksek değerli yollar ve uzantılar hedeflenir
  • web.config ifşası, cookieless session yol normalizasyonu, reverse proxy path confusion, NTFS alternate data stream, yükleme uzantısı atlatma ve HPP; yanlış yapılandırmaların ve legacy davranışların saldırı yüzeyine dönüşebildiğini gösterir

IIS sunucularını bulmak için keşif yöntemleri

  • IIS hedefleri önce arama motorları ve internet varlık arama servislerinde bulunabilir
  • Shodan sorguları, hedef alanın SSL sertifikası, kuruluş adı ve http.title:"IIS" birleşimiyle IIS sunucularını daraltır
    • Örnek hedefler arasında staging sunucuları, unutulmuş yönetici panelleri ve internete açık iç araçlar bulunur
    • Shodan dışında fofa, censys, netlas ve odin de farklı internet indeksleri sunar
  • Google dorking, IIS izleri barındıran indekslenmiş sayfaları bulmak için kullanılır
    • aspnet_client klasörü ve _vti_bin, IIS sinyali olarak değerlendirilir
    • ext:aspx, ASP.NET sayfalarını bulur ve altında IIS bulunduğunu ima eder
    • site:*.target.com, site:*.*.target.com biçimindeki wildcard aramalar, temel subdomain enumeration’ın kaçırdığı iç içe subdomain’leri bulmak için kullanılır
  • Yanıt başlıkları, IIS tespitindeki en kolay ipucudur
    • Server: Microsoft-IIS/10.0
    • X-Powered-By: ASP.NET
    • Geniş ölçekte doğrulama için httpx veya nuclei ile IIS hedef listesi çıkarılabilir

IIS doğrulandıktan sonra elde edilen ilk ipuçları

  • Bazı IIS yapılandırmaları, özellikle Exchange veya OWA front-end’leri, HTTP/1.0 isteklerine iç bilgileri sızdırabilir
  • Location başlığında https://192.168.5.237/owa/ gibi bir iç IP bulunabilir
  • X-FEServer başlığı, Exchange sunucusunun iç host adını açığa çıkarabilir
  • Bu bilgiler, sonraki aşamalarda kullanılabilecek bilgi sızıntılarına dönüşür

Otomasyon ve gizli sanal hostları bulma

  • IIS hedef listesi çıkarıldıktan sonra tekrar eden işleri azaltmak için nuclei, microsoft, windows, asp, aspx, iis, azure, config, exposure gibi etiketlerle çalıştırılabilir
  • HTTPAPI 2.0 404, gerçekten hiçbir şey olmadığı anlamına gelmeyebilir
    • IIS örneği belirli bir sanal hosta bağlanmış olabilir ve istekteki Host başlığı eşleşmediği için 404 dönüyor olabilir
  • Gizli vhost bulmanın iki yolu vardır
    • SSL sertifikasının subject veya SAN alanlarından gereken host adı bulunur
    • Sertifika işe yaramazsa ffuf ve Host başlığı wordlist’iyle vhost brute force yapılır
  • Doğru host adı bulunduğunda sıradan 404 yerine gerçek uygulama yanıt verebilir

IIS tilde shortname enumeration

  • IIS, eski DOS 8.3 dosya adı kurallarından miras kalan bir davranış nedeniyle özel isteklerle dosya ve dizinlerin kısa adlarını enumerate edebilir
  • Dizin listeleme kapalı olsa bile WEB~1.CON, GLOBAL~1.ASA, SITEBA~1.ZIP, ADMIN~1 gibi parçalar açığa çıkabilir
  • shortscan, IIS shortname enumeration aracı olarak kullanılır
  • burp’s IIS Tilde Enumeration Scanner da alternatif olarak değerlendirilebilir
  • Kısa adları tam dosya adlarına dönüştürmenin birkaç yolu vardır
    • LLM: shortname parçasını içeren olası dosya adı adayları üretir
    • GitHub code search: ~1 öncesindeki ilk 6 karakter ve uzantıya göre gerçek dosya adlarını arar
    • GSNW: shortname parçalarını alıp GitHub code search ile eşleşen dosya adlarını toplar
    • GitHub-IIS-Shortname-Generator: benzer şekilde kelime listesi üretir
    • shortnameguesser: scanner çıktısından birden çok kaynağı sorgulayıp hedefe özel wordlist oluşturur
  • BigQuery yaklaşımı, Google BigQuery’nin açık GitHub veri setinde shortname desenine uyan dosya yollarını arar
  • LLM, GitHub ve BigQuery başarısız olursa kalan karakter kombinasyonları için crunch ile wordlist oluşturulup ffuf ile denenebilir
    • Tire, alt çizgi, URL kodlu boşluk ve ayraçsız dosya adı varyasyonları da birlikte kontrol edilir
    • Windows dosya adlarında boşluğa izin verir ve IIS de bunları sunabilir

IIS/.NET’e özgü fuzzing

  • Genel wordlist’ler tek başına IIS/.NET ekosistemine özgü dosya ve endpoint’leri kaçırabilir
  • Öncelikle kontrol edilmesi gereken yüksek değerli hedefler şunlardır
    • /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, ASP.NET trace viewer’dır; açıksa başlıklar, çerezler ve bazen kimlik bilgileri içeren istek/yanıt kayıtlarını sızdırabilir
  • elmah.axd, geliştiricilerin kapatmayı unuttuğu bir debug endpoint’i olarak kalabilir ve hata kayıtlarını gösterebilir
  • IIS’e özgü uzantı fuzzing hedefleri arasında .asp, .aspx, .ashx, .asmx, .wsdl, .wadl, .config, .xml, .zip, .txt, .dll, .json yer alır
  • Kullanılabilecek wordlist’ler şunlardır
    • secLists IIS.txt: temel IIS yolları, yaygın handler’lar ve legacy dosyaları içerir
    • orwa’s iis.txt: gerçek bug bounty programlarında kullanılmış IIS listesi olarak tanıtılır
    • orwa’s aspx.txt: .aspx endpoint’lerine odaklı listedir
    • wfuzz iis.txt: bilinen zayıf IIS yollarına odaklanan küçük bir listedir
    • dirbuster-ng iis.txt: IIS’e özgü zayıflıkları hedefleyen kompakt bir listedir
    • Assetnote wordlists: gerçek crawl verilerinden otomatik üretilir, aylık güncellenir ve ASP ile ASPX listeleri önerilir
    • OneListForAll: onelistforallshort.txt hedefli çalıştırmalar için, tam liste ise uzun süreli çalıştırmalar için kullanılır
  • IIS büyük/küçük harfe duyarlı olmadığından mixed-case wordlist’ler gereksiz yinelenen istekler üretebilir
    • Bu yüzden lower-case listeler kullanılır ya da tr '[:upper:]' '[:lower:]' | sort -u ile normalize edilir

web.config ve kod ifşası

  • web.config, path traversal, yanlışlıkla açığa çıkan yedek dosyalar veya shortname tabanlı keşifle okunabiliyorsa, IIS hedeflerinde etkisi büyük olabilir
  • IIS web.config içinde ViewState imzalama ve şifrelemede kullanılan machine key’ler bulunabilir
  • Machine key’ler varsa, kötü amaçlı serileştirme ViewState payload’ları sahte olarak üretilebilir ve bu da deserialization tabanlı uzaktan kod çalıştırmaya yol açabilir
  • ysoserial.net, key mevcutsa payload üretmeye yardımcı olan bir araçtır
  • Dosya indirme veya dosya okuma parametreleri varsa süreç ../../web.config ve URL kodlanmış varyasyonlarını denemeye uzanır
  • ASP.NET’in legacy cookieless session özelliği, (S(X)) biçimindeki oturum token’ını URL yoluna ekleyebilir
    • IIS bu segmenti yol normalizasyonu sırasında kaldırarak /bin dizinine erişim engelini atlatabilir
    • Newtonsoft.Json.dll tek başına varsayılan bir kütüphanedir ve uygulama sırlarını içermeyebilir
    • Gerçek uygulama DLL’leri elde edilirse dotPeek veya dnSpy ile decompile edilip hardcoded kimlik bilgileri, API anahtarları, iç endpoint mantığı ve özel kimlik doğrulama uygulamaları görülebilir

Yol normalizasyonu, NTFS, yüklemeler ve WAF atlatma

  • IIS reverse proxy arkasındayken veya reverse proxy rolünde çalışırken yol normalizasyonu farkları, erişim kontrolü atlatmaya yol açabilir
    • Proxy kodlanmış yolu başka bir kaynak gibi iletirken IIS %2f değerini / olarak decode edip traversal’ı yorumlayarak korumalı yolu sunabilir
  • IIS 7.5 ve benzeri sürümlerde NTFS alternate data streams ve index allocation davranışıyla basic authentication atlatılabilir
    • Kimlik doğrulama modülü yolu korumalı olarak algılamazken dosya sistemi bunu gerçek dizin olarak yorumlayabilir
  • Dosya yükleme işlevlerinde .aspx, .asp engellense bile IIS’in varsayılan olarak HTML sunduğu uzantılar üzerinden stored XSS mümkün olabilir
    • HTML render edilen uzantı örnekleri: .cer, .hxt, .htm
    • XML tabanlı XSS vektörü uzantı örnekleri: .dtd, .mno, .vml, .xsl, .xht, .svg, .xml, .xsd, .xsf, .svgz, .xslt, .wsdl, .xhtml
  • IIS, dosya adının sonundaki noktaları kaldırdığı için shell.aspx., shell.aspx.., shell.aspx... gibi yükleme filtresi atlatmaları mümkün olabilir
  • Server-side includes hedefleri olarak .stm, .shtm, .shtml uzantıları verilir
  • WAF payload’ı engellediğinde HTTP Parameter Pollution ile payload yinelenen parametrelere bölünebilir
    • IIS ve ASP.NET varsayılan olarak yinelenen parametre değerlerini virgülle birleştirir; böylece payload WAF arkasında yeniden birleştirilebilir

IIS bug bounty’den çıkan dersler ve kaynaklar

1 yorum

 
GN⁺ 3 시간 전
Hacker News görüşleri
  • Her honeypot'un önüne bir IIS açılış sayfası koymalarının nedeni tam olarak black hat'leri cezbetmesi
    Kendi kuyruklarını kovalamakla saatler harcadıklarını düşünmek bile insana ayrı bir keyif veriyor

    • Orada durmayıp ön tarafa gerçek bir IIS sunucusu koyup, honeypot'ları matruşka gibi kat kat yerleştirerek nereye kadar girdiklerini izlemek eğlenceli olurdu
    • Mevcut bir kuruluşun IP aralığında honeypot çalıştırmıyorsanız, sonuçta alacağınız şey sadece bot trafiği olur
      Üst seviye black hat'ler büyük hedeflerin peşine düşer, alt seviye olanlar ise Shodan'da buldukları kolay avlara ya da kendilerinin bulduğu uygulama zero-day'lerine odaklanır
    • Gürültü, gerçekten de değeri bilinmeyen bir güvenlik katmanı
    • Plex ve Nintendo Switch portlarını açtım, taramalar çılgın gibi yağmaya başladı
      Port tarayıcılarını trollemek için daha fazla yöntem varsa duymak isterim
    • aspnet_client/admin.php gibi URL'ler oluşturup WebObjects header döndürmesini sağlamak da güzel bir hobi olabilir
  • “IIS'in, eski DOS 8.3 dosya adı kuralından miras kalan legacy bir davranışı var” denirken, bunun IIS belge kökünün varsayılan olarak C:\Inetpub olmasıyla birleşince alttaki işletim sistemi davranışının açığa çıktığı anlamına mı geldiğini merak ediyorum
    Windows 10/11'de 8.3 dosya adları C sürücüsünde varsayılan olarak etkin, diğer sürücülerde ise varsayılan olarak devre dışı
    PS> (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').DisplayVersion24H2
    fsutil 8dot3name query C: çıktısı 8dot3 name creation is ENABLED, fsutil 8dot3name query U: çıktısı ise DISABLED

  • Yazının üslubu epey tuhaf

    • Bunu birkaç kez Claude yazmış olabilir mi diye düşündüm
  • Vay, bu gerçekten eski günleri hatırlattı
    Bir zamanlar IIS tarayıcıları o kadar fazlaydı ki sunucu logları fiilen kullanılamaz hale gelmişti
    Sadece ../ dizisini URL encode etmek yeterli olan bir directory traversal açığı vardı ve aylar boyunca bütün interneti ateşe verdi

    • Bu tür traversal denemeleri hâlâ PHP/WordPress script kiddie saldırıları kadar yaygın görünüyor
  • Hâlâ IIS kullanan yerler var mı?

    • Var. Windows Server ve IIS kullanırsanız, makine domaine katılmış olur ve genelde HOST/MACHINE.DOMAIN biçiminde bir SPN bulunur
      Windows servisleri ve IIS App Pool Identity, (g)MSA veya sanal hesaplarla (NT Service*) oturum açtığı için 30/60/90 günlük parola döngülerini elle yönetmeden, yönetilen bir Kerberos ortamı düzgün şekilde çalışır
      MS SQL Server'a Kerberos ile giriş yapmak ve başka web uygulamalarının OAuth2 akışlarında da Kerberos ile oturum açmak gibi şeyler doğal biçimde çalışır
      Varsayılan Windows kabuğunda WinRM de ek ayar yapmadan kullanılabilir ve teknik olarak 2FA da atlanabilir, çünkü sistem gerçekten bu şekilde çalışır
      Linux'ta da yapılabilir mi? Evet, ama düzgün yapılandırılmış olma ihtimali iş ortamına göre değişir ve benim deneyimime göre çok yüksek değil
    • Kurumsal BT departmanlarında hâlâ çok fazla kullanılıyor
    • Windows Server üzerinde IIS çalıştırmaya devam eden insanlarla sık sık konuşuyorum
      Gerçekten çok fazla eski uygulama var ve bunların arasında oldukça kritik olanlar da bulunuyor
    • Bazı bankalar hâlâ IIS kullanıyor
      Intranet işletecek kadar büyük bir kurumsal şirketteyseniz, bir yerlerde, hatta belki her yerde IIS çalışıyordur
      AD ile çok iyi entegre olduğu için son derece karmaşık işler akıl almayacak kadar basit hale geliyor
      Dünya AWS'ye kaydıkça kullanım azalıyor ama bu da yine tek bir üreticinin kapalı ürününe (Amazon) bağlanmak demek; aynı derecede aptalca. Tek fark, bu sefer donanıma da sahip olmamanız
      Kamu BT'si IIS'i seviyor. Yerel yönetim vergi ya da emlak sitelerine bakarsanız her yerde .aspx script'leri görme ihtimaliniz yüksek
      Bunu Avrupa kamu web uygulamalarında da gördüm; SQL Server arka ucuna sahip özel .NET uygulamaları çoğu zaman tüm yerel yönetimi çalıştırıyor
      Asya, özellikle Çin ve Tayvan, IIS'i seviyor gibi görünüyordu; her türlü şeyi barındırmak için kullanıyorlardı
      Dünya büyük ölçüde yoluna devam etmiş olsa da şehirleri ve kritik kurumları çalıştıran legacy kodun çok büyük kısmı hâlâ IIS üzerinde ve değişmeyecek
      Bunun kötü olduğunu düşünüyorsanız, web üzerinde hâlâ AS/400, Lotus Notes ve Novell GroupWise çalıştıran yerler de var
    • Evet. Ve konuya çok hâkim olmayan biri olarak sorayım: Bugün ne kullanmak gerekiyor?
      Küçük bir şirketin kurumsal .NET Framework kodu yazdığını, her şeyin Windows olduğunu, müşterilerin bulutu benimsemediğini, SOAP'ın hâlâ baskın olduğunu ve tek BT sorumlusunun 2010'dan sonra neler olduğuna kafa yormaya bile vakti olmadığını düşünün
      Baştan yazım fiilen imkânsız, güvenlik tarafında kazanım istiyorsunuz ama yapılandırmaya derinlemesine girecek kapasiteniz yok ve Kubernetes gibi karmaşık şeylere de bel bağlayamazsınız
  • nginx hakkında da böyle bir analiz yazısı görmek isterim

  • Tüm masaüstü tarayıcılar genelinde bakınca tasarım gerçekten iyi ve içerik de çok başarılı

    • Bunun alay mı olduğunu bilmiyorum ama benim masaüstü tarayıcımda kenar çubuğu ana içerik paneliyle çakışıyor; metnin üstüne metin biniyor
      Yine de bunun dışındaki sunum tarzını beğendim
    • “Çok başarılı” demek, 2000'lerin başı script kiddie seviyesindeki bir içerik için biraz cömert bir değerlendirme
      Yazarın, uygarlığın büyük ölçüde insanların birbirine sebepsiz yere kötü davranmamasına ne kadar bağlı olduğunu daha öğrenmesi gerekiyor gibi
  • Soldaki kenar çubuğunun gövde metniyle çakışmasına neyin sebep olduğunu anlayamadım