• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Дневник белой шляпы [Часть 9]: Сертификат [eWPT]

grozdniyandy

White-Hat
Premium
Регистрация
11.08.2023
Сообщения
522
Реакции
677
Гарант сделки
2

<!DOCTYPE html> (Вступление)

Чтобы быть принятым на работу, лучше иметь сертификаты. Даже и если сертификаты не гарантируют, что вы получите работу, они увеличивают ваши шансы. Эта статья о сертификате, который я получил некоторое время назад, моем совете вам и моем личном отзыве об экзамене. Я на некоторое время перестану писать о дневникe белой шляпы, потому что эти статьи посвящены случаям, и каждая статья, которую я написал, - это то, что произошло в моей жизни. Я не хочу снижать качество "Дневника белой шляпы", слишком часто публикуя статьи. Вы увидите, как я пишу статьи о подготовке к определенным сертификациям или на конкретные темы. Я не нарушаю закон и не разглашаю содержание экзамена.

Предварительные требования: Базовые знания о web уязвимостях (SQL/XSS), Linux, английского языка.
Уровень: Легкий-Средний

  1. Паутина
    • Дневник белой шляпы [Часть 1]: не DDoS
    • Дневник белой шляпы [Часть 2]: Интервью [GraphQL]
    • Дневник белой шляпы [Часть 3]: Cтажировкa [File Inclusion (Remote / Local)]
    • Дневник белой шляпы [Часть 5]: Удачная догадка [RCE - Проверка простейших CVE, найденных в PHP-приложениях]
    • Дневник белой шляпы [Часть 6]: Сообщение [Websockets + Tool]
    • Дневник белой шляпы [Часть 7]: Ничего [JWT]
  2. ОС
    • Дневник белой шляпы [Часть 4]: Знания [PrivEsc - Linux Capabilities] [Повышение привилегий - Возможности Linux]
  3. OSINT
    • Дневник белой шляпы [Часть 8]: Презентации [OSINT или Разведка ?]

Содержание
  1. История
  2. Что это за сертификат?
  3. Как этот сертификат помог мне? (история об интервью)
  4. На какие темы вам лучше обратить внимание?
  5. Как на самом деле написать report? (как по мне)
  6. Что я могу посоветовать?

История

Это произошло некоторое время назад, когда я думал, что каждый человек с сертификацией "eJPT" способен устроиться на работу как минимум младшим специалистом. Мои товарищи по команде говорили о получении сертификата eWPT, я сказал, что мы можем получить его в одно и то же время, и мы планировали начать экзамен в одно и то же время. Пока мне не стало по-настоящему скучно, у меня было много дел, и я не мог сделать все это вовремя, что меня злило, поэтому я все бросил, изолировал себя на 9 дней. Первые 7 дней я работал над лабом, я всегда стараюсь относиться к экзаменам серьезно. И я писал отчет 2 дня подряд, чтобы избежать ошибок (без сна). Я уверен, что это обычное дело для большинства пентестеров, которые читают это.

Что это за сертификат?

eWPT - это сертификат от eLearnSecurity, который подтверждает ваши знания в области веб-взлома. Этот сертификат достаточно известен, так как вы можете увидеть его название в объявлениях о приеме на работу. Сам экзамен длится 14 дней, у вас есть доступ к лаборатории на 7 дней, это означает, что первую неделю вы должны взламывать и делать скриншоты, заметки и т.д. На второй неделе вы должны написать отчет и представить его. На второй неделе у вас нет доступа к лаборатории, поэтому необходимо делать скриншоты и т.д. Есть требование, необходимое для сдачи экзамена, оно приведено на странице руководства по экзамену (я не могу его обнародовать, но если у вас хорошие навыки поиска, вы, я думаю, сможете найти его в Интернете). Темы включают: SQLi, XSS, SOAP API, нарушенный контроль доступа, уязвимости при загрузке файлов и т.д. У кого-то нет возможности сказать, что "я нашел все уязвимости", поскольку после отправки отчета мы не получаем обзор того, что мы пропустили, мы получаем либо fail, либо pass. В случае, если мы получили fail, они могут дать подсказку о том, почему мы провалили экзамен (некоторые забывают сделать то, что было написано в руководстве, у некоторых скриншоты плохого качества и несколько других причин). Нет необходимости беспокоиться, поскольку они дают вам второй шанс, но это также не повод расслабляться.

Как этот сертификат помог мне?

Некоторые люди обладают действительно хорошими знаниями в области информационной безопасности, поэтому в своих резюме они могут указывать очень интересные темы. Я не отношусь к числу таких людей, поэтому подумал, что получить сертификат было бы действительно приятно. Сертификация сама по себе является хорошей причиной для компаний вызывать меня на собеседование. Зачем еще им связываться с новичком, если они не видят преденности человека к своей области? Я не говорю, что сертификат - единственная причина, которая показывает это, но это одна из причин. Я уверен, что большинство старших специалистов в этой области не согласились бы со мной, но они должны учитывать, что времена изменились, и людей, называющих себя "профессионалами", стало больше, чем настоящих профессионалов. Я всегда избегаю называть себя "профессионалом" или "хакером", я просто парень, который пытается расти в этой области. Но иногда это приводит к путанице в головах людей. Однажды в интервью мне задали вопрос: "Слышали ли вы о owasp top 10?". Я воспринял это как оскорбление, но это было не такой уж большой проблемой, поскольку это была вторая часть интервью, в первой части с другим интервьюером мы обсуждали очень интересные темы. Зачем я вам все это рассказываю? Поскольку на том собеседовании сертификат действительно помог, после показа моего резюме они ответили "О, хорошо" и отношение ко мне изменилось. В некоторых случаях резюме интервьюерам не выдаются, поэтому они начинают опрос с основ, или, если они хотят, чтобы вы прошли, что тоже случается, они могут напрямую задавать вопросы об очень специфических уязвимостях, таких как загрязнение прототипа.

На какие темы вам лучше обратить внимание?

Лучше проверить материал, предоставленный "INE". Если вы почитаете отзывы в Интернете, они скажут, что этого "более чем достаточно". Нет, но это дает вам отличное представление о том, что будет на экзамене. Я просто проверил только лаборатории, что было не очень хорошей идеей. Я готовился часа 2 или 3, честно говоря, не помню. Я помню, что я проверил разведывательную часть их PDF-файлов, и я настоятельно советую вам сделать это. Я знал, что если я не смогу получить поддомены цели, то я провалю экзамен, независимо от того, насколько хорошими знаниями в области веб-взлома я обладаю. Я думаю, это была единственная разумная вещь, которую я сделал перед началом экзамена.

Несколько советов:
  1. Освободите свой график перед началом экзамена.
  2. Будьте готовы к случаю, если ваш сервер окажется Windows, а не Linux.
  3. Скачайте "Joplin" для заметок и "OBS" для записи экрана.
Вам будет предоставлен VPN для подключения, и у вас будет IP-адрес, на котором будет находиться домен. Вам нужно будет добавить домен и IP-адрес внутри файла /etc/hosts в Linux, чтобы веб-сайт открылся. С этим у вас могут возникнуть проблемы. Вот почему я предпочитаю, чтобы вы запустили веб-сайт на своем компьютере и добавили доменное имя, например "google.com" в файл /etc/hosts и указали свой локальный адрес. Например:
Код:
127.0.0.1    google.com

Я прошу вас сделать это, потому что домен, который они предоставляют, используется публично, и иногда ваш linux будет пытаться подключиться к тому домену вместо лаборатории.

Ознакомьтесь с курсами и лабораторными работами, предоставляемыми INE. Попробуйте написать отчет о recon по какому-нибудь домену (вы можете проверить hackerone), получив его поддомены, проанализировав технологии, которые они использовали, и т.д.

Reconnaissance

Прежде всего, добавьте расширение wappalyzer в свой firefox. После этого проверьте, нормально ли работает ваш amass, если нет, удалите его и переустановите с github. Составьте список веб-сайтов, которые предоставляют поддомен.

Некоторые способы для получения поддоменов:
  1. Amass - особо советую, независимо от того, кто что говорит, это лучший инструмент для перечисления (enum) поддоменов
  2. searchdns.netcraft.com
  3. dnsdumpster.com
  4. osint.sh/subdomain/

Всегда помните о необходимости сохранять эти данные, вот почему я написал "Joplin" выше. Нет никакого способа справиться с огромными объемами данных до тех пор, пока вы не распределите их по категориям.

SQL-инъекция

Я предпочитаю, чтобы вы установили bWAPP и ознакомились со всеми лабораториями SQL-инъекций. Все, что может быть залогировано и сохранено, может быть использовано для ввода полезной нагрузки. Если сервер хранит ваш IP-адрес и если ваш IP-адрес может быть "подделан" с помощью заголовка X-Forwarded-For, то вы должны ввести туда полезную нагрузку. Помните, что одно приложение может использовать разные базы данных, и в некоторых случаях извлечение данных может быть затруднено, например, в случае, если вы видите time-based SQL-инъекцию, для извлечения данных может потребоваться много времени, это может занять несколько дней, в этом случае вы можете просто извлечь только базу данных, имена таблиц и столбцов вместо получения всей информации. Если вы застряли на чем-то одном и ничего не можете с этим поделать, оставьте это и займитесь чем-то другим. Испробуйте все возможные способы. SQL-инъекция - не единственная веб-атака. Вы можете скачать bee-box отсюда:
Код:
https://sourceforge.net/projects/bwapp/files/bee-box/bee-box_v1.6.7z/download

Сначала я скачал VMware, распаковал bee-box, а затем открыл файл .vmx. Вы должны войти в систему с данными "bee/bug", а затем найти лабораторию с именем "SQL Injection - Stored (User-Agent)"


Изображение [1]: IP bWAPP

Изображение [1]: IP bWAPP



Изображение [2]: SQL Injection - Stored (User-Agent)

Изображение [2]: SQL Injection - Stored (User-Agent)​

Из названия лаборатории мы понимаем, что уязвимость находится в заголовке. Мы видим, что IP-адрес, дата и заголовок занесены в log. Это означает, что на самом деле у нас может быть возможность выполнить атаку SQL-инъекцией на все из них, но мы должны найти точку ввода. В данном случае нашей точкой ввода является заголовок User-Agent. Мы можем начать тестирование, добавив одинарную или двойную кавычку.

Изображение [3]: Обнаружение уязвимости

Изображение [3]: Обнаружение уязвимости​


Мы видим, что есть ошибка MySQL, если это был бы bug bounty, нам пришлось бы остановиться здесь, потому что этой ошибки достаточно, чтобы доказать SQL-инъекцию (это зависит от правил платформы). Но это лабораторная работа, поэтому давайте подумаем о том, как выглядит запрос в серверной части. Я думаю, это выглядело бы примерно так:
SQL:
INSERT INTO Customers (Vremya, Agent, IP)
VALUES ('01.01.1990', 'XSSBot', '0.0.0.0');

В этом случае мы действительно можем вставить SQL-код вместо значения и получить ответ от сервера.

Изображение [4]: Используем запрос SELECT

Изображение [4]: Используем запрос SELECT​


Я предпочитаю использовать простой код, поскольку сложные коды порождают сложные проблемы.
SQL:
',(select 1)); -- -
В этом случае наш запрос выглядел бы следующим образом
SQL:
INSERT INTO Customers (Vremya, Agent, IP)
VALUES ('01.01.1990', '',(select 1)); -- -', '0.0.0.0');

Изображение [5]: Результат запросa SELECT

Изображение [5]: Результат запросa SELECT​


Я думаю, что одна из замечательных вещей, которые мы можем сделать в этом случае, - это получить содержимое файла. Поэтому я буду использовать "load_file"
SQL:
', (select load_file('/etc/passwd'))) -- -
Наш запрос мог бы выглядеть следующим образом:
SQL:
INSERT INTO Customers (Vremya, Agent, IP)
VALUES ('01.01.1990', '', (select load_file('/etc/passwd'))) -- -', '0.0.0.0');


Изображение [4]: Используем запрос SELECT LOAD_FILE();

Изображение [6]: Используем запрос SELECT LOAD_FILE();

1694361147604.png

Изображение [7]: Результат запросa SELECT LOAD_FILE();​


Нет никакого способа предсказать точный запрос, поскольку в серверной части возможно все. Просто включите свое воображение и работайте.

Что делать в случае, если что-то подобное будет в лаборатории?

Я, очевидно, понимаю, что нет никакого способа проверить все. Я знаю, что времени много, но человек может испытывать стресс, выполняя все это, и, возможно, SQL-инъекция даже не error-based, что усложнит ситуацию. Экзамены eLearnSecurity посвящены реальным ситуациям, которые могут произойти, они не направлены на то, чтобы доказать, что вы "крутой" хакер, как экзамены OffSec. Итак, в вашем случае я бы использовал Burp Suite Professional (когда я сдавал экзамен, я им не пользовался). Тогда я просто сохранял запрос в файле и отправлял его в sqlmap.

Есть классная шпаргалка, которая наверняка поможет вам:

https://book.hacktricks.xyz/pentesting-web/sql-injection/sqlmap

Cross-Site-Scripting

Вы должны понимать, как на самом деле работает XSS и что вы можете с ним сделать. Мощь уязвимости XSS исходит от javascript. Я советую вам проверить XSS keylogger https://github.com/chentetran/xss-keylogger чтобы просто понять, что вы можете пересылать данные на свой собственный сервер. Вопрос в том, какие данные? Ну, в основном - cookie. Вы можете научиться просто отправлять ссылку пользователю и получать cookie пользователя в качестве ответа. На вашем месте я бы ознакомился с простым курсом HTML и JavaScript, поскольку это может помочь. Теперь перейдем к настоящей работе. Существует "Cтранный случай XSS", который мы должны решить.

Ссылка на дело: https://blog.yeswehack.com/yeswerhackers/solution-for-a-weird-xss-case/

Очевидно, что этот случай является публичным, и он не принадлежит никому. Давайте сами создадим уязвимый веб-сайт с этим кейсом и попробуем его взломать!

HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>XSS LAB FOR xss.pro</title>
</head>
<body>
    <h1>XSS LAB FOR xss.pro</h1>
    <p>Text here:</p>
    <textarea id="userInput"></textarea>
    <button onclick="executeCode()">Output</button>
    <div id="output"></div>

    <script>
        function executeCode() {
            var inputElement = document.getElementById("userInput");
            var outputElement = document.getElementById("output");
            var userInput = inputElement.value;

            try {
                userInput = userInput.toUpperCase();

                var tempElement = document.createElement("div");
                tempElement.innerHTML = userInput;

                for (var i = 0; i < tempElement.childNodes.length; i++) {
                    var node = tempElement.childNodes[i];
                    if (node.nodeType === 1 && node.tagName === 'SCRIPT') {
                        eval(node.textContent);
                    }
                }

                outputElement.innerHTML = tempElement.innerHTML;
            } catch (error) {
                outputElement.innerHTML = "Error: " + error.message;
            }
        }
    </script>
</body>
</html>

Простые шаги для запуска веб-сайта:
Bash:
mkdir xss
cd xss
nano index.html #вставьте код выше
python3 -m http.server 80

На этом веб-сайте все, что мы пишем, будет написано заглавными буквами. Если вы немного знакомы с HTML, вы должны знать, что HTML-теги не чувствительны к регистру, поэтому нет никакой разницы в том, как вы их исправляете. На рисунке № 8 мы пытаемся ввести простой HTML-код:

HTML:
<h1>test</h1>

Изображение [8]: Пробую HTML-код

Изображение [8]: Пробую HTML-код
Как вы видите, наш HTML-код сработал, а теги написаны в верхнем регистре. Но в этом случае javascript-коды не будут работать, потому что они чувствительны к регистру. Мы можем попробовать ввести простую полезную нагрузку в веб-приложение и консоль:
HTML:
<script>alert(1)</script>

Изображение [9]: Пробую alert()

Изображение [9]: Пробую alert()​

JSFuck - это язык программирования на основе JavaScript и метод, используемый для написания кода на JavaScript, использующий всего шесть символов: [ ] ( ) ! +. Мы собираемся использовать его для выполнения полезных нагрузок. Символы не могут быть ни прописными, ни строчными.


Изображение [10]: JSFuck

Изображение [10]: JSFuck


Изображение [11]: Xааакнули

Изображение [11]: Xааакнули​

Этот трюк сработал, но это не единственный способ сделать это.

Домашнее задание: Проверьте атрибут "src" тега "script".

SOAP API

У меня нет для этого никаких лабораторий, но я могу дать вам совет. Прежде всего, поймите, что при работе с API возможны любые уязвимости. Вы можете найти SQLi, XSS, IDOR, XXE и т.д. Все, что я могу вам здесь дать, - это дз.

Домашнее задание: Проверьте файлы .wsdl и .disco, каково их назначение.

Как на самом деле написать report?​

Первое, что вы должны понять, это то, что ценность вашего отчета зависит от содержащейся в нем информации. Но это не значит, что вы можете просто взять белую бумагу и вставить информацию. Это также не означает, что вы должны украшать свой отчет, как рождественскую елку. Отчеты имеют свою собственную структуру, она должна быть аккуратной.
 
Последнее редактирование:
Это своего рода обложка, которое я обычно использую, когда предоставляю отчеты о тестах на проникновение. Первое - логотип, поместите его посередине, он должен быть среднего размера. Второе - название компании, третье - автор, которого я предпочитаю указывать. Как вы видите, все выглядит просто аккуратно.


 Изображение [12]: Обложка

Изображение [12]: Обложка

Обычно я нумерую страницы, но не включаю "Обложку" и "Содержание". 4-я часть - это краткое изложение, это та часть, которая должна быть понятна даже людям, не связанным с ИТ, она должна включать диаграммы, содержащие количество обнаруженных уязвимостей, их критичность, влияние и другие факторы. Так что, по сути, это краткое изложение найденных уязвимостей. Я также включаю систему, которая использовалась для расчета баллов за выявленные уязвимости, определения области действия на и временных ограничений, имен хостов/IP-адресов, которые находятся в области действия. Определения области действия показывает, что мы можем и не можем делать, например, есть веб-приложение, и нам удалось получить доступ к серверу через уязвимость при загрузке файлов, если сам сервер находится вне зоны действия, мы не можем его протестировать.


 Изображение [13]: Содержание

Изображение [13]: Содержание​

5-я часть - отчет об уязвимостях и их устранении, в моем случае они собраны вместе, потому что это был black box пентест, и в большинстве случаев я не мог посоветовать какое-либо конкретное устранение уязвимостей. Прежде чем писать об уязвимостях и приводить доказательства концепции (PoC), я написал о методологии, которую я использовал, и reconnaissance. Методология является стандартом, на основе которой я классифицировал уязвимости. Я просто объединил OWASP Top 10 с CWE. Например, допустим, я обнаружил SQL-инъекцию и уязвимость XSS, я сначала добавляю заголовок "Инъекция" и пишу описание, чтобы описать, что такое инъекция (copy-paste из owasp) и указываю источник, после этого я пишу тип инъекции, скажем, SQL-инъекцию, добавляю описание, используемые инструменты, воздействие и источник. Потом делаю одно и то же с XSS. Вы можете спросить меня, зачем мне нужен CWE, если в OWASP также есть описание уязвимостей? Тогда мой вопрос к вам таков: как бы вы классифицировали "Предоставление конфиденциальной информации неавторизованному субъекту" только с помощью OWASP? Вы бы назвали это "Нарушенным контролем доступа", но этого будет недостаточно, потому что вы должны указать, к какой части "Нарушенного контроля доступа" это относится. Поэтому я просто смешал их и распределил по категориям.

Пример для вас, чтобы вы лучше поняли это:

Код:
Table Of Contents

Executive Summary
     1.1 Project Objectives
     1.2 Scoping and Time Limitations
     1.3 Hostnames and IP-addresses
     1.4 Vulnerability Summary

Vulnerability and Remediation Report
     2.1 Methodology
     2.2 Injection
     SQL Injection
     Cross-site Scripting (XSS)
     PHP Remote File Inclusion
     2.3 Insecure Design
     Unrestricted Upload of File with Dangerous Type
     Plaintext Storage of a Password
     2.4 Broken Access Control
     Exposure of Sensitive Information to an Unauthorized Actor
     2.5 Cryptographic Failures
     Cleartext Transmission of Sensitive Information
     2.6 Identification and Authentication Failures
     Improper Restriction of Excessive Authentication Attempts
     Use of Weak Credentials
     2.7 Security Misconfiguration
     Sensitive Cookie Without 'HttpOnly' Flag
     2.8 Vulnerable and Outdated Components
     Use of Unmaintained Third Party Components

Допустим, у нас есть уязвимость "Раскрытие конфиденциальной информации неавторизованному субъекту", это было бы примерно так:

Код:
Broken Access Control

