Чаты IE XSS Kit

Discussion in 'Веб-уязвимости' started by .Slip, 6 Jun 2006.

Thread Status:
Not open for further replies.
  1. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Всем привет, ибо я.. Решил вот на досуге рассмотреть набор инструментов для xss, который лежит на сайте античата. Скачать IE xss kit Ещё небольшое предисловие. Запостил я всё это в этот раздел т.к. этот набор поможет в поиске уязвимостей в чате и немного повысит ваши возможности. Сегодня я кратко расскажу про редактор форм:

    Form_Select-one2Text

    Этот редактор форм позволяет нам превращать фреймы с зашитыми опциями, в собственный полигон для испытаний.
    Начнём с самого простого, в большинстве чатов есть выбор цвета который в html виде производится таким образом:
    HTML:
    <OPTION selected VALUE="Black" STYLE="color:black">Чёрный </OPTION>
    В действительности это выглядит вот так:
    [​IMG]
    Как видите есть зашитые цвета, использование других пока что невозможно. Теперь мы подводим курсор мышки к фрейму с выбором цвета, щёлкаем правой кнопкой и выбираем команду Form_Select-one2Text И вот этот фрейм со строгим выбором цвета становится пустым фреймом с возможностью записи туда любого текста. (только не всё что вы напишите будет работать) Вот как он выглядит после применения Form_Select-one2Text :
    [​IMG]
    Теперь у вас есть возможность ввести любой код цвета, например #FFFFFF. Так же эта команда делает многие фреймы свободными для редактирования. (Например в одном чате при выборе пола я сделал себе "Кошмарный Гермофродит"). Так же можно и напрямую искать xss уязвимости, подставляя этот код в ставшие доступными нам фреймы.
    Вот здесь лежат множество кодов, способных вызвать alert и собственно найти xss. Теперь вы ознакомлены с редактором форм Form_Select-one2Text

    Form_Method2Text, Form_Hidden2Text

    Начнём с Form_Method2Text. Сама по себе команда не очень нужна, т.к. она открывает фрейм где написан метод работы со страницей. Самые основные методы это: post и get. Метод post означает что вы вносите свои данные на страницу. Чаще всего он встречается на форумах, гостевых книгах, чатах и т.д. Метод get означает что вы получаете какие либо данные от самой страницы, чаще всего он используется в поисковых системах, этот метод можно встретить почти везде. В общем эта команда ничем не примечательна, но она так же как и остальные даёт доступ к открытому фрейму. И конечно же в некоторых интернет ресурсах если заменить пост или гет на код xss, то яваскрипт успешно выполняется.
    Теперь пройдёмся по команде Form_Hidden2Text. Сама по себе эта команда позволяет просмотреть данные которые зашиты в странице (сорцы) и даёт возможность их подкорректировать.
    Покажу вам наглядный пример. Тестировал я этот метод на одном из чатов чатсити, когда нужно отправить отчёт об ошибке.
    Вот он: _http://www.38557.chatcity.ru/bug/?err=IllegalChannel(get_ch)&www.38557.chatcity.ru&
    Скрин делать не буду, т.к. зайдёте по ссылке и сами всё увидете. Теперь на этой странице используем команду Form_Hidden2Text, как видите открываются фреймы с данными пользователя который зашёл на эту страницу. (Так же они есть в сорцах) Теперь их можно редактировать, объясню зачем это нужно. При отправлении отчёта о ошибке администратору чатсити прийдут как раз те самые данные которые стали нам доступными для редактирования. Это наводит на мысль, что можно в этот раз остаться анонимным. Вот скрин того что нам открылось:

    http://img124.imageshack.us/img124/5457/039hm.jpg

    Как видно можно всё стереть или подставить чужие данные.
    И вот это же самое хранится в сорцах:
    HTML:
    <input type=hidden name=err value="IllegalChannel(get_ch)">
    <input type=hidden name=browser value="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)">
    <input type=hidden name=addr value="айпи мой:))">
    <input type=hidden name=via value="">
    <input type=hidden name=referer value="http://www.38557.chatcity.ru/kpobatka">
    <input type=hidden name=args value="www.38557.chatcity.ru&">
    Но теперь мы всё можем отредактировать и остаться анонимными, написав администрации пару ласковых;)
    Вот и всё, что могут эти две команды.

    Form_Target2Text

    Само по себе слово target означает цель, и означает это ваше дальнейшее "направление" после какого либо действия. И в данном случае при использовании этой команды у нас так же открывается фрейм доступный для редактирования. Во многих случаях, (если цель не прописана на яваскриптах) при использовании команды вы увидете какую либо ссылку, куда вас отправит после каких либо действий. Это может быть хоть что, нажатие кнопки ОК, Выход, и т.д. В этом то как раз команда Form_Target2Text очень удобна для поиска Xss. Вы можете приписать xss код к ссылке которая уже была, или просто стереть ссылку и прописать xss код.

    LocationReplace

    При выполнении этой команды, происходит запрос сценария через метод prompt, запрос идёт на какую либо страницу. В общем не буду ходить вокруг да около, эта команда довольно бесполезна при поиске xss, т.к. чтобы вы не написали, любой ваш текст добавится к изначальнуму адресу страницы с которой вы выполнили команду.
    Пример:
    _http://www.ya.ru/
    Используем LocationReplace, выпадает окошко, вписываем туда простую конструкцию:
    <script>alert(/test/)</script>
    Жмём ОК, и нас перебрасывает на: _http://www.ya.ru/<script>alert(/test/)</script>
    Толку никакого.. Этот способ для тех, кому лень самим прописать в адресной строке код и не более. Так же его можно использовать как рефферер.
     
    #1 .Slip, 6 Jun 2006
    Last edited: 7 Jun 2006
    15 people like this.
  2. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Html коды

    Здесь я выложу все html коды, которыми оперирует набор IE xss kit.

    Cookies:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	function zExpires() {
    		var expires = new Date();
    		expires.setYear(expires.getYear() + 10);
    		return expires.toUTCString();
    	}
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zCookie = zDocument.cookie;
    	var zNew = zWindow.prompt('New Cookie?', zCookie);
    	if (zNew != null) {
    		var zNewCookie = zWindow.prompt('New Cookie:', '; EXPIRES=' + zExpires() + ';');
    		if (zNewCookie != null) zDocument.cookie = zNewCookie;
    	}
    </script>
    Action2Text:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	function zConvert(text) {
    		var text2 = '';
    		for (var i = 0; i <= text.length - 1; i ++) {
    			if (text.charAt(i) != escape(text.charAt(i))) {
    				text2 += escape(text.charAt(i)).replace(/%/, '&#x') + ';';
    			} else {
    				text2 += text.charAt(i);
    			}
    		}
    		return text2;
    	}
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zForms = zDocument.forms;
    	for (var i = 0; i <= zForms.length - 1; i ++) {
    		with (zForms[i]) {
    			if (!zForms[i].zAction) {
    				innerHTML = '<input type="text" id="zAction" value="' + zConvert(action) + '" title="action" onChange="document.forms[' + i + '].action = this.value">' + innerHTML;
    			}
    		}
    	}
    </script>
    Checkbox2Text:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	function zConvert(text) {
    		var text2 = '';
    		for (var i = 0; i <= text.length - 1; i ++) {
    			if (text.charAt(i) != escape(text.charAt(i))) {
    				text2 += escape(text.charAt(i)).replace(/%/, '&#x') + ';';
    			} else {
    				text2 += text.charAt(i);
    			}
    		}
    		return text2;
    	}
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zForms = zDocument.forms;
    	for (var i = 0; i <= zForms.length - 1; i ++) {
    		for (var j = 0; j <= zForms[i].elements.length - 1; j ++) {
    			with (zForms[i].elements[j]) {
    				if (type == 'checkbox') {
    					outerHTML = '<input type="text" name="' + name + '" id="' + name + '" value="' + zConvert(value) + '" title="' + type + ' / ' + name + '" onDblClick="this.outerHTML = \'\'">';
    				}
    			}
    		}
    	}
    </script>
    EventsOFF:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zForms = zDocument.forms;
    	for (var i = 0; i <= zForms.length - 1; i ++) {
    		for (var ii in zForms[i]) {
    			if (ii.match(/^on/i) && (zForms[i].getAttribute(ii) != null)) {
    				zForms[i].setAttribute(ii, null);
    			}
    		}
    		for (var j = 0; j <= zForms[i].elements.length - 1; j ++) {
    			for (var jj in zForms[i].elements[j]) {
    				if (jj.match(/^on/i) && (zForms[i].elements[j].getAttribute(jj) != null)) {
    					zForms[i].elements[j].setAttribute(jj, null);
    				}
    			}
    		}
    	}
    </script>
    Hidden2Text:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	function zConvert(text) {
    		var text2 = '';
    		for (var i = 0; i <= text.length - 1; i ++) {
    			if (text.charAt(i) != escape(text.charAt(i))) {
    				text2 += escape(text.charAt(i)).replace(/%/, '&#x') + ';';
    			} else {
    				text2 += text.charAt(i);
    			}
    		}
    		return text2;
    	}
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zForms = zDocument.forms;
    	for (var i = 0; i <= zForms.length - 1; i ++) {
    		for (var j = 0; j <= zForms[i].elements.length - 1; j ++) {
    			with (zForms[i].elements[j]) {
    				if (type == 'hidden') {
    					outerHTML = '<input type="text" name="' + name + '" id="' + name + '" value="' + zConvert(value) + '" title="' + type + ' / ' + name + '">';
    				}
    			}
    		}
    	}
    </script>
    Method2Text:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	function zConvert(text) {
    		var text2 = '';
    		for (var i = 0; i <= text.length - 1; i ++) {
    			if (text.charAt(i) != escape(text.charAt(i))) {
    				text2 += escape(text.charAt(i)).replace(/%/, '&#x') + ';';
    			} else {
    				text2 += text.charAt(i);
    			}
    		}
    		return text2;
    	}
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zForms = zDocument.forms;
    	for (var i = 0; i <= zForms.length - 1; i ++) {
    		with (zForms[i]) {
    			if (!zForms[i].zMethod) {
    				innerHTML = '<input type="text" id="zMethod" value="' + zConvert(method) + '" title="method" onChange="document.forms[' + i + '].method = this.value">' + innerHTML;
    			}
    		}
    	}
    </script>
    Radio2Text:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	function zConvert(text) {
    		var text2 = '';
    		for (var i = 0; i <= text.length - 1; i ++) {
    			if (text.charAt(i) != escape(text.charAt(i))) {
    				text2 += escape(text.charAt(i)).replace(/%/, '&#x') + ';';
    			} else {
    				text2 += text.charAt(i);
    			}
    		}
    		return text2;
    	}
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zForms = zDocument.forms;
    	for (var i = 0; i <= zForms.length - 1; i ++) {
    		for (var j = 0; j <= zForms[i].elements.length - 1; j ++) {
    			with (zForms[i].elements[j]) {
    				if (type == 'radio') {
    					outerHTML = '<input type="text" name="' + name + '" id="' + name + '" value="' + zConvert(value) + '" title="' + type + ' / ' + name + '" onDblClick="this.outerHTML = \'\'">';
    				}
    			}
    		}
    	}
    </script>
    Select-One2Text:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	function zConvert(text) {
    		var text2 = '';
    		for (var i = 0; i <= text.length - 1; i ++) {
    			if (text.charAt(i) != escape(text.charAt(i))) {
    				text2 += escape(text.charAt(i)).replace(/%/, '&#x') + ';';
    			} else {
    				text2 += text.charAt(i);
    			}
    		}
    		return text2;
    	}
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zForms = zDocument.forms;
    	for (var i = 0; i <= zForms.length - 1; i ++) {
    		for (var j = 0; j <= zForms[i].elements.length - 1; j ++) {
    			with (zForms[i].elements[j]) {
    				if (type == 'select-one') {
    					outerHTML = '<input type="text" name="' + name + '" id="' + name + '" value="' + zConvert(value) + '" title="' + type + ' / ' + name + '">';
    				}
    			}
    		}
    	}
    </script>
    Target2Text:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	function zConvert(text) {
    		var text2 = '';
    		for (var i = 0; i <= text.length - 1; i ++) {
    			if (text.charAt(i) != escape(text.charAt(i))) {
    				text2 += escape(text.charAt(i)).replace(/%/, '&#x') + ';';
    			} else {
    				text2 += text.charAt(i);
    			}
    		}
    		return text2;
    	}
    	var zWindow = external.menuArguments;
    	var zDocument = zWindow.document;
    	var zForms = zDocument.forms;
    	for (var i = 0; i <= zForms.length - 1; i ++) {
    		with (zForms[i]) {
    			if (!zForms[i].zTarget) {
    				innerHTML = '<input type="text" id="zTarget" value="' + zConvert(target) + '" title="target" onChange="document.forms[' + i + '].target = this.value">' + innerHTML;
    			}
    		}
    	}
    </script>
    LocationReplace:
    HTML:
    <script type="text/javascript">
    // Created by zFailure
    // Web-site: http://zfailure.narod.ru
    	var zWindow = external.menuArguments;
    	var zLocation = zWindow.location;
    	var zNewLocation = zWindow.prompt('New Location:', zLocation);
    	if (zNewLocation != null) zLocation.replace(zNewLocation);
    </script>
    =================================================
    Вот все коды, кому нибудь они обязательно пригодятся.
    PS Описание команд я буду постепенно добавлять в первый пост.
    PSS спасибо zFailure за данный набор :)
     
    4 people like this.
  3. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    Слушай, если я захожу в чате, то в XSS есть функция
    XSS:Cookies
    я когда нажимаю на ник и выбираю это функции, он открывает какое то поле, и там написанно чё то, как мне с этим работать? точнее, можно ли украсть куки, и зайти с правами админа.
    И ещё, при входе в чате, когда стоишь на пороге, я пробовал нажимать разные функции и у меня вылетали поля, с вводом, щаз расскажу, я стоял на пороге одного из чатов(и на других тоже такое есть)
    chathome
    вообщем жму Action2Text: и у меня появляется строчка и там написанно down1.php
    дальше жму Hidden2Text: и выпадает 2 строчки в одной написанн сам чат(его домен) к примеры f1live а
    в другом цыфра 1
    дальее жму Method2Text: ну там у меня выпадет окно с и пишется POST( об этом ты описывал, спасибо кстати, очень помогло, твоё описание)
    далее жму Target2Text: и выпадет ваще пустое окно
    и вроде бы всё, вот что с этим делать я не знаю,
    хотя в другом чате у меня выпало окно и там был написанно мой статус REG я попробовал изменить на admin или moder, но меня не пустили туда, написав, ошибка сервера.
    Если можешь, опишешь что нибудь, а я пойду ещё там ковыряться. Кстати если, в том чате забрать куки админа, и там в поле ввести вместо статуса REG admin? то тогда же пустят со статусом админа*??
     
    #3 alextoun, 8 Jun 2006
    Last edited: 8 Jun 2006
  4. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    чтож буду учить xss =) Думаю старт есть!
     
  5. Nachtgrauen

    Nachtgrauen New Member

    Joined:
    7 Mar 2006
    Messages:
    26
    Likes Received:
    3
    Reputations:
    0
    Странно,делал как описано выше - ничё не выпадает,нажимаешь и ничего не происходит...в чём же я закосячил?
     
  6. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Всё работает, только что проверил. А скажи ка, на каком ты браузере сидишь?
     
  7. Nachtgrauen

    Nachtgrauen New Member

    Joined:
    7 Mar 2006
    Messages:
    26
    Likes Received:
    3
    Reputations:
    0
    У меня MyIE2 и MSIE 6.0 стоят,в обоих не работает...
     
  8. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    у меня эксплорер 5 и всё прекрассно работает, значит в чём то другом тема
     
  9. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    я вот чё то не понимаю, а можешь обьяснить такую тему, на античате в руководстве по Xss даны коды, а как их вписать в страницу? я чё то не разберусь?
     
  10. dinar_007

    dinar_007 Мадемуазель

    Joined:
    18 Jan 2005
    Messages:
    1,019
    Likes Received:
    770
    Reputations:
    97
    А есть ли ещё аналогичные проги? И вообще, может кто-нить обяснить принцип работы?
     
    1 person likes this.
  11. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    я слышал прогу какую то для мазилы, для вставления своего кода в страницу, я её как то себе ставил, но чё то не догнал как ей пользоваться и нафиг стёр, мож если найду кину
     
  12. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    я вот скачал прогу, для добавления скриптов в веб страницы токо не знаю как ей пользоватесь, вот тут и написанно как, но я не догнал
    http://www.computerra.ru/gid/rtfm/browser/38811/
    простите забыл забыл нажать кнопку edit
    и вот что то, прога для написания скриптов для него
    http://platypus.mozdev.org/
     
    #12 alextoun, 25 Jul 2006
    Last edited: 25 Jul 2006
    1 person likes this.
  13. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    если сможете растолковать как ими пользоваться, то пажлуйста
     
  14. BlackDog

    BlackDog Elder - Старейшина

    Joined:
    5 Jul 2006
    Messages:
    53
    Likes Received:
    19
    Reputations:
    -8
    Э.. а можно самостоятельно изменять скрипты... Прям в папке с программой, надо открыть их и прописать свой код... Вот....
     
  15. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Ну надо же. А ты случаем не кодишь превадные штмл сплоеды?
     
    2 people like this.
  16. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    Немного изменил данный набор. Изменения коснулись Form_Hidden2Text. Изначально при запуске этой команды, отображался только id. Теперь же при запуске этой команды, скрипт будет искать (и при наличии выводить):
    sessid, uid, sid, phpsessid. Сделано это для того что разные чаты теперь используют не стандартную переменную id. Одного вывода id частенько не хватает. Протестировал на нескольких чатах.. (Тупо набил в гугле: Чаты=)). Всё работает.
     

    Attached Files:

    #16 .Slip, 22 Oct 2006
    Last edited: 22 Oct 2006
    2 people like this.
  17. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    977
    Reputations:
    783
    IE XSS KIT v.0.2

    Теперь скрипт при выполнении команды Form_Hidden2Text ищет и переменную session
     

    Attached Files:

    1 person likes this.
Thread Status:
Not open for further replies.