Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Портал > Безопасность

Ответ
 
Опции темы Опции просмотра
LARK вне форума LARK
[исход]

Аватар для LARK

| Цитировать Старый #1 06-23-2010, 14:06

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

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

Открыть файл /class/sessions.class.php

найти строку

PHP код:
$this->hash rc_shatool($this->pass.$this->salt); 
и заменить ее на

PHP код:
$this->hash rc_shatool($this->pass.$this->salt '5dFd85RTy42gVs'); 
найти строку

PHP код:
$hash rc_shatool($this->pass.$this->salt); 
и заменить ее на

PHP код:
$hash rc_shatool($this->pass.$this->salt '5dFd85RTy42gVs'); 
Вместо 5dFd85RTy42gVs вставьте свой уникальный набор символов.

Можно сделать и универсальный вариант.

PHP код:
$this->hash rc_shatool($this->pass.$this->salt); 
заменить на

PHP код:
$this->hash rc_shatool($this->pass $this->salt rc_shatool($rcxConfig['dbhost'] . $rcxConfig['dbuname'] . $rcxConfig['dbpass'] . $rcxConfig['dbname'])); 
для для RUNCMS 2.Х

или

PHP код:
$this->hash rc_shatool($this->pass $this->salt rc_shatool($xoopsConfig['dbhost'] . $xoopsConfig['dbuname'] . $xoopsConfig['dbpass'] . $xoopsConfig['dbname'])); 
для RUNCMS 1.Х

а

PHP код:
$hash rc_shatool($this->pass.$this->salt); 
заменить на

PHP код:
$hash rc_shatool($this->pass $this->salt rc_shatool($rcxConfig['dbhost'] . $rcxConfig['dbuname'] . $rcxConfig['dbpass'] . $rcxConfig['dbname'])); 
для для RUNCMS 2.Х

или

PHP код:
$hash rc_shatool($this->pass $this->salt rc_shatool($xoopsConfig['dbhost'] . $xoopsConfig['dbuname'] . $xoopsConfig['dbpass'] . $xoopsConfig['dbname'])); 
для RUNCMS 1.Х

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

Последний раз редактировалось LARK, 06-23-2010 в 14:24


Правила нашего Форума :: О клубе пользователей RUNCMS :: Рекомендации по публикации сообщений :: Прежде чем задать вопрос воспользуйтесь Поиском
-------------------------------------------------------------------
Если что-то не работает, задавая вопрос, ! ОБЯЗАТЕЛЬНО ! пишите версию RUNCMS/модуля/PHP/MySQL и текст самой ошибки.
Посетить домашнюю страницу LARK
  Сообщения: 4,185 c 20.09.2003 | Репутация: 223
pan вне форума pan
): ǝҺɐни dиw ɐн иd⊥оwɔ

Аватар для pan

| Цитировать Старый #2 06-23-2010, 17:18

Кстати, а были прецеденты перехвата печенья и взлом из за этого ?
Просто не припомню


Напильник для RUNCMS
Строим помаленьку
Для гурманов
Мебель для дома
Посетить домашнюю страницу pan
  Сообщения: 4,777 c 15.03.2004 | Репутация: 121
LARK вне форума LARK
[исход]

Аватар для LARK

| Цитировать Старый #3 06-23-2010, 17:55

Цитата:
Сообщение от pan Посмотреть сообщение
Кстати, а были прецеденты перехвата печенья и взлом из за этого ?
Просто не припомню
Именно перехват? Я не помню. Но RUNCMS это все таки некий "неуловимый Джо" только помимо нафиг кому нужный, теперь еще и неизвестный.

А так если есть дырка для SQL инъекции, то получить админские права несложно. Встроенный фильтр не все инъекции отсекает. К тому же POST запросы не фильтруются.

Вот пример: http://www.securityfocus.com/bid/36825/info (правда для 2-ки)


Правила нашего Форума :: О клубе пользователей RUNCMS :: Рекомендации по публикации сообщений :: Прежде чем задать вопрос воспользуйтесь Поиском
-------------------------------------------------------------------
Если что-то не работает, задавая вопрос, ! ОБЯЗАТЕЛЬНО ! пишите версию RUNCMS/модуля/PHP/MySQL и текст самой ошибки.
Посетить домашнюю страницу LARK
  Сообщения: 4,185 c 20.09.2003 | Репутация: 223
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #4 06-23-2010, 18:04

Цитата:
Сообщение от LARK Посмотреть сообщение
Встроенный фильтр не все инъекции отсекает.
Что, даже вот такой фильтр не поможет?

Цитата:
Сообщение от LARK Посмотреть сообщение
К тому же POST запросы не фильтруются.
Насколько я понял, запросы чаще читаются через $_GET, а не через $_SERVER, так что если какой-нить хакереныш будет с подстановкой POST играть - его игры просто пройдут мимо системы А переменные из массива $_POST вроде бы по большей части экранированы. Вот про кукисы ты мне напоминал, до них у меня руки так и не дошли пока...

Цитата:
Сообщение от LARK Посмотреть сообщение
только помимо нафиг кому нужный
Ням... Нет ИМХО ничего лучше сравнительно слабо известного движка, который тем не менее хорошей защитой обладает - дурак такой не отломает из-за отсутствия известных механизмов взлома, а умный может и не полезть в наши дебри

Последний раз редактировалось ZlydenGL, 06-23-2010 в 18:07


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Юрий Пет вне форума Юрий Пет
Зам старшего участника

Аватар для Юрий Пет

| Цитировать Старый #5 06-23-2010, 18:08

Цитата:
Сообщение от pan Посмотреть сообщение
Кстати, а были прецеденты перехвата печенья и взлом из за этого ?
Просто не припомню
Что это за печенье?


Портал - домашние животные
Фоны для сайта Территория вебграфики
Посетить домашнюю страницу Юрий Пет
  Сообщения: 457 c 28.12.2006 | Репутация: 17
LARK вне форума LARK
[исход]

Аватар для LARK

| Цитировать Старый #6 06-23-2010, 18:11

Цитата:
Сообщение от ZlydenGL Посмотреть сообщение
то, даже вот такой фильтр не поможет?
этот поможет, речь идет о стандартном.

Цитата:
Сообщение от ZlydenGL Посмотреть сообщение
А переменные из массива $_POST вроде бы по большей части экранированы.
Ну мы имеем замечательную 2-ку, где много закрытых дырок появились вновь.


Цитата:
Сообщение от Юрий Пет Посмотреть сообщение
Что это за печенье?
куки


Правила нашего Форума :: О клубе пользователей RUNCMS :: Рекомендации по публикации сообщений :: Прежде чем задать вопрос воспользуйтесь Поиском
-------------------------------------------------------------------
Если что-то не работает, задавая вопрос, ! ОБЯЗАТЕЛЬНО ! пишите версию RUNCMS/модуля/PHP/MySQL и текст самой ошибки.
Посетить домашнюю страницу LARK
  Сообщения: 4,185 c 20.09.2003 | Репутация: 223
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #7 06-23-2010, 18:11

Юрий Пет, cookies = (печенья|печенки|печенюшки)


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Zormax вне форума Zormax
Старожил

Аватар для Zormax

| Цитировать Старый #8 06-24-2010, 17:53

В версиях RUNCMS 1.4 и ниже вроде такая конструкция:
$this->hash = md5($this->uid.':'.$this->pass.':'._HTTP_USER_AGENT);

Замените "_HTTP_USER_AGENT" на что угодно

и также ниже есть:
if ($this->sessionID == md5($uid.':'.$pass.':'._HTTP_USER_AGENT)) {

тоже замените "_HTTP_USER_AGENT" на что угодно, но чтобы это что угодно, было как выше вставили, т.е. одинаково


Всё для Sony Ericsson
Посетить домашнюю страницу Zormax
  Сообщения: 2,424 c 15.05.2004 | Репутация: 149
LARK вне форума LARK
[исход]

Аватар для LARK

| Цитировать Старый #9 10-01-2010, 12:37

Так как возможен вариант кражи хеша уже из таблицы префикс_session, с последующей его подстановкой в куки, то нужно сделать дополнительную защиту (пример для RUNCMS 2.Х):

в /class/sessions.class.php

строку

PHP код:
  if ($db->query("INSERT INTO ".RC_SESS_TBL." SET uid=".$this->uid.", uname='".$this->uname."', time=".time().", ip='"._REMOTE_ADDR."',".$mid_sql." hash='".$this->hash."'")) 
меняем на

PHP код:
if ($db->query("INSERT INTO ".RC_SESS_TBL." SET uid=".$this->uid.", uname='".$this->uname."', time=".time().", ip='"._REMOTE_ADDR."',".$mid_sql." hash='" rc_shatool($this->hash '5dFd85RTy42gVs') . "'")) 
а фрагмент

PHP код:
$sql "SELECT u.uid, u.uname, u.pass, u.pwdsalt, s.hash FROM ".RC_USERS_TBL." u
        LEFT JOIN "
.RC_SESS_TBL." s ON u.uid=s.uid 
        WHERE s.uid="
.$uid." AND s.hash='".$uhash."'"
на

PHP код:
$sql "SELECT u.uid, u.uname, u.pass, u.pwdsalt, s.hash FROM ".RC_USERS_TBL." u
        LEFT JOIN "
.RC_SESS_TBL." s ON u.uid=s.uid 
        WHERE s.uid="
.$uid." AND s.hash='" rc_shatool($uhash '5dFd85RTy42gVs') . "'"
Вместо 5dFd85RTy42gVs вставьте свой уникальный набор символов.

теперь если злоумышленник украдет хеш из таблицы session с помощью SQL инъекции, подставить его в куки он не сможет.

Последний раз редактировалось LARK, 10-01-2010 в 14:27


Правила нашего Форума :: О клубе пользователей RUNCMS :: Рекомендации по публикации сообщений :: Прежде чем задать вопрос воспользуйтесь Поиском
-------------------------------------------------------------------
Если что-то не работает, задавая вопрос, ! ОБЯЗАТЕЛЬНО ! пишите версию RUNCMS/модуля/PHP/MySQL и текст самой ошибки.
Посетить домашнюю страницу LARK
  Сообщения: 4,185 c 20.09.2003 | Репутация: 223
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #10 10-03-2010, 23:21

Цитата:
Сообщение от LARK Посмотреть сообщение
Вместо 5dFd85RTy42gVs вставьте свой уникальный набор символов.
Для полного удовлетворения еще бы этот параметр вместе с
Цитата:
Сообщение от LARK Посмотреть сообщение
$this->pass.$this->salt . '5dFd85RTy42gVs'
в админку вывести, чтобы можно было динамично их поменять, не используя ftp. Просто "на всякий пожарный и при случае что".

Хотя мое ИМХО остается прежним - лучше бросить все силы на перекрытие SQL инъекций даже в ущерб штатной юзабилити (то бишь с ручной правкой этой самой юзабилити при необходимости)


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 113.47 Kb. compressed to 105.47 Kb. by saving 8.01 Kb. (7.06%)
Page generated in 0.11320 seconds with 12 queries