Как проверить программу на уязвимость. Делаем компьютер неуязвимым. Самые уязвимые программы

Как проверить программу на уязвимость. Делаем компьютер неуязвимым. Самые уязвимые программы

16.02.2019

С математической точки зрения таксономия это древообразное построение при классификации набора каких-то объектов. По умолчанию в WordPress реализовано три классификации: категории записей (post categories), метки (тэги) записей (post tags) и категории ссылок (link categories). Но WordPress – система очень гибкая, и таксономии по умолчанию можно игнорировать, заменяя их своими классами.

Таксономии в WordPress присваиваются определенным типам записей. Такая wordpress таксономия может фильтровать записи и выводить на странице запроса таксономии только те, которые прописаны в функции (те, которые соответствуют определенной таксономии).

Вы можете создать любую произвольную таксономию, например, для произвольных записей, и реализовать на ее основе фильтрацию этих записей. Например, если произвольные записи — это «брюки», то произвольная таксономия определяет размер этих брюк, то есть – область использования. Вы можете теперь отсортировать брюки по размеру, или сразу выбрать все брюки с конкретным размером.

По умолчанию в любом шаблоне темы WordPress уже существует встроенная стандартная wp таксономия . Встроенные таксономии — это:

  1. Категории WordPress (category), которые обозначаются слагом ‘category’.
  2. Метки (тэги) (tag), которые обозначаются слагом ‘post_tag’.
  3. Ссылочные категории (link category), которые обозначаются слагом ‘link_category’.

Отдельно термы не имеют никакого функционального назначения.

Терм может работать только в контексте с таксономией, которая задается в таблице wp_term_taxonomy.

Если вы хотите добавить свои произвольные таксономии, то вам необходимо использовать функцию register_taxonomy() – она назначается в файле шаблона functions.php Вордпресс. Произвольная таксономия (Custom Taxonomy) создается чаще всего плагинами, которые самостоятельно встраивают эту функцию в шаблон. Вручную создать какую-то таксономию не каждый сможет – для этого нужно знать основы веб-программирования и устройство CMS WordPress, в частности

Терм таксономии (Term) – элемент, который относится к отдельной таксономии, и определяет значения или значение таксономии. Таким образом, одна таксономия может состоять из нескольких разных термов, и одна произвольная запись может ассоциироваться с несколькими термами одновременно. Так, стандартная таксономия «Категории» может включать в себя несколько термов с названиями «seo», «web», «commerce», которые означают названия категорий.

Иерархия в таксономии – это древовидная таксономия вордпресс , термы которой имеют потомков в виде других термов этой ветки таксономии. В качестве примера иерархической таксономии можно привести стандартную таксономию «Категории», которая всегда назначается стандартным записям.

Неиерархическая wordpress таксономия означает, что ее термы не имеют потомков. В качестве примера неиерархической таксономии можно показать стандартную таксономию «Метки», которая также присваивается стандартным записям.

Архив терма – это архивная страница archive.php, на которой отображаются все записи, которые относятся конкретному терму конкретной таксономии. Вызвать архив всех термов одной таксономии не получится, чтобы на странице отображались сразу все записи всех термов таксономии – такая функция в WordPress не предусмотрена.

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

Конкретный пример создания новых таксономий для медиафайлов в WordPress

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

Сначала откройте файл functions.php шаблона вашей темы. Можно вносить изменения прямо в админпанели, в редакторе WordPress. Лучше для определения таксономий создать плагин, потому что, поменяв шаблон темы, плагин сохранится и вам не нужно будет прописывать таксономии заново — файл functions.php останется неизменным.

Подготовка к созданию таксономии для медиафайлов

На этом этапе вам нужно отредактировать страницу медиафайлов – стандартный шаблон этой страницы беден, в нем не назначены ни метки записи (медиа), ни рубрики, ни таксономии.

Function wptp_add_categorxes_to_attachicents() (cegister_taxonoroy_for_object type("category", "attachment"); add_action("init" , "wptp_add_categorie»_to_attachments" };

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

Рубрики медиафайлов

Выбор рубрик нужно начинать с включения их для прикрепленных файлов. Делается это, как я уже объяснял, функцией register_taxonomy_for_object_type(). Просто добавьте в файл плагина или functions.php шаблона темы такой php код:

// apply tags to attachments function wptp_add_tags_to_attachments () { register_taxonomy_for_object_typo("post_tag", attachment"); } add_action("init" , "wptp_add_tags_to_attachments");

// register new taxonomy which applies to attachments function wptp_add_locatlon_taxonomy() { §labels = array(name" =>"Locations", singular_name"=>"Location", search_itcms "=>"Search Locations", all_ltems"=>"All Locations", parent_item"=>"Parent Location", parent_item_colon"=>"Parent Location:", edit_item"=>"Edit Location", update_item" =>"Update Location", add_new_item"=>"Add New Location", new_item_name"=>"New Location Name", menu_name" =>"Location", "labels" => $labels, "hierarchical" => true, "quety_vat" => "true", "rewrite" => "true", "show_admin_column" =>

Метки медиафайлов

Если вы предпочитаете оперировать с метками, или и с рубриками и метками, то, чтобы их создать, используйте ту же функцию. Добавьте в файл functions.php такой код:

// apply tags to attachments function wptp_add_tags_to_ attachments () { register _taxonomy_for object_type("post_tag", attachments"); } add_action ("init" , "wptp_add_tags_to_ attachments");

Теперь на странице редактирования медиафайлов вы увидите и метки.

Также это действие добавит колонку с метками и в библиотеке медиафайлов.

Создание собственной таксономии

Если вдруг существующие метки и рубрики не подходят для присвоения медиафайлам, то вы можете создать и зарегистрировать свою собственную таксономию. Для этого также используется параметр ‘attachment’, который применяется к типу записи.

К примеру, вам нужно сделать иерархическую таксономию под названием «Locations», и ваша задача — использовать ее для вывода всех изображений и классификации этих медиафайлов.

Использовав функцию register_taxonomy(), можно добавить в файл темы такой php код:

// register new taxonomy which applies to attachments function wptp_add_locatlon_taxonomy() { §labels = array(name" =>"Locations", singular_name"=>"Location", search_itcms "=>"Search Locations", all_ltems"=>"All Locations", parent_item"=>"Parent Location", parent_item_colon"=>"Parent Location:", edit_item"=>"Edit Location", update_item" =>"Update Location", add_new_item"=>"Add New Location", new_item_name"=>"New Location Name", menu_name" =>"Location", "labels" => $labels, "hierarchical" => true, "quety_vat" => "true", "rewrite" => "true", "show_admin_column" => "true",); register taxonomy("location", "attachment", $args); add_action("init", "wptp_add_location_taxonomy");

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

А если возникла необходимость использовать таксономию для другого типа контента? Тогда вам нужно заменить в функции register_taxonomy() параметр ‘attachment’ на массив, содержащий все сокращения типов контента, которые вам нужно добавить:

Register taxonomy("location", array ("attachment", "post"), $args);

Обновите страницу и увидите, как она изменилась после редактирования медиафайлов. Также вы увидите созданную таксономию:

Так как в коде был аргумент ‘show_admin_column’, он тоже будет выводиться на странице библиотеки медиафайлов:

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

С помощь этих сервисов можно самопровериться на различные уязвимости в браузерах,плагинах, антивирусах, Java…. После проверки сразу) можно увидеть отчет о имеющихся уязвимостях и обновить (кроме 4-го)ПО до последних возможной версии.

Бесплатный онлайн сервис проверки безопасности браузера и плагинов, поиская их уязвимостей, разработка компании Positive Technologies. Если SurfPatrol обнаруживает небезопасные версии плагинов/браузера, то это означает потенциальную опасность для проникновения вредоносного кода на компьютер пользователя — в таком случае сревис предлагает скачать последние версии браузера или плагина.

Смысл тот же что и surfpatrol, но у BrowserCheck больший охват проверяемого ПО - от операционной системы и браузера до плагинов и дополнений. BrowserCheck поддерживает большинство современных конфигураций, начиная с Windows 2000 и выше, а также Mac OS X. После проверки вы увидите интуитивно понятный отчет. При обнаружении проблем BrowserCheck предложит перейти по ссылке и установить необходимые обновления.

F-Secure Health Check представляет собой бесплатный онлайн сервис, который определяет состояние защиты компьютера и также позволяет устранить возможные проблемы с безопасностью. После проверки подскажет нужно ли чтото обновить или нет.Пришлось повозиться и честно говоря мне этот сервис НЕнравится. Для его использования необходимо установитьActive X компонент, потом Java плагин и для их установки чтобы (!) проверить насколько безопасно настроена моя ОС и какие есть не устраненные уязвимости нужно отключить все что можно — антивирус, файрвол, политику SRP ! Это же епта гениальнО!!! о_0 Тестировал сервис в IE , Opera, Chrome. Во всех браузерах ведет себя по разному, каждый со своими глюками. Полезность данного сервиса под вопросом.

SQL инъекция - это один из самых доступных способов взлома сайта.
Суть таких инъекций – внедрение в данные (передаваемые через GET, POST запросы или значения Cookie) произвольного SQL кода. Если сайт уязвим и выполняет такие инъекции, то по сути есть возможность творить с БД (чаще всего это MySQL) что угодно.

Как вычислить уязвимость, позволяющую внедрять SQL инъекции?

Довольно легко. Например, есть тестовый сайт test.ru . На сайте выводится список новостей, с возможностью детального просомтра. Адрес страницы с детальным описанием новости выглядит так: test.ru/?detail=1 . Т.е через GET запрос переменная detail передаёт значение 1 (которое является идентификатором записи в табице новостей).

Изменяем GET запрос на?detail=1" или?detail=1" . Далее пробуем передавать эти запросы серверу, т.е заходим на test.ru/?detail=1 " или на test.ru/?detail=1 ".

Если при заходе на данные страницы появляется ошибка, значит сайт уязвим на SQL инъекции.

Пример ошибки, возникающей при проверке уязвимости

Возможные SQL инъекции (SQL внедрения)
1) Наиболее простые - сворачивание условия WHERE к истиностному результату при любых значениях параметров.
2) Присоединение к запросу результатов другого запроса. Делается это через оператор UNION.
3) Закомментирование части запроса.

Практика. Варианты взлома сайта с уязвимостью на SQL внедрения

Итак, у нас есть уже упоминавшийся сайт test.ru . В базе хранится 4 новости, 3 из которых выводятся. Разрешение на публикацию новости зависит от парметра public (если параметр содержит значение 1, то новость публикуется).

Список новостей, разрешённых к публикации

При обращении к странице test.ru/?detail=4 , которая должна выводить четвёртую новость появляется ошибка – новость не найдена.
В нашем случае новость существует, но она запрещена к публикации.

Но так как мы уже проверяли сайт на уязвимость и он выдавал ошибку БД, то пробуем перебирать возможные варианты запросов.
В адресной строке плюс (+) выполняет роль пробела, так что не пугайтесь

Тестирую следующие варианты:
test.ru/?detail=4+OR+1
test.ru/?detail=4+--
test.ru/?detail=4+UNION+SELECT+ *+FROM+news+WHERE+id=4

В итоге удача улыбнулась и два запроса (первый и третий) вернули нам детальное описание четвёртой новости

Разбор примера изнутри

За получение детального описания новости отвечает блок кода:
$detail_id=$_GET["detail"];
$zapros="SELECT * FROM `$table_news` WHERE `public`="1" AND `id`=$detail_id ORDER BY `position` DESC";

Мало того, что $detail_id получает значение без какой либо обработки, так ещё и конструкция `id`=$detail_id написана криво, лучше придерживаться `id`="$detail_id" (т.е сравниваемое значение писать в прямых апострофах).

Глядя на запрос, получаемый при обращении к странице через test.ru/?detail=4+OR+1

SELECT * FROM `news` WHERE `public`="1" AND `id`=4 OR 1 ORDER BY `position` DESC

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

Разбираем запрос, сформированный при обращении через test.ru/?detail=4+UNION+SELECT+*+FROM+news+WHERE+id=4 .

Тут название таблицы с новостями (в нашем случае это news) бралось логическим перебором.
Итак, выполнился запрос SELECT * FROM `news` WHERE `public`="1" AND `id`=4 UNION SELECT * FROM news WHERE id=4 ORDER BY `position` DESC . К нулевому результату первой части запроса (до UNION) присоединился результат второй части (после UNION), вернувшей детальное описание 4-ой новости.

Защита от SQL инъекций (SQL внедрений)

Защита от взлома сводится к базовому правилу «доверяй, но проверяй». Проверять нужно всё – числа, строки, даты, данные в специальных форматах.
Числа
Для проверки переменной на числовое значение используется функция is_numeric(n);, которая вернёт true, если параметр n - число, и false в противном случае.
Так же можно не проверять значение на число, а вручную переопределить тип. Вот пример, переопределяющий значение $id, полученное от $_GET["id_news"] в значение целочисленного типа (в целое число):
$id=(int)$_GET["id_news"];
Строки
Большинство взломов через SQL происходят по причине нахождения в строках «необезвреженных» кавычек, апострофов и других специальных символов. Для такого обезвреживания нужно использовать функцию addslashes($str);, которая возвращает строку $str с добавленным обратным слешем (\) перед каждым специальным символом. Данный процесс называется экранизацией.

$a="пример текста с апострофом " ";
echo addslashes($a); //будет выведено: пример текста с апострофом \"

Кроме этого существуют две функции, созданные именно для экранизации строк, используемых в SQL выражениях.
Это mysql_escape_string($str); и mysql_real_escape_string($str);.

Первая не учитывает кодировку соединения с БД и может быть обойдена, а вот вторая её учитывает и абсолютно безопасна. mysql_real_escape_string($str); возвращает строку $str с добавленным обратным слешем к следующим символам: \x00, \n, \r, \, ", " и \x1a .

Магические кавычки

Магические кавычки – эффект автоматической замены кавычки на обратный слэш (\) и кавычку при операциях ввода/вывода. В некоторых конфигурациях PHP этот параметр включён, а в некоторых нет. Для того, что бы избежать двойного экранизирования символов и заэкранизировать данные по-нормальному через mysql_real_escape_string($str);, необходимо убрать автоматические проставленные обратные слеши (если магические кавычки включены).

Проверка включённости магических кавычек для данных получаемых из GET, POST или Куков организуется через функцию get_magic_quotes_gpc(); (возвращает 1 – если магические кавычки включены, 0 – если отключены).

Если магические кавычки вкючены (т.е обратные слеши добавляеются) и такое встречается чаще, то их нужно убрать. Это делается через функцию stripslashes($str); (возвращает строку $str без обратных слешей у кавычек и прямых апострофов).

В закючении привожу код с полной экранизацией строк для записи в БД

If(get_magic_quotes_gpc()==1)
{
$element_title=stripslashes(trim($_POST["element_title"]));
$element_text=stripslashes(trim($_POST["element_text"]));
$element_date=stripslashes(trim($_POST["element_date"]));
}
else
{
$element_title=trim($_POST["element_title"]);
$element_text=trim($_POST["element_text"]);
$element_date=trim($_POST["element_date"]);
}

$element_title=mysql_real_escape_string($element_title);
$element_text=mysql_real_escape_string($element_text);
$element_date=mysql_real_escape_string($element_date);

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

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

Нужно всегда проверять свой сайт (после изменений в коде или очередного обновления cms) на уязвимость на специальных сервисах (find-xss.net ) или с помощью программ (XSpider , MaxPatrol — платные) тем более это не займет так много вашего времени, а пользы может принести немало. Бесплатная программа SQLFury проводит тест-проверка на уязвимость сайта от SQL инъекций.

Основные возможности программы-сканера SQLFury :

Поддержка баз данных

  • MySQL
  • PostgreSQL
  • Microsoft SQL Server
  • Oracle

Извлечение данных из базы

  • Определяет версию базы данных
  • Определяет пользователя базы данных
  • Определяет всех пользователей из базы данных
  • Определяет имя базы данных
  • имена всех баз данных
  • имена таблиц
  • имена колонок

Атаки с помощью SQL инъекций являются одним из наиболее распространенных видов атак на сайты. Программа SQLFury первая бесплатная программа для возможности проверить сайт на уязвимость, причем очень быстрая (по ней примерно можно узнать и время загрузки проверяемого сайта). Для работы программы требуется установка приложения Adobe Air, поэтому работает на всех системах. Сделал портабельную версию программы, стало удобно пользоваться.

Еще один бесплатный инструмент для проверки сайта на уязвимость от SQL инъекций- плагин для Firefox- SQL Injection 1.2 . Плагин позволяет проверить весь контент на страницах, на наличие SQL инъекций. Рекомендуется всем проверится и если не пройдете тест, то срочно нужно подумать о безопасности своего сайта.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows