15 Фев, 2023

Внедрение кода

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

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

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

Пример уязвимого кода на разных языках программирования:

в Python:

				
					import os

user_input = input("Enter a file name: ")
os.system("cat " + user_input)
				
			


В этом коде Python os.system() функция используется для выполнения команды, введенной пользователем, без какой-либо проверки или очистки. Злоумышленник может внедрить вредоносный код в пользовательский ввод для выполнения произвольных команд в базовой системе.

Чтобы предотвратить внедрение кода в этот код, вы должны проверить введенные пользователем данные и использовать subprocess модуль вместо os.system().

• в Java:

				
					String query = "SELECT * FROM users WHERE username = '" + userInput + "'";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);

				
			


В этом Java-коде пользовательский ввод объединяется в строку запроса SQL без какой-либо проверки или очистки. Злоумышленник может внедрить вредоносные инструкции SQL в пользовательский ввод для просмотра или изменения конфиденциальных данных в базе данных приложения.

Чтобы предотвратить внедрение SQL в этот код, вы должны использовать параметризованные запросы вместо объединения пользовательских данных в строку запроса SQL.

• в PHP:

				
					$user_input = $_GET['input'];
eval("echo $user_input;");

				
			


В этом PHP-коде eval() функция используется для выполнения произвольного кода, введенного пользователем. Злоумышленник может внедрить вредоносный код в пользовательский ввод для выполнения произвольных команд в базовой системе.

Чтобы предотвратить внедрение кода в этот код, вам следует избегать использования eval() выполняйте функцию и проверяйте вводимые пользователем данные перед их выполнением.

• в C#:

				
					string command = "ping " + userInput;
Process.Start("cmd.exe", "/c " + command);

				
			


В этом коде на C # Process.Start() функция используется для выполнения команды, введенной пользователем, без какой-либо проверки или очистки. Злоумышленник может внедрить вредоносный код в пользовательский ввод для выполнения произвольных команд в базовой системе.

Чтобы предотвратить внедрение кода в этот код, вы должны проверить введенные пользователем данные и использовать ProcessStartInfo класс вместо Process.Start().

Примеры внедрения кода эксплуатации

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

				
					SELECT * FROM users WHERE username = '" + userInput + "'";
				
			


Злоумышленник может воспользоваться этой уязвимостью, введя вредоносный ввод, например:

				
					' OR '1'='1

				
			


Это изменило бы исходный запрос на:

				
					SELECT * FROM users WHERE username = '' OR '1'='1';

				
			


Который вернул бы все записи из users таблица, включающая конфиденциальную информацию, такую как имена пользователей и пароли.

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

				
					exec("ping " + userInput);

				
			


Злоумышленник может воспользоваться этой уязвимостью, введя вредоносный ввод, например:

				
					127.0.0.1; rm -rf /

				
			


Это приведет к выполнению следующей команды в базовой системе:

				
					ping 127.0.0.1; rm -rf /

				
			


который удалит все файлы в корневом каталоге системы.

• Межсайтовый скриптинг (XSS) Предположим, что веб-приложение использует уязвимую функцию, которая выводит пользовательский ввод без какой-либо проверки или очистки, как в следующем примере:

				
					echo "Hello, " + userInput + "!";

				
			


Злоумышленник может воспользоваться этой уязвимостью, введя вредоносный ввод, например:

				
					<script>alert('XSS')</script>

				
			


Это может привести к внедрению вредоносного скрипта на веб-страницу и выполнению его в контексте браузера пользователя, что может привести к краже сеансовых файлов cookie или выполнению других вредоносных действий.

Методы повышения привилегий для внедрения кода

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

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

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

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

Общая методология и контрольный список для внедрения кода

Методология:

  1. Определение точек ввода пользователя
    Первым шагом является определение всех точек в приложении, где принимается пользовательский ввод. Сюда входят веб-формы, поля поиска и другие поля ввода.

  2. Тест на SQL-инъекцию
    Чтобы проверить наличие уязвимостей при внедрении SQL, попробуйте ввести инструкции SQL в поля пользовательского ввода, чтобы проверить, выполняются ли они приложением. Это может включать использование специальных символов, таких как кавычки и точки с запятой, для изменения поведения SQL-запроса.

  3. Тест на ввод команды
    Чтобы проверить уязвимости при внедрении команд, попробуйте ввести команды командной строки в поля ввода пользователя, чтобы проверить, выполняются ли они приложением. Это может включать использование специальных символов, таких как переходы и точки с запятой, для объединения команд в цепочку.

  4. Тест на межсайтовый скриптинг (XSS)
    Чтобы проверить уязвимости межсайтовых скриптов, попробуйте внедрить вредоносные скрипты в поля ввода пользователя, чтобы проверить, выполняются ли они приложением. Это может включать использование специальных символов, таких как угловые скобки и кавычки, для внедрения сценариев, которые крадут учетные данные пользователя или выполняют другие вредоносные действия.

  5. Тест на внедрение кода на других языках
    Если приложение использует другие языки, такие как PHP или Java, важно проверить уязвимости при внедрении кода и на этих языках. Это может включать тестирование eval() и аналогичных функций, которые могут использоваться для выполнения произвольного кода.

  6. Используйте автоматизированные инструменты тестирования
    Существует несколько доступных инструментов автоматического тестирования, которые могут помочь выявить уязвимости при внедрении кода в программное обеспечение. Эти инструменты могут имитировать различные сценарии атак и выявлять уязвимости, которые может быть трудно обнаружить с помощью ручного тестирования.

  7. Регулярно тестируйте и обновляйте
    Важно регулярно проверять приложение на наличие уязвимостей при внедрении кода и обновлять программное обеспечение по мере необходимости для устранения любых выявленных уязвимостей. Это может включать внедрение исправлений безопасности и следование методам безопасного кодирования.

Контрольный список:

  1. Определите все точки ввода пользователя в приложении.

  2. Проверьте уязвимости SQL-инъекций, введя инструкции SQL в поля ввода пользователя.

  3. Проверьте уязвимости при внедрении команд, введя команды командной строки в поля ввода пользователя.

  4. Проверяйте уязвимости межсайтовых скриптов, внедряя вредоносные скрипты в поля ввода пользователя.

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

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

  7. Регулярно тестируйте и обновляйте приложение, чтобы устранить любые выявленные уязвимости.

  8. Проверьте правильность проверки и очистки всего пользовательского ввода.

  9. Проверьте использование параметризованных запросов для предотвращения уязвимостей SQL-инъекций.

  10. Проверьте правильность кодирования и экранирования пользовательского ввода, чтобы предотвратить уязвимости межсайтовых сценариев.

  11. Проверьте, чтобы избежать опасных функций, таких как eval(), system(), и exec().

  12. Проверьте правильность реализации наименьших привилегий, чтобы предотвратить уязвимости с повышением привилегий.

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

  14. Проверяйте наличие регулярных проверок безопасности для выявления и устранения уязвимостей.

Набор инструментов для эксплуатации Внедрение кода

Ручные Инструменты:

  • Burp Suite: Популярный инструмент перехвата прокси-серверов для тестирования безопасности веб-приложений, который можно использовать для выявления и использования уязвимостей при внедрении кода.

  • Sqlmap: Мощный инструмент с открытым исходным кодом, который автоматизирует процесс обнаружения и использования уязвимостей SQL-инъекций в веб-приложениях.

  • Metasploit: Широко используемый фреймворк для разработки, тестирования и выполнения эксплойтов, в том числе связанных с уязвимостями при внедрении кода.

  • PowerShell: Оболочка командной строки и язык сценариев, используемый в основном в системах Windows, который может использоваться для выполнения произвольного кода и повышения привилегий.

  • Netcat: Универсальная сетевая утилита, которую можно использовать для создания сетевых подключений и управления ими, в том числе для выполнения команд в удаленных системах.

  • Nmap: Популярный инструмент отображения сети, который может быть использован для выявления потенциальных целей для атак с использованием кода.

  • Immunity Debugger: Мощный отладчик, который можно использовать для анализа и использования уязвимостей программного обеспечения, в том числе связанных с внедрением кода.

  • IDA Pro: Популярный дизассемблер и отладчик, который можно использовать для анализа двоичного кода на наличие уязвимостей, в том числе связанных с внедрением кода.

  • OllyDbg: Популярный отладчик для систем Windows, который может использоваться для анализа и использования уязвимостей программного обеспечения, в том числе связанных с внедрением кода.

  • GDB: Популярный отладчик для Unix и Unix-подобных систем, который может использоваться для анализа и использования уязвимостей программного обеспечения, в том числе связанных с внедрением кода.

Автоматизированные инструменты:

  • Nessus: Популярный сканер уязвимостей, который можно использовать для выявления уязвимостей, связанных с внедрением кода, среди других проблем безопасности.

  • Acunetix: Сканер безопасности веб-приложений, который, помимо прочего, может использоваться для выявления и использования уязвимостей, связанных с внедрением кода.

  • AppScan: Сканер безопасности веб-приложений, который, помимо прочего, может использоваться для выявления и использования уязвимостей, связанных с внедрением кода.

  • Zed Attack Proxy: Сканер безопасности веб-приложений с открытым исходным кодом, который, помимо прочего, может использоваться для выявления и использования уязвимостей, связанных с внедрением кода.

  • Arachni: Сканер безопасности веб-приложений с открытым исходным кодом, который, помимо прочего, может использоваться для выявления и использования уязвимостей, связанных с внедрением кода.

  • OpenVAS: Сканер уязвимостей с открытым исходным кодом, который может использоваться, среди прочего, для выявления уязвимостей при внедрении кода.

  • Skipfish: Сканер безопасности веб-приложений с открытым исходным кодом, который, помимо прочего, может использоваться для выявления и использования уязвимостей, связанных с внедрением кода.

  • Nikto: Сканер веб-сервера с открытым исходным кодом, который можно использовать для выявления потенциальных уязвимостей, включая уязвимости при внедрении кода.

  • Vega: Сканер уязвимостей веб-приложений с открытым исходным кодом, который, помимо прочего, может использоваться для выявления и использования уязвимостей, связанных с внедрением кода.

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

Средний балл CVSS стек Внедрение кода

Общая система оценки уязвимостей (CVSS) представляет собой основу для оценки серьезности уязвимостей программного обеспечения по шкале от 0 до 10, причем 10 являются наиболее серьезными. Оценка CVSS учитывает различные факторы, включая потенциальное воздействие уязвимости и простоту ее использования.

Уязвимости при внедрении кода - это широкая категория уязвимостей, которые могут существовать во многих различных типах программного обеспечения и могут варьироваться по степени серьезности от низкой до критической. Оценка CVSS для уязвимости при внедрении кода зависит от нескольких факторов, таких как тип уязвимости при внедрении кода, потенциальное воздействие уязвимости и вероятность использования уязвимости.

Например, уязвимости SQL-инъекции, которая позволяет злоумышленнику считывать конфиденциальную информацию из базы данных, может быть присвоена оценка CVSS 7 или 8, в то время как уязвимости удаленного выполнения кода, которая позволяет злоумышленнику получить контроль над сервером, может быть присвоена оценка CVSS 9 или 10.

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

Общее перечисление слабых мест (CWE)

CWE-78: неправильная нейтрализация специальных элементов, используемых в команде операционной системы – этот CWE относится к уязвимостям, когда приложение позволяет передавать пользовательский ввод в команду операционной системы без надлежащей проверки или фильтрации. Злоумышленник может использовать это для выполнения произвольных команд в уязвимой системе.

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

CWE-98: Неправильный контроль имени файла для инструкции Include / Require в программе PHP – Это CWE относится конкретно к программам PHP, которые включают или требуют внешние файлы. Если имя файла не проверено должным образом, злоумышленник может предоставить вредоносный файл, который может выполнять произвольный код на сервере.

CWE-116: неправильное кодирование или экранирование выходных данных – этот CWE относится к уязвимостям, при которых приложению не удается должным образом кодировать или экранировать выходные данные, содержащие пользовательский ввод. Это может привести к целому ряду атак, включая межсайтовый скриптинг (XSS) и другие инъекционные атаки.

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

CWE-434: неограниченная загрузка файла с опасным типом – этот CWE относится к уязвимостям, при которых приложение позволяет пользователям загружать файлы без надлежащей проверки типа файла или содержимого. Злоумышленник может загрузить файл, содержащий вредоносный код, который затем может быть выполнен на сервере.

Топ-10 CVE, связанных с внедрением кода

CVE-2023-25719 – Управление ConnectWise до 22.9.10032 (ранее известное как ScreenConnect) не позволяет проверить предоставленные пользователем параметры, такие как Bin / ConnectWiseControl.Client.exe параметр h. Это приводит к отражению данных и внедрению вредоносного кода в загруженный исполняемый файл. Исполняемый файл может использоваться для выполнения вредоносных запросов или в качестве вектора отказа в обслуживании.

CVE-2023-23619 – Modelina - это библиотека для создания моделей данных на основе входных данных, таких как документы AsyncAPI, OpenAPI или схемы JSON. Версии до версии 1.0.0 уязвимы для внедрения кода. Эта проблема затрагивает всех, кто использует настройки по умолчанию и / или не обрабатывает функциональность самостоятельно. Эта проблема была частично устранена в версии 1.0.0. В рекомендациях по безопасности GitHub (GHSA) сопровождающего отмечается, что “Невозможно полностью защититься от этого, поскольку пользователи имеют доступ к исходной необработанной информации. Однако, начиная с версии 1, если вы получаете доступ только к ограниченным моделям, вы не столкнетесь с этой проблемой. Дальнейшие подобные ситуации РАССМАТРИВАЮТСЯ НЕ как проблема безопасности, а как преднамеренное поведение ”. Предлагаемый обходной путь от сопровождающих - это “Полностью настраиваемые пресеты, которые изменяют весь процесс рендеринга, который затем может избежать пользовательского ввода”.

CVE-2023-23551 – Устройства Control By Web X-600M запускают сценарии Lua и уязвимы для внедрения кода, что может позволить злоумышленнику удаленно выполнять произвольный код.

CVE-2023-23488 – Плагин платного членства Pro WordPress версии

CVE-2023-22643 – Неправильная нейтрализация специальных элементов, используемых в команде ОС ("Внедрение команды ОС") уязвимость в libzypp-plugin-appdata SUSE Linux Enterprise Server для SAP 15-SP3; openSUSE Leap 15.4 позволяет злоумышленникам, которые могут обмануть пользователей, использовать специально созданные настройки REPO_ALIAS, REPO_TYPE или REPO_METADATA_PATH для выполнения кода как корень. Эта проблема затрагивает: SUSE Linux Enterprise Server для SAP 15-SP3 версии libzypp-plugin-appdata до версии 1.0.1+git.20180426. openSUSE Leap 15.4 версии libzypp-plugin-appdata до версии 1.0.1+git.20180426.

CVE-2023-22598 – В сетях InRouter 302, предшествующих версии IR302 V3.5.56, и InRouter 615, предшествующих версии InRouter6XX-S-V2.3.0.r5542, содержат уязвимость CWE-78: неправильная нейтрализация специальных элементов, используемых в команде ОС (‘Внедрение команды ОС’). Неавторизованный пользователь с привилегированным доступом к локальному веб-интерфейсу или облачной учетной записи, управляющей уязвимыми устройствами, может отправить специально созданный файл обновления конфигурации, чтобы получить root-доступ. Это может привести к удаленному выполнению кода с правами суперпользователя.

CVE-2023-0792 – Внедрение кода в репозиторий GitHub thorsten/ phpmyfaq до версии 3.1.11.

CVE-2023-0788 – Внедрение кода в репозиторий GitHub thorsten/ phpmyfaq до версии 3.1.11.

CVE-2023-0774 – В приложении SourceCodester Medical Certificate Generator App 1.0 была обнаружена уязвимость, классифицированная как критическая. Эта уязвимость затрагивает неизвестный код файла action.php . Манипулирование аргументом lastname приводит к sql-инъекции. Атака может быть инициирована удаленно. Эксплойт был раскрыт общественности и может быть использован. VDB-220558 - это идентификатор, присвоенный этой уязвимости.

CVE-2023-0671 – Внедрение кода в репозиторий GitHub froxlor / froxlor до версии 2.0.10.

Внедрение кода подвиги

  • Атаки с использованием SQL-инъекций – Этот тип атаки включает внедрение SQL-кода в поля ввода приложения, что может позволить злоумышленнику выполнять несанкционированные SQL-запросы и потенциально получить доступ к конфиденциальным данным или даже получить контроль над уязвимой системой.

  • Атаки с использованием командных инъекций – Этот тип атаки включает внедрение вредоносного кода в поля ввода командной строки приложения, что может позволить злоумышленнику выполнять произвольные команды в уязвимой системе.

  • Атаки с использованием межсайтовых сценариев (XSS) – Этот тип атаки включает внедрение вредоносного кода в поля вывода приложения, такие как текстовые поля или URL-адреса, что может позволить злоумышленнику выполнить произвольный код в браузере жертвы.

  • Атаки на удаленное выполнение кода (RCE) – Этот тип атаки включает внедрение вредоносного кода в поля ввода приложения, что может позволить злоумышленнику выполнить произвольный код в уязвимой системе и потенциально получить полный контроль над ней.

  • Атаки с внедрением кода в фреймворки веб-приложений – Было обнаружено, что многие фреймворки веб-приложений уязвимы для атак с использованием кода, таких как фреймворк Java Struts 2 и фреймворк Ruby on Rails. В этих случаях злоумышленники могут использовать уязвимости в самой платформе, чтобы внедрить вредоносный код в приложение.

  • Атаки на включение файлов – Этот тип атаки включает внедрение вредоносного кода в поля ввода приложения, что может позволить злоумышленнику включать и запускать произвольные файлы в уязвимой системе.

Практикуясь в тестировании на Внедрение кода

  1. Настройка среды тестирования – Создайте тестовую среду, имитирующую вашу производственную среду. Это может включать веб-приложения, API и другое программное обеспечение, используемое вашей организацией.

  2. Узнайте о распространенных уязвимостях при внедрении кода – Ознакомьтесь с различными типами уязвимостей, связанных с внедрением кода, включая SQL-инъекцию, командную инъекцию и атаки с использованием межсайтовых сценариев (XSS).

  3. Используйте автоматизированные инструменты тестирования – Существует множество доступных автоматизированных инструментов, которые могут помочь вам выявить уязвимости при внедрении кода в ваши приложения. Эти инструменты могут помочь вам найти уязвимости быстрее и эффективнее, чем ручное тестирование.

  4. Практикуйте ручное тестирование – Важно также практиковать ручные методы тестирования, поскольку автоматизированные инструменты не всегда способны обнаружить все типы уязвимостей. Это может включать ручную проверку полей ввода и других областей вашего приложения на наличие уязвимостей.

  5. Участвуйте в программах вознаграждения за ошибки – Многие компании предлагают программы вознаграждения за ошибки, которые вознаграждают людей за обнаружение уязвимостей в их приложениях. Участие в этих программах может дать вам возможность попрактиковаться в тестировании уязвимостей при внедрении кода и получить отзывы о ваших навыках тестирования.

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

Для изучения Внедрение кода

Онлайн-курсы – Доступно множество онлайн-курсов, посвященных внедрению кода и смежным темам. Эти курсы могут обеспечить структурированный процесс обучения и могут предлагать практические упражнения и лабораторные работы, которые помогут вам попрактиковаться.

Книги – Доступно несколько книг, посвященных внедрению кода и другим темам безопасности приложений. Эти книги могут предоставить подробную информацию об уязвимостях, связанных с внедрением кода, а также о том, как их предотвращать и смягчать.

Онлайн-ресурсы – Существует множество доступных онлайн-ресурсов, посвященных внедрению кода, включая блоги, статьи и учебные пособия. Эти ресурсы могут предоставлять актуальную информацию о последних угрозах и уязвимостях, связанных с внедрением кода.

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

Практический опыт – Практика тестирования уязвимостей при внедрении кода и участие в программах по исправлению ошибок могут дать ценный практический опыт и помочь вам улучшить свои навыки.

Книги с обзором Внедрение кода

“Руководство хакера веб-приложений: поиск и использование недостатков безопасности” автор: Дэффидд Штуттард и Маркус Пинто – Эта книга охватывает широкий спектр вопросов безопасности приложений, включая внедрение кода.

“Black Hat Python: программирование на Python для хакеров и пентестеров” автор: Джастин Сейтц – Эта книга учит читателей, как использовать Python для взлома и тестирования на проникновение, включая атаки с использованием кода.

“Взлом серой шляпы: руководство этичного хакера” автор: Аллен Харпер, Дэниел Регаладо и Райан Линн – В этой книге рассматриваются различные методы взлома, включая внедрение кода, и способы защиты от них.

“Запутанная сеть: руководство по обеспечению безопасности современных веб-приложений” Михал Залевский – Эта книга посвящена безопасности веб-приложений, включая атаки с использованием кода и способы их предотвращения.

“Тестирование на проникновение: практическое введение во взлом” автор Джорджия Вайдман – Эта книга представляет собой практическое введение в тестирование на проникновение и охватывает различные типы атак, включая внедрение кода.

“Хакерство: искусство эксплуатации” Джон Эриксон – Эта книга учит читателей, как находить и использовать уязвимости в компьютерных системах, включая атаки с использованием кода.

“Безопасность веб-приложений: руководство для начинающих” Брайан Салливан и Винсент Лью – Эта книга представляет собой введение в безопасность веб-приложений, включая уязвимости при внедрении кода и способы их предотвращения.

“Безопасное кодирование на C и C ++” Роберт Сикорд – Эта книга содержит рекомендации по написанию безопасного кода на C и C ++, включая рекомендации по предотвращению атак с использованием кода.

“Атаки и защита с использованием SQL-инъекций” автор: Джастин Кларк – Эта книга посвящена атакам с использованием SQL-инъекций, распространенному типу уязвимости при внедрении кода.

“Основы взлома и тестирования на проникновение: этичный взлом и тестирование на проникновение стали проще” автор: Патрик Энгебретсон – Эта книга представляет собой введение во взлом и тестирование на проникновение, включая внедрение кода и другие типы атак.

Список полезных нагрузок Внедрение кода

  1. Базовая инъекция: ‘; DROP TABLE users; —

  2. Впрыск на основе соединения: ‘ UNION SELECT 1,2,3 —

  3. Инъекция на основе ошибок: ‘ AND 1=(SELECT COUNT(*) FROM tabname); —

  4. Инъекция, основанная на времени: ‘ AND SLEEP(10); —

  5. Инъекция на основе логических значений: ‘ OR 1=1; —

  6. Внеполосная инъекция: ‘); EXEC xp_cmdshell(‘ping 8.8.8.8’); —

  7. Внедрение XML-кода: ‘; SELECT * FROM OPENXML(@idoc, ‘/doc/@*’) —

  8. Инъекция JSON: { “$ne”: “1” }

  9. Внедрение LDAP: )(&(objectClass=person)(userPassword=))(|(uid=admin))

  10. Внедрение XPath: ‘ or 1=1 or ”=’

Как защититься от Внедрение кода

  1. Проверка входных данных:
    Убедитесь, что все вводимые пользователем данные должным образом проверены и очищены. Это может помочь предотвратить внедрение вредоносного кода в ваше приложение.

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

  3. Кодирование:
    Используйте методы кодирования, такие как кодирование сущностей HTML, для предотвращения атак с внедрением скриптов и уязвимостей межсайтового скриптинга (XSS).

  4. Контроль доступа:
    Внедрите механизмы контроля доступа, чтобы ограничить доступ пользователей к определенным частям вашего приложения. Это может помочь предотвратить внедрение вредоносного кода неавторизованными пользователями.

  5. Регулярные обновления:
    Обновляйте свое программное обеспечение с помощью последних исправлений и обновлений безопасности. Это может помочь предотвратить использование известных уязвимостей, включая внедрение кода.

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

  7. Используйте брандмауэр веб-приложений:
    WAF может помочь защитить ваше приложение от широкого спектра атак, включая внедрение кода.

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

Заключение

Внедрение кода это серьезная и распространенная уязвимость, которая может позволить злоумышленникам выполнять вредоносный код в системе или приложении. Его можно использовать различными способами, включая внедрение SQL, межсайтовый скриптинг (XSS) и внедрение команд. Внедрение кода может привести к краже данных, повреждению систем и приложений и другим угрозам безопасности.

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

Другие Услуги

Готовы к безопасности?

Связаться с нами