XSS в bbcode img - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

xss инъекция

Страница 1 из 1

XSS в bbcode img

#1 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 22 Ноябрь 2014 - 23:17

Прошу удалить... разобрался
0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 763
  • Регистрация: 20-Март 09
  • Репутация: 2 288
  • IPB version:3.1.x
 

Отправлено 22 Ноябрь 2014 - 23:28

Так что там с xxs то, есть или нет?
0

#3 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 04 Декабрь 2014 - 03:03

на версии 3.4.7 есть bb-code
<?xml version="1.0" encoding="utf-8"?>
<bbcodeexport>
  <bbcodegroup>
    <bbcode>
      <bbcode_id>51</bbcode_id>
      <bbcode_title>foto</bbcode_title>
      <bbcode_desc/>
      <bbcode_tag>foto</bbcode_tag>
      <bbcode_replace><![CDATA[<img src="{content}" width="200">]]></bbcode_replace>
      <bbcode_useoption>0</bbcode_useoption>
      <bbcode_example><![CDATA[[foto]{content}[/foto]]]></bbcode_example>
      <bbcode_switch_option>0</bbcode_switch_option>
      <bbcode_menu_option_text/>
      <bbcode_menu_content_text/>
      <bbcode_single_tag>0</bbcode_single_tag>
      <bbcode_groups>all</bbcode_groups>
      <bbcode_sections>all</bbcode_sections>
      <bbcode_php_plugin/>
      <bbcode_no_parsing>0</bbcode_no_parsing>
      <bbcode_protected>0</bbcode_protected>
      <bbcode_aliases/>
      <bbcode_optional_option>0</bbcode_optional_option>
      <bbcode_image/>
      <bbcode_app>topictemplate</bbcode_app>
      <bbcode_custom_regex/>
    </bbcode>
  </bbcodegroup>
</bbcodeexport>


При его использовании в виде

[foto]/forum/public/style_images/ipbskins/rte_icons/emoticons.png" onload="eval(atob('YWxlcnQoIk5BIEZPUlVNRSBLUklUSUNIRVNLQVlBIFVZQVpWSU1PU1QiKQ=='))"[/foto]


Отрабатывает джаваскрипт

Вид html
<img class='bbc_img' src="/forum/public/style_images/ipbskins/rte_icons/emoticons.png" onload="eval(atob('YWxlcnQoIk5BIEZPUlVNRSBLUklUSUNIRVNLQVlBIFVZQVpWSU1PU1QiKQ=='))"" width="200">


З.Ы. Если урл использовать c http - то не отрабатывает!!!

И не могу его победить
0

#4 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 763
  • Регистрация: 20-Март 09
  • Репутация: 2 288
  • IPB version:3.1.x
 

Отправлено 04 Декабрь 2014 - 18:37

Просмотреть сообщениеasterix_kpi сказал(а):

<bbcode_tag>foto</bbcode_tag>

Ну так это не ббкод img.
По идее, кавычки должны были бы заменятся на html сущности. Если этого не происходит, то есть два выхода:
  • использовать регулярное выражение для фильтрации ббкода (опция в ббкоде), например с шаблоном /^\S+$/
  • написать свой отдельный обработчик для этого ббкода, опция - PHP файл для исполнения.

0

#5 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 04 Декабрь 2014 - 23:58

Просмотреть сообщениеsiv1987 04 Декабрь 2014 - 18:37 сказал(а):

использовать регулярное выражение для фильтрации ббкода (опция в ббкоде), например с шаблоном /^\S+$/

с этим вообще не работает просто картинка
0

#6 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 763
  • Регистрация: 20-Март 09
  • Репутация: 2 288
  • IPB version:3.1.x
 

Отправлено 05 Декабрь 2014 - 00:05

Не работает если {content} не соответствует шаблоны - в нем содержатся пробелы. Если даже в адресе и есть пробелы их нужно заменить на аналог urlencode %20. В остальном должно "работать" (вообще "работает" здесь сферический конь в вакууме, так как под "не работает" подразумевается не замена ббкода).
0

#7 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 05 Декабрь 2014 - 00:20

http://ipbskins.ru/forum/public/style_extra/sharelinks/print.png


Вот для такого урл - выводиться только текстом с [foto] ... [/foto], а не картинкой. Пробелов в нем нет!
0

#8 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 763
  • Регистрация: 20-Март 09
  • Репутация: 2 288
  • IPB version:3.1.x
 

Отправлено 05 Декабрь 2014 - 01:12

Прикол в том, что {content} не проходит обработку через checkXss, обрабатывается только {option}. Поэтому и не возможно применить регулярное выражение для фильтрации {content}, фильтруется {option} а он не соответствует выражению и ббкод не заменяется.

Отсюда снова есть два варианта:
  • сделать ббкод одиночным тегом и использовать опции в теге [foto=http://image-src], а в шаблоне замены вместо {content} указать {option}. Дополнительно можно еще задать регулярное выражение /^\S+$/ тогда ббкод не будет заменятся если в нем присутствуют пробелы.
  • второй вариант подразумевает правка исходного кода и замена в {content} кавычек на html сущности

Открыть /admin/sources/classes/text/parser/bbcode.php
Найти:
									if ( $_bbcode['bbcode_useoption'] and $_bbcode['bbcode_optional_option'] and ! $_option and ! stristr( $_bbcode['bbcode_replace'], '{option}' ) )
									{
										$_option = $_content;
										$_option = $this->checkXss( $_option, false, $_tag );
									}

Ниже добавить

									// XSS {content} in html tag attributes
									$_content = str_replace( array( '"', '\'' ), array( '&quot;', '#39;' ), $_content );


Исходя из вышесказанного следует, что нельзя использовать значение из {content} в атрибутах html тегов. Подставлять его можно только внутри тегов.
НЕ правильно:
<a href="{content}"></a>

Правильно:
<a href="#">{content}</a>

Для одиночных html тегов такие как img, используются одиночные ббкоды с использованием опций.
0

#9 Пользователь не на сайте   asterix_kpi ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 56
  • Регистрация: 10-Август 12
  • Репутация: 1
  • IPB version:3.4.x
 

Отправлено 09 Декабрь 2014 - 22:20

Спасибо Вам, что Вы есть!!!
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна