<!DOCTYPE html> (Вступление)
Чтобы быть принятым на работу, лучше иметь сертификаты. Даже и если сертификаты не гарантируют, что вы получите работу, они увеличивают ваши шансы. Эта статья о сертификате, который я получил некоторое время назад, моем совете вам и моем личном отзыве об экзамене. Я на некоторое время перестану писать о дневникe белой шляпы, потому что эти статьи посвящены случаям, и каждая статья, которую я написал, - это то, что произошло в моей жизни. Я не хочу снижать качество "Дневника белой шляпы", слишком часто публикуя статьи. Вы увидите, как я пишу статьи о подготовке к определенным сертификациям или на конкретные темы. Я не нарушаю закон и не разглашаю содержание экзамена.Предварительные требования: Базовые знания о web уязвимостях (SQL/XSS), Linux, английского языка.
Уровень: Легкий-Средний
- Паутина
- Дневник белой шляпы [Часть 1]: не DDoS
- Дневник белой шляпы [Часть 2]: Интервью [GraphQL]
- Дневник белой шляпы [Часть 3]: Cтажировкa [File Inclusion (Remote / Local)]
- Дневник белой шляпы [Часть 5]: Удачная догадка [RCE - Проверка простейших CVE, найденных в PHP-приложениях]
- Дневник белой шляпы [Часть 6]: Сообщение [Websockets + Tool]
- Дневник белой шляпы [Часть 7]: Ничего [JWT]
- ОС
- Дневник белой шляпы [Часть 4]: Знания [PrivEsc - Linux Capabilities] [Повышение привилегий - Возможности Linux]
- OSINT
- Дневник белой шляпы [Часть 8]: Презентации [OSINT или Разведка ?]
Содержание
- История
- Что это за сертификат?
- Как этот сертификат помог мне? (история об интервью)
- На какие темы вам лучше обратить внимание?
- Как на самом деле написать report? (как по мне)
- Что я могу посоветовать?
История
Это произошло некоторое время назад, когда я думал, что каждый человек с сертификацией "eJPT" способен устроиться на работу как минимум младшим специалистом. Мои товарищи по команде говорили о получении сертификата eWPT, я сказал, что мы можем получить его в одно и то же время, и мы планировали начать экзамен в одно и то же время. Пока мне не стало по-настоящему скучно, у меня было много дел, и я не мог сделать все это вовремя, что меня злило, поэтому я все бросил, изолировал себя на 9 дней. Первые 7 дней я работал над лабом, я всегда стараюсь относиться к экзаменам серьезно. И я писал отчет 2 дня подряд, чтобы избежать ошибок (без сна). Я уверен, что это обычное дело для большинства пентестеров, которые читают это.Что это за сертификат?
eWPT - это сертификат от eLearnSecurity, который подтверждает ваши знания в области веб-взлома. Этот сертификат достаточно известен, так как вы можете увидеть его название в объявлениях о приеме на работу. Сам экзамен длится 14 дней, у вас есть доступ к лаборатории на 7 дней, это означает, что первую неделю вы должны взламывать и делать скриншоты, заметки и т.д. На второй неделе вы должны написать отчет и представить его. На второй неделе у вас нет доступа к лаборатории, поэтому необходимо делать скриншоты и т.д. Есть требование, необходимое для сдачи экзамена, оно приведено на странице руководства по экзамену (я не могу его обнародовать, но если у вас хорошие навыки поиска, вы, я думаю, сможете найти его в Интернете). Темы включают: SQLi, XSS, SOAP API, нарушенный контроль доступа, уязвимости при загрузке файлов и т.д. У кого-то нет возможности сказать, что "я нашел все уязвимости", поскольку после отправки отчета мы не получаем обзор того, что мы пропустили, мы получаем либо fail, либо pass. В случае, если мы получили fail, они могут дать подсказку о том, почему мы провалили экзамен (некоторые забывают сделать то, что было написано в руководстве, у некоторых скриншоты плохого качества и несколько других причин). Нет необходимости беспокоиться, поскольку они дают вам второй шанс, но это также не повод расслабляться.Как этот сертификат помог мне?
Некоторые люди обладают действительно хорошими знаниями в области информационной безопасности, поэтому в своих резюме они могут указывать очень интересные темы. Я не отношусь к числу таких людей, поэтому подумал, что получить сертификат было бы действительно приятно. Сертификация сама по себе является хорошей причиной для компаний вызывать меня на собеседование. Зачем еще им связываться с новичком, если они не видят преденности человека к своей области? Я не говорю, что сертификат - единственная причина, которая показывает это, но это одна из причин. Я уверен, что большинство старших специалистов в этой области не согласились бы со мной, но они должны учитывать, что времена изменились, и людей, называющих себя "профессионалами", стало больше, чем настоящих профессионалов. Я всегда избегаю называть себя "профессионалом" или "хакером", я просто парень, который пытается расти в этой области. Но иногда это приводит к путанице в головах людей. Однажды в интервью мне задали вопрос: "Слышали ли вы о owasp top 10?". Я воспринял это как оскорбление, но это было не такой уж большой проблемой, поскольку это была вторая часть интервью, в первой части с другим интервьюером мы обсуждали очень интересные темы. Зачем я вам все это рассказываю? Поскольку на том собеседовании сертификат действительно помог, после показа моего резюме они ответили "О, хорошо" и отношение ко мне изменилось. В некоторых случаях резюме интервьюерам не выдаются, поэтому они начинают опрос с основ, или, если они хотят, чтобы вы прошли, что тоже случается, они могут напрямую задавать вопросы об очень специфических уязвимостях, таких как загрязнение прототипа.На какие темы вам лучше обратить внимание?
Лучше проверить материал, предоставленный "INE". Если вы почитаете отзывы в Интернете, они скажут, что этого "более чем достаточно". Нет, но это дает вам отличное представление о том, что будет на экзамене. Я просто проверил только лаборатории, что было не очень хорошей идеей. Я готовился часа 2 или 3, честно говоря, не помню. Я помню, что я проверил разведывательную часть их PDF-файлов, и я настоятельно советую вам сделать это. Я знал, что если я не смогу получить поддомены цели, то я провалю экзамен, независимо от того, насколько хорошими знаниями в области веб-взлома я обладаю. Я думаю, это была единственная разумная вещь, которую я сделал перед началом экзамена.Несколько советов:
- Освободите свой график перед началом экзамена.
- Будьте готовы к случаю, если ваш сервер окажется Windows, а не Linux.
- Скачайте "Joplin" для заметок и "OBS" для записи экрана.
Код:
127.0.0.1 google.com
Я прошу вас сделать это, потому что домен, который они предоставляют, используется публично, и иногда ваш linux будет пытаться подключиться к тому домену вместо лаборатории.
Ознакомьтесь с курсами и лабораторными работами, предоставляемыми INE. Попробуйте написать отчет о recon по какому-нибудь домену (вы можете проверить hackerone), получив его поддомены, проанализировав технологии, которые они использовали, и т.д.
Reconnaissance
Прежде всего, добавьте расширение wappalyzer в свой firefox. После этого проверьте, нормально ли работает ваш amass, если нет, удалите его и переустановите с github. Составьте список веб-сайтов, которые предоставляют поддомен.Некоторые способы для получения поддоменов:
- Amass - особо советую, независимо от того, кто что говорит, это лучший инструмент для перечисления (enum) поддоменов
searchdns.netcraft.comdnsdumpster.comosint.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
Изображение [2]: SQL Injection - Stored (User-Agent)
Из названия лаборатории мы понимаем, что уязвимость находится в заголовке. Мы видим, что IP-адрес, дата и заголовок занесены в log. Это означает, что на самом деле у нас может быть возможность выполнить атаку SQL-инъекцией на все из них, но мы должны найти точку ввода. В данном случае нашей точкой ввода является заголовок User-Agent. Мы можем начать тестирование, добавив одинарную или двойную кавычку.
Изображение [3]: Обнаружение уязвимости
Мы видим, что есть ошибка MySQL, если это был бы bug bounty, нам пришлось бы остановиться здесь, потому что этой ошибки достаточно, чтобы доказать SQL-инъекцию (это зависит от правил платформы). Но это лабораторная работа, поэтому давайте подумаем о том, как выглядит запрос в серверной части. Я думаю, это выглядело бы примерно так:
SQL:
INSERT INTO Customers (Vremya, Agent, IP)
VALUES ('01.01.1990', 'XSSBot', '0.0.0.0');
В этом случае мы действительно можем вставить SQL-код вместо значения и получить ответ от сервера.
Изображение [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
Я думаю, что одна из замечательных вещей, которые мы можем сделать в этом случае, - это получить содержимое файла. Поэтому я буду использовать "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');
Изображение [6]: Используем запрос SELECT LOAD_FILE();
Изображение [7]: Результат запросa SELECT LOAD_FILE();
Нет никакого способа предсказать точный запрос, поскольку в серверной части возможно все. Просто включите свое воображение и работайте.
Что делать в случае, если что-то подобное будет в лаборатории?
Я, очевидно, понимаю, что нет никакого способа проверить все. Я знаю, что времени много, но человек может испытывать стресс, выполняя все это, и, возможно, SQL-инъекция даже не error-based, что усложнит ситуацию. Экзамены eLearnSecurity посвящены реальным ситуациям, которые могут произойти, они не направлены на то, чтобы доказать, что вы "крутой" хакер, как экзамены OffSec. Итак, в вашем случае я бы использовал Burp Suite Professional (когда я сдавал экзамен, я им не пользовался). Тогда я просто сохранял запрос в файле и отправлял его в sqlmap.
Есть классная шпаргалка, которая наверняка поможет вам:
https://book.hacktricks.xyz/pentesting-web/sql-injection/sqlmapCross-Site-Scripting
Вы должны понимать, как на самом деле работает XSS и что вы можете с ним сделать. Мощь уязвимости XSS исходит от javascript. Я советую вам проверить XSS keyloggerhttps://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-код
HTML:
<script>alert(1)</script>
Изображение [9]: Пробую alert()
JSFuck - это язык программирования на основе JavaScript и метод, используемый для написания кода на JavaScript, использующий всего шесть символов:
[ ] ( ) ! +. Мы собираемся использовать его для выполнения полезных нагрузок. Символы не могут быть ни прописными, ни строчными.
Изображение [10]: JSFuck
Изображение [11]: Xааакнули
Этот трюк сработал, но это не единственный способ сделать это.
Домашнее задание: Проверьте атрибут "src" тега "script".
SOAP API
У меня нет для этого никаких лабораторий, но я могу дать вам совет. Прежде всего, поймите, что при работе с API возможны любые уязвимости. Вы можете найти SQLi, XSS, IDOR, XXE и т.д. Все, что я могу вам здесь дать, - это дз.Домашнее задание: Проверьте файлы .wsdl и .disco, каково их назначение.
Как на самом деле написать report?
Первое, что вы должны понять, это то, что ценность вашего отчета зависит от содержащейся в нем информации. Но это не значит, что вы можете просто взять белую бумагу и вставить информацию. Это также не означает, что вы должны украшать свой отчет, как рождественскую елку. Отчеты имеют свою собственную структуру, она должна быть аккуратной.
Последнее редактирование: