| |
 Мы будем Вам признательны, если Вы поддержите проект Open SLAED и используя Ваши возможности, разместите наш пресс-релиз на страницах своих сайтов, проектов, форумов, блогов. Текст пресс-релиза, возможно, видоизменить под Ваш формат, не искажая смысл. Пресс-релиз можно взять на данной странице. |
|
Набор из двух центральных блоков: Files и Pages.
В блоке файлы отображаются последние добавленные файлы и самые скачиваемые. Отображается количество скачиваний (для тех и других). Показывается общее количество файлов хранящееся в файловом архиве и общее количество произведенных скачиваний.
В блоке страниц также отображаются последние добавленные документы и самые читаемые. Рядом выводится количество прочтений каждого документа.
- Возможность настраивать количество выводимых строк*
- Настройки длины названия после чего оно будет обрезано*
* настройки производятся правкой двух строк в самих файлах
В блоках использованы наработки многих блоко-мейкеров за выражаю им свою благодарность.
Как выглядят блоки можно посмотреть на сайте: EmuGames.ru |
|
|
Задача данного анализа
В ходе исследования ставилась задача оценить степень защищенности SLAED CMS от возможных внешних сетевых атак. Другими словами, оценивалась "хакероустойчивость" системы. Вся информация о попытках взлома записывалась в лог-файл.
Настройки системы безопасности
Не использовались никакие дополнительные варианты защиты по средствам сервера. Были установлены стандартные настройки системы безопасности SLAED CMS.
• Запретить передачу ссылок через GET? - Нет
• Запретить передачу ссылок через POST? - Нет
• Сообщать о нападениях на E-Mail? - Да
• Вести статистику нападений? - Да
• Блокировать нападающих? - Нет
Общий анализ защищённости
Анализ проводился в автоматическом режиме с использованием базы данных актуальных уязвимостей используемых в сети. Сканирование и манипуляция атак производилась по средствам переменных GET, POST, с использованием Cookies, а так же с попытками загрузки сторонних скриптов в директорию сайта. В общей сложности было произведено порядка 300 всевозможных вариантов атак.
Статистика нападений
Привожу примеры некоторых видов атак, которые были использованы при манипуляции нападений.
---
Запрещенное действие: HTML in GET - file = viewtopicXSS@<xscript>XSS</xscript>.com
IP Адрес: 84.136.253.95
Пользователь: Гость
Ссылка: /index.php?name=Forums&file=viewtopicXSS@<xscript>XSS</xscript>.com&t=3112&start=0
Браузер: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 7.0) Security
Дата размещения: 31.01.06 - 09:30:56
---
---
Запрещенное действие: HTML in GET - op = poll_result" and "1"="1
IP Адрес: 84.136.253.95
Пользователь: Гость
Ссылка: /index.php?name=Voting&op=poll%5Fresult"%20and%20"1"="1&poll_id=11&pagenum=2
Браузер: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 7.0) Security
Дата размещения: 31.01.06 - 09:38:00
---
---
Запрещенное действие: HTML in POST - user_password = XSS@<xscript>XSS</xscript>
IP Адрес: 84.136.253.95
Пользователь: Гость
Ссылка: /index.php?name=Account
Браузер: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 7.0) Security
Дата размещения: 31.01.06 - 09:56:16
---
Результат анализа
В результате анализа удалось с достоверностью определить высокий уровень защищенности системы. Не одна из попыток взлома не увенчалась успехом. Все попытки были отслежены, блокированы и записаны в файл статистики нападений. Администратор системы был уведомлён о каждом нападении по средствам E-Mail. |
|
|
Прежде чем перейти к описанию интеграции модулей, хотелось бы заметить, что в системе могут быть использованы различные модули, блоки и скрипты, не только из похожих по принципу построения систем, но и совершенно не похожих. Не смотря на то, что оригинальные модули и блоки используют стандартные функции, это не является основным фактором в их работе. В системе могут работать модули, совершенно не используя основные функции ядра. В некоторых случаях потребуются только не большие изменение в коде интегрируемого модуля, блока или скрипта. В данном примере мы рассмотрим способ ручной интеграции модулей одной из самых популярных систем построения сайтов PHP-Nuke. Программу, написанную специально для нашей системы, для автоматической интеграции модулей PHP-Nuke в SLAED CMS Вы можете скачать на нашем проекте в каталоге файлов.
Прошу учитывать, что старые варианты использования кода в модулях PHP-Nuke могут незначительно отличаться от описанных в данной статье.
1. В самом верху изменяем способ защиты для модулей от стороннего доступа.
Старый вариант:
if (!eregi("modules.php", $_SERVER["PHP_SELF"])) {
die ("You can"t access this file directly...");
}
Новый вариант:
if (!defined("MODULE_FILE")) {
Header("Location: ../../index.php");
exit;
}
2. Старые модули PHP-Nuke используют соединение с базой по средствам переменной $dbi. Наша система использует соединение с базой по средствам переменной $db, по этой причине необходимо изменить все переменные $dbi на $db.
Меняем все глобальные переменные $dbi в функциях, на новые $db. Если это необходимо, указываем переменную $db как глобальную.
Старый вариант: global $prefix, $dbi;
Новый вариант: global $prefix, $db;
Изменяем структуру запроса в базу данных.
Старый вариант: $result = sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id", $dbi);
Новый вариант: $result = $db->sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id");
Как вы заметили, удалена переменная $dbi в конце запроса и добавлена переменная $db в начале. Это нужно проделать со всеми запросами.
В запросах необходимо изменить:
sql_fetch_array на $db->sql_fetchrow
sql_query на $db->sql_query
sql_fetch_row на $db->sql_fetchrow
sql_num_rows на $db->sql_numrows
sql_free_result на $db->sql_freeresult
Если появляются вопросы по поводу запросов или правильности их написания, смотрим файл function/mysql.php
В некоторых модулях используются прямые запросы в базу данных в обход файла классов соединения с базой. В таком варианте запросы не подсчитываются. При желании вы так же можете изменить запросы подобного рода.
В запросах необходимо изменить:
mysql_fetch_array на $db->sql_fetchrow
mysql_query на $db->sql_query
mysql_fetch_row на $db->sql_fetchrow
mysql_num_rows на $db->sql_numrows
mysql_free_result на $db->sql_freeresult
В функциях не забываем указывать переменную $db как глобальную.
3. В некоторых модулях производится соединение с файлом конфигурации которое нужно заменить.
Старый вариант: include("config.php");
Новый вариант: include("config/config.php");
4. В некоторых модулях используется переменная основного адреса сайта, которую нужно заменить.
Старый вариант: $nukeurl
Новый вариант: $conf['homeurl']
Не исключено что в последствии возникнет необходимость использования параметров основных конфигураций системы. Для этих целей рекомендуется прописать в глобальные, переменную $conf, отвечающую за основные настройки, которые хранятся в файле config/config_global.php
5. В некоторых модулях используются функции темы OpenTable2() и CloseTable2() которые нужно заменить.
Старый вариант: OpenTable2();
Новый вариант: OpenTable();
Старый вариант: CloseTable2();
Новый вариант: CloseTable();
6. В стандартных модулях в начале скриптов используется соединение с файлом mainfile.php.
Необходимо удалить: require_once("mainfile.php"); или include("mainfile.php");
7. Во всех скриптах нужно произвести поиск и изменить стандартные ссылки modules.php на index.php.
Старый вариант: modules.php
Новый вариант: index.php
8. Во всех скриптах нужно произвести поиск и удалить стандартные цветовые переменные в глобальных, и заменить их в коде.
Старый вариант: bgcolor="$bgcolor1"
Новый вариант: class="bgcolor1"
Старый вариант: bgcolor="$bgcolor2"
Новый вариант: class="bgcolor2"
Старый вариант: bgcolor="$bgcolor3"
Новый вариант: class="bgcolor3"
Старый вариант: bgcolor="$bgcolor4"
Новый вариант: class="bgcolor4" |
|
|
Прежде чем перейти к описанию интеграции модулей, хотелось бы заметить, что в системе могут быть использованы различные модули, блоки и скрипты, не только из похожих по принципу построения систем, но и совершенно не похожих. Не смотря на то, что оригинальные модули и блоки используют стандартные функции, это не является основным фактором в их работе. В системе могут работать модули, совершенно не используя основные функции ядра. В некоторых случаях потребуются только не большие изменение в коде интегрируемого модуля, блока или скрипта.
В данном примере мы рассмотрим способ ручной интеграции модулей одной из самых популярных систем построения сайтов PHP-Nuke. Программу, написанную специально для нашей системы, для автоматической интеграции модулей PHP-Nuke в SLAED Вы можете скачать на нашем проекте в каталоге файлов.
Прошу учитывать, что старые варианты использования кода в модулях PHP-Nuke могут незначительно отличаться от описанных в данной статье.
1. В самом верху изменяем способ защиты для модулей от стороннего доступа.
Старый вариант:
if (!eregi("modules.php", $_SERVER["PHP_SELF"])) {
die ("You can"t access this file directly...");
}
Новый вариант:
if (!defined("MODULE_FILE")) {
Header("Location: ../../index.php");
exit;
}
2. Старые модули PHP-Nuke используют соединение с базой по средствам переменной $dbi. Наша система использует соединение с базой по средствам переменной $db, по этой причине необходимо изменить все переменные $dbi на $db.
Меняем все глобальные переменные $dbi в функциях, на новые $db. Если это необходимо, указываем переменную $db как глобальную.
Старый вариант: global $prefix, $dbi;
Новый вариант: global $prefix, $db;
Изменяем структуру запроса в базу данных.
Старый вариант: $result = sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id", $dbi);
Новый вариант: $result = $db->sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id");
Как вы заметили, удалена переменная $dbi в конце запроса и добавлена переменная $db в начале. Это нужно проделать со всеми запросами.
В запросах необходимо изменить:
sql_fetch_array на $db->sql_fetchrow
sql_query на $db->sql_query
sql_fetch_row на $db->sql_fetchrow
sql_num_rows на $db->sql_numrows
sql_free_result на $db->sql_freeresult
Если появляются вопросы по поводу запросов или правильности их написания, смотрим файл function/mysql.php
В некоторых модулях используются прямые запросы в базу данных в обход файла классов соединения с базой. В таком варианте запросы не подсчитываются. При желании вы так же можете изменить запросы подобного рода.
В запросах необходимо изменить:
mysql_fetch_array на $db->sql_fetchrow
mysql_query на $db->sql_query
mysql_fetch_row на $db->sql_fetchrow
mysql_num_rows на $db->sql_numrows
mysql_free_result на $db->sql_freeresult
В функциях не забываем указывать переменную $db как глобальную.
3. В некоторых модулях производится соединение с файлом конфигурации которое нужно заменить.
Старый вариант: include("config.php");
Новый вариант: include("config/config.php");
4. В некоторых модулях используется переменная основного адреса сайта, которую нужно заменить.
Старый вариант: $nukeurl
Новый вариант: $conf['homeurl']
Не исключено что в последствии возникнет необходимость использования параметров основных конфигураций системы. Для этих целей рекомендуется прописать в глобальные, переменную $conf, отвечающую за основные настройки, которые хранятся в файле config/config_global.php
5. В некоторых модулях используются функции темы OpenTable() и CloseTable() которые нужно заменить.
Старый вариант: OpenTable(); или OpenTable2();
Новый вариант: open();
Старый вариант: CloseTable(); или CloseTable2();
Новый вариант: close();
6. В стандартных модулях в начале скриптов используется соединение с файлом mainfile.php.
Необходимо удалить: require_once("mainfile.php"); или include("mainfile.php");
7. Во всех скриптах нужно произвести поиск и изменить стандартные ссылки modules.php на index.php.
Старый вариант: modules.php
Новый вариант: index.php
8. Во всех скриптах нужно произвести поиск и удалить стандартные цветовые переменные в глобальных, и заменить их в коде.
Старый вариант: bgcolor="$bgcolor1"
Новый вариант: class="bgcolor1"
Старый вариант: bgcolor="$bgcolor2"
Новый вариант: class="bgcolor2"
Старый вариант: bgcolor="$bgcolor3"
Новый вариант: class="bgcolor3"
Старый вариант: bgcolor="$bgcolor4"
Новый вариант: class="bgcolor4" |
|
|
|
Сотовые Аксессуары
|