Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Активная XSS через BB Коды! Нужно закрыть
 
 автор: Stanisov   (04.06.2009 в 11:06)   письмо автору
 
 

Есть такие хитрые коды, как [url= ] [/url] или [color= ] [/color], через которые вероятнее всего внедрить XSS, так вот как их можно отпарсить от этого? Если кто знает, как это делается без объектного метода или шаблонизаторов, поведайте пожалуиста

  Ответить  
 
 автор: mihdan   (05.06.2009 в 23:08)   письмо автору
 
   для: Stanisov   (04.06.2009 в 11:06)
 

Используйте отточенные парсеры ББ-кодов

  Ответить  
 
 автор: nikita2206   (05.06.2009 в 23:43)   письмо автору
 
   для: mihdan   (05.06.2009 в 23:08)
 

а чего там оттачивать? вот, попробуйте сделать XSS применительно данного "парсера":
<?php
$text 
'jskfhjkashjkfjk Softtime ';

preg_match_all('/\[url=(.+?)\](.+?)\[\/url\]/'$text$url2);
for(
$i 0$i count($url2[1]); $i++){
    
$url2[1][$i] = preg_replace('/^([^"]*)(.*)$/''\1'$url2[1][$i]);
    
$text str_replace($url2[0][$i], '<a href="'.$url2[1][$i].'" >'.$url2[2][$i].'</a>'$text);
}

  Ответить  
 
 автор: 345345   (06.06.2009 в 16:30)
 
   для: nikita2206   (05.06.2009 в 23:43)
 

Тут явно пассивный XSS

  Ответить  
 
 автор: nikita2206   (07.06.2009 в 01:58)   письмо автору
 
   для: 345345   (06.06.2009 в 16:30)
 

пассивный xss должен обрабатываться, уж точно, не в процессе парса ББ-кода…
пс хотя в коде можно коечто изменить, в preg_replace, в [^"] вставить еще < и > или вообще такой выриант:
<?php 
$text 
'самый простой "взлом" с помощью XSS: [url=http://softtime.ru" onclick="alert('!!!!!!!!!!!!!')][/url]';

preg_match_all('/\[url=(?<!"><)(.+?)\](.+?)\[\/url\]/'$text$url2);
for(
$i 0$i count($url2[1]); $i++) $text str_replace($url2[0][$i], '<a href="'.$url2[1][$i].'" >'.$url2[2][$i].'</a>'$text);

правда я непробовал его на работоспособность, но суть в том чтоб отфильттровать кавычки, знаки больше меньше с помощью какого то там негативного отрицания чтоли?

  Ответить  
 
 автор: 23423432   (07.06.2009 в 11:54)
 
   для: nikita2206   (07.06.2009 в 01:58)
 

Попробуй просто javascript:alert('haha') в качестве адреса дать.

[поправлено модератором]

  Ответить  
 
 автор: Commander   (06.06.2009 в 04:49)   письмо автору
 
   для: Stanisov   (04.06.2009 в 11:06)
 

А как через них XSS возможна?

  Ответить  
 
 автор: Stanisov   (06.06.2009 в 14:56)   письмо автору
 
   для: Commander   (06.06.2009 в 04:49)
 

уже нешел защиту, вот
$string = preg_replace('#(script|about|applet|activex|chrome):#isU', "\\1&#058;",$string);

XSS вожможна, просто вставляеш тег между ссылками и все

  Ответить  
 
 автор: Commander   (06.06.2009 в 15:28)   письмо автору
 
   для: Stanisov   (06.06.2009 в 14:56)
 

>XSS вожможна, просто вставляеш тег между ссылками и все

Какой тег? Если html-тег, то достаточно пропустить текст через htmlspecialchars(), чтобы он стал безобиден.

  Ответить  
 
 автор: Stanisov   (06.06.2009 в 17:54)   письмо автору
 
   для: Commander   (06.06.2009 в 15:28)
 

Да, у меня все htmlspecialchars'ом обрабатывается! Но если сделать [url]javascript:alert(document.cookie)[/url] то увидишь свои куки и сессию! + еще и на сниф кинуть, тогда они у тебя будут украдены...Htmlspecialchars сдесь не поможет!...Кстати сдесь на форуме защита от этого стоит

  Ответить  
 
 автор: Trianon   (06.06.2009 в 18:00)   письмо автору
 
   для: Stanisov   (06.06.2009 в 17:54)
 

потому что здесь не дадут совать в url= что-либо начинающееся не с http://

  Ответить  
 
 автор: Stanisov   (06.06.2009 в 18:32)   письмо автору
 
   для: Trianon   (06.06.2009 в 18:00)
 

....а ссылки бывают начинаются и с ftp://site.com, https://site.com, а также относительные [url]/thread666.html[/url],

  Ответить  
 
 автор: Trianon   (06.06.2009 в 19:08)   письмо автору
 
   для: Stanisov   (06.06.2009 в 18:32)
 

бывают. Но здесь они не проходят как раз в угоду безопасности.

Между прочим /thread666.html - ссылка абсолютная. Хотя и локальная.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования