IIS - Internet Information Services
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Testuj rozszerzenia plików wykonywalnych:
asp
aspx
config
php
Na każdym serwerze IIS, na którym otrzymasz 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:
Odpowiedź ujawniająca wewnętrzny adres IP:
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
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ą.
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 powinieneś 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".
Przykład dostępu do pliku web.config pokazano poniżej:
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 znajdujące się w katalogu głównym, takie jak /global.asax i /connectionstrings.config (który zawiera wrażliwe hasła), są niezbędne dla konfiguracji i działania aplikacji.
Aplikacje MVC definiują również dodatkowe web.config files dla specyficznych przestrzeni nazw, aby uniknąć powtarzalnych deklaracji w każdym pliku, co ilustruje żądanie pobrania innego web.config:
Wzmianka o niestandardowej przestrzeni nazw sugeruje istnienie DLL o nazwie "WebApplication1" w katalogu /bin. Następnie pokazano żądanie pobrania WebApplication1.dll:
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.
From here
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 sprawdzić 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 właściwą.
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 przetestowania 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
Fajnym pomysłem na znalezienie ostatecznej nazwy odkrytych plików jest zapytanie LLMs o opcje, jak to zrobiono w skrypcie https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py
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ć tę lukę z ostatnią, aby znaleźć nowe foldery i obejść autoryzację.
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ą zdalne adresy IP klientów, identyfikatory sesji, wszystkie ciasteczka żądań i odpowiedzi, ścieżki fizyczne, 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/
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.
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.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)