XSS уязвимость в модуле Админпанель < 1.2

Данная уязвимость работает в модуле Админпанель 1.2, вкладка Пользователи -> Список.
Справа от списка пользователей предлагается отправить письмо (новое или выбрать из старых).
В старых javascript в темах сообщений никак не фильтруется.

Например

	<select name="talk_inbox_list" id="talk_inbox_list" onchange="AdminMessageSelect();">
		<option value="0">-- Новое письмо --</option>
		<option value="1">test <script>alert('1')</script></option>
	</select>

19 комментариев

комментарий был удален
avatar
А можно поподробней, каким образом потенциальный злоумышленник сможет воткнуть код, типа того, что приведен выше?
avatar
могу только догадываться
наверное ответить администратору с JS кодом в тексте
а тот ответит ему, типа такого
avatar
Я тоже могу только догадываться. Варианты, которые я вижу:

1) Хакер получил доступ к БД и вогнал туда в заголовки/тексты писем гадского кода
2) Хакер подменил шаблон Смарти и вписал туда вредоносный код
3) Что-то еще из этой серии

В любом случае — несанкционированный доступ к базе либо к исходникам. Но все это совсем не из области XSS-уязвимостей.

Но, поскольку я обынкновенный человече, то всегда допускаю вероятность ошибки. Потому и спрашиваю топик-стартера, чтобы понять — это паранойя или зоркий глаз?
avatar
Думаю второе.
Cross-site scripting (XSS) is a type of computer security vulnerability typically found in web applications which allow code injection by malicious web users into the web pages viewed by other users.
avatar
Да не надо мне определений, это я и сам знаю. Мне интересно знать, каким образом может быть осущствлена инъекция в код?
avatar
Точнее первое =\ По-моему я не выспался.
avatar
Оказался зоркий глаз — снимаю шляпу
avatar
В любом случае, если хакер доберется до админ панели, у него уже много карт на руках :)
avatar
Для того, чтобы добраться так, как описал топикстартер, ему, похоже, надо вообще до хоста добраться. А там уже админпанель нафиг не нужна — твори чо хошь.
avatar
кхм, если вы считаете, что это поведение должное и никаких ошибок нет — дико извиняюсь, все дальнейшие сообщения об ошибках лучше на античате буду постить.

Теперь, умницы и умники — насчет java-script'a. Попробуйте отправить админу сообщение с темой
Привет, любимый админ <script>вредоносный код, шлющий Ваши, Ваши avadim пароли на удаленный хост</script>

И что увидит админ? Он увидит в теме письма просто «Привет, любимый админ» и даже не почешится, но как только зайдет в админку — прощай сайт.
Avadim — какой у вас сайт, я на примере вам покажу
avatar
avatar
Ну если ты шаришь и можешь даже примером стукнуть напиши пожалуйста как обезопасить админпанель, куда копать то?
avatar
Да чего ты кипятишься-то? Я попросил объяснить, ты объяснил. И должен признать, что ты был прав. А посему только что выложил версию 1.2.86, где такая опасность устранена.

Но все же должен заметить: опасность была отчасти из-за того, что не достаточно жестко проверяются параметры на этапе передачи сообщения. Желательно чуть-чуть «в консерватории подправить»
avatar
Ниже я написал, что ни в коем разе Вас не виню, тут (по моему мнению) ошибка скорее на момент попадания сообщения в базу — нужно резать уже тогда, чтобы даже намека на запрещенные вещи не было.
Спасибо большое за дискуссию и оперативное решение проблемы! Ваш модуль я поставил самым первым, очень удобная штука.
avatar
Проблема скорее не в админке, иначе я бы просто в личку отписался автору модуля. Тут скорее нужно с самими личными сообщениями решить — должны ли явно подозрительные вещи типа
<script>...</script>
резаться перед добавлением в базу или резаться только перед отображением пользователю?
Я лично выбираю первый вариант, хотелось бы мнение старожилов услышать.
avatar
Лучше, наверное, не просто резать, а преобразовывать в сущности типа &xxx;, чтобы было видно, что кто-то пытается куролесить.
avatar
Просьба выложить решение в стиле найти «то» заменить на «то».
А то снова переустанавливать/доустанавливать совсем не хочется…
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.