- 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ı veHostbaş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/.configgibi yüksek değerli yollar ve uzantılar hedeflenir web.configifş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_clientklasörü ve_vti_bin, IIS sinyali olarak değerlendirilirext:aspx, ASP.NET sayfalarını bulur ve altında IIS bulunduğunu ima edersite:*.target.com,site:*.*.target.combiç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.0X-Powered-By: ASP.NET- Geniş ölçekte doğrulama için
httpxveyanucleiile 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
Locationbaşlığındahttps://192.168.5.237/owa/gibi bir iç IP bulunabilirX-FEServerbaş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,exposuregibi 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
Hostbaşlığı eşleşmediği için 404 dönüyor olabilir
- IIS örneği belirli bir sanal hosta bağlanmış olabilir ve istekteki
- 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
ffufveHostbaş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~1gibi 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
SITEBA~1.ZIPiçinsitebackup.zip,sitebase.zipgibi gerçek proje dosya adı adayları elde edilebilir- Bu yaklaşım, Assetnote’un IIS hidden files BigQuery araştırmasından ilham alır
- LLM, GitHub ve BigQuery başarısız olursa kalan karakter kombinasyonları için crunch ile wordlist oluşturulup
ffufile 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ırabilirelmah.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,.jsonyer 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:
.aspxendpoint’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.txthedefli ç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 -uile normalize edilir
- Bu yüzden lower-case listeler kullanılır ya da
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.configiç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.configve 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
/bindizinine erişim engelini atlatabilir Newtonsoft.Json.dlltek 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
- IIS bu segmenti yol normalizasyonu sırasında kaldırarak
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
%2fdeğerini/olarak decode edip traversal’ı yorumlayarak korumalı yolu sunabilir
- Proxy kodlanmış yolu başka bir kaynak gibi iletirken IIS
- 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,.aspengellense 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
- HTML render edilen uzantı örnekleri:
- 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,.shtmluzantı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
- IIS’in bug bounty saldırı yüzeyi geniştir, ancak çoğu zaman yeterince test edilmez
- Açığa çıkan Windows/IIS sunucuları; iç IP’ler, yapılandırma dosyaları ve shortname enumeration gibi yollarla bilgi sızdırabilir
- IIS varsayılan ekranında durmayıp daha derin keşif yapmak, pratikte önemlidir
- Kaynaklar
1 yorum
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
Ü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
Port tarayıcılarını trollemek için daha fazla yöntem varsa duymak isterim
aspnet_client/admin.phpgibi 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:\Inetpubolmasıyla birleşince alttaki işletim sistemi davranışının açığa çıktığı anlamına mı geldiğini merak ediyorumWindows 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').DisplayVersion→24H2fsutil 8dot3name query C:çıktısı8dot3 name creation is ENABLED,fsutil 8dot3name query U:çıktısı iseDISABLEDc:\inetpuboluşturduğu olayı hatırladımhttps://www.pcworld.com/article/2684062/why-is-windows-11-la...
DisplayVersionkomutuna yanıt gelmedi; eski sürümlerde, örneğin LTSC'de, aşağıdaki gibiReleaseIdkullanmak gerekiyor gibi görünüyor(Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').ReleaseId→1809Yazının üslubu epey tuhaf
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 verdiHâlâ IIS kullanan yerler var mı?
HOST/MACHINE.DOMAINbiçiminde bir SPN bulunurWindows 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ışırMS 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
Gerçekten çok fazla eski uygulama var ve bunların arasında oldukça kritik olanlar da bulunuyor
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
.aspxscript'leri görme ihtimaliniz yüksekBunu 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
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ı
Yine de bunun dışındaki sunum tarzını beğendim
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