Description:
Access control enforces policy such that users cannot act outside of their intended permissions. Failures typically lead to unauthorized information disclosure, modification, or destruction of all data or performing a business function outside the user's limits. Common access control vulnerabilities include:
Violation of the principle of least privilege or deny by default, where access should only be granted for particular capabilities, roles, or users, but is available to anyone.
Bypassing access control checks by modifying the URL (parameter tampering or force browsing), internal application state, or the HTML page, or by using an attack tool modifying API requests.
Permitting viewing or editing someone else's account, by providing its unique identifier (insecure direct object references)
Accessing API with missing access controls for POST, PUT and DELETE.
Elevation of privilege. Acting as a user without being logged in or acting as an admin when logged in as a user.
Metadata manipulation, such as replaying or tampering with a JSON Web Token (JWT) access control token, or a cookie or hidden field manipulated to elevate privileges or abusing JWT invalidation.
CORS misconfiguration allows API access from unauthorized/untrusted origins.
Force browsing to authenticated pages as an unauthenticated user or to privileged pages as a standard user.


Reference: https://owasp.org/Top10/A01_2021-Broken_Access_Control/

Exposure of Sensitive Information to an Unauthorized Actor

Description:
The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information.

Impact: An attacker is able to determine valid usernames within the system by attempting to login with different username inputs and observing the system's response. This can lead to further attacks such as password guessing or targeted phishing attempts, which can compromise the confidentiality and integrity of the system. Additionally, the attacker may be able to gain access to sensitive information if they are able to successfully guess or obtain the correct password for a valid username.

Reference: https://cwe.mitre.org/data/definitions/200.html

Domain                Page                Parameter
xss.pro                /threads            id
xss.pro                /posts              username
xss.pro                /comments            email

Я также указываю домен, страницу и параметр, в котором обнаружена уязвимость. КСТАТИ, я присваиваю идентификатор каждой найденной уязвимости, и когда я даю статистику, я использую идентификаторы. Вы можете спросить меня, зачем я это делаю, допустим, вы нашли 2 XSS, один из них stored, другой reflexted, оба XSS были найдены в панели администратора, очевидно, stored XSS будет иметь больше влияния, чем другой. Когда я предоставляю статистику, показывающую влияние, я указываю ID, чтобы читатель понял причину, по которой один XSS имеет средний балл 4,6, в то время как другой имеет балл 5,4. Я подсчитываю баллы с помощью калькулятора CVSSv3. Его показатели:

Код:
CVSS v3.0 Ratings
 
Severity    Base Score Range
None        0.0
Low         0.0-3.9
Medium      4.0-6.9
High        7.0-10.0
Critical    9.0-10.0
Калькулятор: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator

6-я часть - это тип тестирования на проникновение, которое я провожу, и название компании, 7-я часть - логотип, просто чтобы выгляделo более элегантно.

Когда я пишу отчеты и не знаю, что куда поместить, я просматриваю эти 2 отчета:

Код:
https://tcm-sec.com/wp-content/uploads/2021/10/TCMS-Demo-Corp-Security-Assessment-Findings-Report.pdf

https://underdefense.com/wp-content/uploads/2021/09/Anonymized-Web-application-penetration-testing-report.pdf

Старайтесь всегда сохранять и включать: скриншоты, полезную нагрузку, эксплойты, используемые инструменты, домены, страницы, параметры, влияние, оценку (severity) и исправление.

Теперь, когда дело доходит до reconnaissance. Допустим, что все поддомены определенного домена находятся в области действия, но компания не предоставила вам список поддоменов, и ваша задача - найти их. Разведывательная часть отчета может включать поддомены, их описание и используемые технологии. Под описанием я подразумеваю, допустим, что есть поддомен "support", вы могли бы вставить "название" в качестве описания, это может быть "Онлайн-служба поддержки клиентов". Проверьте тег "title" в HTML-коде.

Что я могу посоветовать?

Я советую вам писать отчеты об уязвимых веб-сайтах, поработать с "OWASP Juice Shop" и написать отчет для него. Отнеситесь к экзамену серьезно, не расстраивайтесь, если вы провалитесь, и, самое главное, помните, что вы сдаете экзамен для себя, чтобы проверить свои знания, это никоим образом не является доказательством ваших способностей. Внимательно прочтите руководство, которое они предоставят, и другие отзывы.

С уважением grozdniyandy
Специально для xss.pro
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх