Всем привет, ибо я.. Решил вот на досуге рассмотреть набор инструментов для xss, который лежит на сайте античата. Скачать IE xss kit Ещё небольшое предисловие. Запостил я всё это в этот раздел т.к. этот набор поможет в поиске уязвимостей в чате и немного повысит ваши возможности. Сегодня я кратко расскажу про редактор форм: Form_Select-one2Text Этот редактор форм позволяет нам превращать фреймы с зашитыми опциями, в собственный полигон для испытаний. Начнём с самого простого, в большинстве чатов есть выбор цвета который в html виде производится таким образом: HTML: <OPTION selected VALUE="Black" STYLE="color:black">Чёрный </OPTION> В действительности это выглядит вот так: Как видите есть зашитые цвета, использование других пока что невозможно. Теперь мы подводим курсор мышки к фрейму с выбором цвета, щёлкаем правой кнопкой и выбираем команду Form_Select-one2Text И вот этот фрейм со строгим выбором цвета становится пустым фреймом с возможностью записи туда любого текста. (только не всё что вы напишите будет работать) Вот как он выглядит после применения Form_Select-one2Text : Теперь у вас есть возможность ввести любой код цвета, например #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> Толку никакого.. Этот способ для тех, кому лень самим прописать в адресной строке код и не более. Так же его можно использовать как рефферер.
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 за данный набор
Слушай, если я захожу в чате, то в XSS есть функция XSS:Cookies я когда нажимаю на ник и выбираю это функции, он открывает какое то поле, и там написанно чё то, как мне с этим работать? точнее, можно ли украсть куки, и зайти с правами админа. И ещё, при входе в чате, когда стоишь на пороге, я пробовал нажимать разные функции и у меня вылетали поля, с вводом, щаз расскажу, я стоял на пороге одного из чатов(и на других тоже такое есть) chathome вообщем жму Action2Text: и у меня появляется строчка и там написанно down1.php дальше жму Hidden2Text: и выпадает 2 строчки в одной написанн сам чат(его домен) к примеры f1live а в другом цыфра 1 дальее жму Method2Text: ну там у меня выпадет окно с и пишется POST( об этом ты описывал, спасибо кстати, очень помогло, твоё описание) далее жму Target2Text: и выпадет ваще пустое окно и вроде бы всё, вот что с этим делать я не знаю, хотя в другом чате у меня выпало окно и там был написанно мой статус REG я попробовал изменить на admin или moder, но меня не пустили туда, написав, ошибка сервера. Если можешь, опишешь что нибудь, а я пойду ещё там ковыряться. Кстати если, в том чате забрать куки админа, и там в поле ввести вместо статуса REG admin? то тогда же пустят со статусом админа*??
Странно,делал как описано выше - ничё не выпадает,нажимаешь и ничего не происходит...в чём же я закосячил?
я вот чё то не понимаю, а можешь обьяснить такую тему, на античате в руководстве по Xss даны коды, а как их вписать в страницу? я чё то не разберусь?
я слышал прогу какую то для мазилы, для вставления своего кода в страницу, я её как то себе ставил, но чё то не догнал как ей пользоваться и нафиг стёр, мож если найду кину
я вот скачал прогу, для добавления скриптов в веб страницы токо не знаю как ей пользоватесь, вот тут и написанно как, но я не догнал http://www.computerra.ru/gid/rtfm/browser/38811/ простите забыл забыл нажать кнопку edit и вот что то, прога для написания скриптов для него http://platypus.mozdev.org/
Э.. а можно самостоятельно изменять скрипты... Прям в папке с программой, надо открыть их и прописать свой код... Вот....
Немного изменил данный набор. Изменения коснулись Form_Hidden2Text. Изначально при запуске этой команды, отображался только id. Теперь же при запуске этой команды, скрипт будет искать (и при наличии выводить): sessid, uid, sid, phpsessid. Сделано это для того что разные чаты теперь используют не стандартную переменную id. Одного вывода id частенько не хватает. Протестировал на нескольких чатах.. (Тупо набил в гугле: Чаты=)). Всё работает.