IIS - Internet Information Services
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Test edilebilir dosya uzantıları:
asp
aspx
config
php
302 aldığınız herhangi bir IIS sunucusunda, Host başlığını kaldırmayı deneyebilir ve HTTP/1.0 kullanabilirsiniz; yanıtta Location başlığı size dahili IP adresini gösterebilir:
İç IP'yi ifşa eden yanıt:
.config dosyalarını yükleyebilir ve bunları kod çalıştırmak için kullanabilirsiniz. Bunu yapmanın bir yolu, dosyanın sonuna bir HTML yorumu içinde kod eklemektir: Örneği buradan indirin
Bu güvenlik açığını istismar etmek için daha fazla bilgi ve teknikler burada bulunmaktadır.
Oluşturduğum listeyi indirin:
Aşağıdaki listelerin içeriklerini birleştirerek oluşturuldu:
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt
Bunu herhangi bir uzantı eklemeden kullanın, gerekli olan dosyalar zaten buna sahiptir.
Tam yazım için kontrol edin: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
Özetle, uygulamanın klasörlerinde "assemblyIdentity" dosyalarına ve "namespaces" referanslarına sahip birkaç web.config dosyası bulunmaktadır. Bu bilgilerle çalıştırılabilir dosyaların nerede bulunduğunu bilmek ve bunları indirmek mümkündür. İndirilen Dll'lerden ayrıca erişmeye çalışmanız gereken yeni namespaces bulmak ve yeni namespaces ve assemblyIdentity bulmak için web.config dosyasını almak mümkündür. Ayrıca, connectionstrings.config ve global.asax dosyaları ilginç bilgiler içerebilir.\
.Net MVC uygulamalarında, web.config dosyası, uygulamanın bağımlı olduğu her ikili dosyayı "assemblyIdentity" XML etiketleri aracılığıyla belirterek kritik bir rol oynar.
web.config dosyasına erişim örneği aşağıda gösterilmiştir:
Bu istek, aşağıdaki gibi çeşitli ayarları ve bağımlılıkları ortaya çıkarır:
EntityFramework sürümü
Web sayfaları, istemci doğrulaması ve JavaScript için AppSettings
Kimlik doğrulama ve çalışma zamanı için System.web yapılandırmaları
System.webServer modül ayarları
Microsoft.Owin, Newtonsoft.Json ve System.Web.Mvc gibi birçok kütüphane için Runtime derleme bağlamaları
Bu ayarlar, /bin/WebGrease.dll gibi belirli dosyaların uygulamanın /bin klasöründe bulunduğunu gösterir.
Kök dizinde bulunan /global.asax ve hassas şifreler içeren /connectionstrings.config gibi dosyalar, uygulamanın yapılandırması ve çalışması için gereklidir.
MVC uygulamaları, her dosyada tekrarlayan bildirimlerden kaçınmak için belirli ad alanları için ek web.config dosyaları tanımlar; bu, başka bir web.config indirme isteği ile gösterilmiştir:
Özel bir ad alanının belirtilmesi, /bin dizininde bulunan "WebApplication1" adlı bir DLL'ye işaret eder. Bunu takiben, WebApplication1.dll indirmek için bir istek gösterilmektedir:
Bu, /bin dizininde System.Web.Mvc.dll ve System.Web.Optimization.dll gibi diğer önemli DLL'lerin varlığını önerir.
Bir DLL'nin WebApplication1.Areas.Minded adlı bir ad alanını içe aktardığı bir senaryoda, bir saldırgan, /bin klasöründeki diğer DLL'lere özel yapılandırmalar ve referanslar içeren, /area-name/Views/ gibi öngörülebilir yollarda başka web.config dosyalarının varlığını çıkarabilir. Örneğin, /Minded/Views/web.config için bir istek, başka bir DLL'nin varlığını gösteren yapılandırmaları ve ad alanlarını açığa çıkarabilir, WebApplication1.AdditionalFeatures.dll.
Aşağıdaki gibi bir hata görüyorsanız:
Bu, sunucunun Host başlığı içinde doğru alan adını almadığı anlamına gelir. Web sayfasına erişmek için sunulan SSL Sertifikasına bakabilir ve belki orada alan/ad alanı adını bulabilirsiniz. Eğer orada yoksa, doğru olanı bulana kadar VHosts brute force yapmanız gerekebilir.
Bu teknik ile keşfedilen her klasörün içinde klasörleri ve dosyaları listelemeyi deneyebilirsiniz (temel kimlik doğrulama gerektirse bile). Bu tekniğin ana sınırlaması, sunucu zayıfsa, her dosya/klasörün adının ilk 6 harfini ve dosyaların uzantısının ilk 3 harfini bulabilmesidir.
Bu zafiyeti test etmek için https://github.com/irsdl/IIS-ShortName-Scanner kullanabilirsiniz:java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/
Orijinal araştırma: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
Ayrıca metasploit kullanabilirsiniz: use scanner/http/iis_shortname_scanner
Keşfedilen dosyaların son adını bulmak için LLM'lere seçenekler sormak güzel bir fikirdir, bu https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py scriptinde olduğu gibi.
Temel kimlik doğrulamasını atlatmak için şunlara erişmeyi deneyin: /admin:$i30:$INDEX_ALLOCATION/admin.php
veya /admin::$INDEX_ALLOCATION/admin.php
Bu zafiyeti ve sonuncusunu birleştirerek yeni klasörler bulmayı ve kimlik doğrulamayı atlatmayı deneyebilirsiniz.
ASP.NET, bir hata ayıklama modu içerir ve dosyası trace.axd
olarak adlandırılır.
Bu, bir uygulamaya yapılan tüm isteklerin çok ayrıntılı bir kaydını tutar.
Bu bilgi, uzak istemci IP'leri, oturum kimlikleri, tüm istek ve yanıt çerezleri, fiziksel yollar, kaynak kodu bilgileri ve potansiyel olarak kullanıcı adları ve şifreleri içerir.
https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/
ASPXAUTH aşağıdaki bilgileri kullanır:
validationKey
(string): imza doğrulaması için kullanılacak hex kodlu anahtar.
decryptionMethod
(string): (varsayılan “AES”).
decryptionIV
(string): hex kodlu başlatma vektörü (varsayılan sıfır vektörüdür).
decryptionKey
(string): şifreleme için kullanılacak hex kodlu anahtar.
Ancak, bazı insanlar bu parametrelerin varsayılan değerlerini kullanacak ve kullanıcının e-posta adresini çerez olarak kullanacaklardır. Bu nedenle, ASPXAUTH çerezini kullanan aynı platformu kullanan bir web bulursanız ve saldırı altındaki sunucuda taklit etmek istediğiniz kullanıcının e-posta adresiyle bir kullanıcı oluşturursanız, ikinci sunucudan çerezi birincisinde kullanarak kullanıcıyı taklit edebilirsiniz. Bu saldırı bu yazıda çalıştı.
Tam rapor burada: Kodda bir hata, kullanıcı tarafından verilen şifreyi düzgün bir şekilde kontrol etmedi, bu nedenle şifre hash'i önbellekte zaten bulunan bir anahtara denk gelen bir saldırgan, o kullanıcı olarak giriş yapabilecektir.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)