Practice in XSS
Вернуться назад

Тут же уже используется более опасный тип XSS Хранимый (постоянный). После того что вставили в инпут наш скрипт с уязвимостью, жмем Share status, видим такой результат:

                                                                                                    2) Level 2

 

 На этом левеле присутствует фильтровка тега script, поэтому стоит употребить в инпут другой тег, допустим IMG, с атрибутом в них OnError. И скрипт наш будет иметь такой вид <img src="http://test.com" onerror="javascript:alert("1231313132")"/>

Перейдя на первый level, мы увидем 5 пунктов:

- Описание миссии  

- Цель миссии

- Задание с уязвимостью под эту миссию

- Код задания

- И последнее это подсказка, их там по несколько штук, от легкой подсказки до самой прямой

Ранее добавил статью с теорией и примерами как искать XSS

Так как мы считаем что мы готовы к практическим примерам, то погнали. Есть отличный сайтец, который запилили ребята с Google, для тех кому лень поднимать локально веб приложения с Web уязвимостями. У этой игры 6 уровней. на каждом из них свой метод внедрения XSS. Но, для тех кому этого окажется мало, в конце статейки, я, перечислю все возможные сайты и приложения где можно будет еще поупражняться там.

 

Кстати парни из Google очень серьезно относятся к уязвимостям, и для тех кто найдет XSS у них, вознаграждают бонусом больше 7к $ 

 

И так:

Перейдем на сайт XSS-Game для поиска

 

gallery/060a40c2afe46ffb448e754d465d9381
gallery/выделение_096
gallery/выделение_097

Спойлер этого левела, если не хотите не читайте эту строку))) и попробуйте разобраться сами:

Тут, как я писал в предыдущей статье используется тип XSS отраженный(не постоянный)

Нам просто надо вставить в поле самый простой скрипт <script>alert('я нашел уязвимость')</script>, затем нажать Search

 

И вот что мы получим:

gallery/выделение_100
gallery/выделение_101
gallery/выделение_103

3) Level 3

На этом уровне мы видим несколько загруженных картинок. При просмотре каждой из них можно заметить как меняется URL, подставляется id каждой картинки в конце URL. Можно предположить, что при генерации этого URL работает переменная, которая вмещает в себя, функцию какой-то Html разметки + тег, который вызывает картинку таким видом как она есть перед нами + id картинки + формат картинки. И в этой переменной как-то не так проставлена скобка <'>, то можно заюзать дополнительную скобку в нашем скрипте, которая провоцирует экранизацию XSS

gallery/выделение_104

Спойлер, если вы не догадались с подсказками как решать это задание. Тут тоже можно заюзать атрибут OnError, но просто расставить скобки дополнительно. И получим такой скрипт, который внедрим на сайт ' onerror='alert("я красавчик, нашел уязвимость")';. В конечном итоге у нас URL должен иметь такой вид:

 

https://xss-game.appspot.com/level3/frame#1' onerror='alert("я красавчик, нашел уязвимость")';

gallery/выделение_105

4) Level 4

На этом уровне уже постарались хорошо над фильтрацией тегов script и других таких замочек))). Но если помните в первой статье был пункт про енкодинг или шифрование наших зловещих вещей, про которые приложение не догадывается, так как ему указали явные теги, которые не должны отрабатывать, а мы эти же теги переделываем под другие названия, шифруя их.

И давайте разберем немного эту форму, при вводе какого-то числа в инпут, а потом нажатии на Create timer, будет запущен таймер, по истечении заданного периода в инпуте выпрыгнет алерт с уведомлением что таймер закончил свою работу. И обратите внимание, что при работе таймера в урле появляется параметр timer= с значением в инпуте.

gallery/выделение_106

Спойлер, тут нам нужно зауюзать URL encoder, чтоб зашифровать кусок скрипта, перейдя на енкодер, забросим некоторые из элементов кода(скриптеца), допустим точки с запятыми ;alert("я красавчик");var b=(''); и зашифровав его в нужной нам кодировке. А затем этот код подставить в значение инпута. И так с помощью замечательного енкодара у нас точка с запятой становится <%3B>, подставляем вместо них в скрипт закодированное значение и добавляем скобки и кавычки по бокам, где получим вот такой скриптец в итоге:

https://xss-game.appspot.com/level4/frame?timer=')%3Balert("я красавчик")%3Bvar b=('     

gallery/выделение_107

5) Level 5

Тут случай с типом XSS в DOM модели. Когда у нас есть функционал типа туториала, в котором наш урл не меняет своего значения, а только параметр после <?>, который имеет параметр next=. Как мы видим по этой форме как мы нажмем на линк Sign_up в значение URL передаваться next=confirm. Тут то и таиться вся проблема

gallery/выделение_108

Надеюсь вам понравилось искать XSS и на то что я смог вам помочь понять суть. Если вам показалось этого мало, есть множество ресурсов где можно продолжать щупать эту и не только эту уязвимость.

 

Ресурсы где можно продолжить:

1) bWAPP

Данный ресурс надо устанавливать локально. В этом веб-приложении вы найдете более 100 распространенных проблем, описанных в Owasp Top 10

 

2) Google Gruyere

Этот сайт наполнен разными дырами и будет полезен, тем кто только начинает изучать безопасность приложений

 

3) HackThis

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

 

4) OWASP Juice Shop Project

Это веб-приложение для практики. В него входит вся первая десятка в списке OWASP и многие другие серьезные дыры безопасности.​

 

5) ​​​​​​Hack.me

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

 

6) Damn Vulnerable Web Application (DVWA)

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

 

 

Если же вам лень искать их ручками, то можете перейти на статью о том как искать XSS с помощью сканера уязвимостей OWASP ZAP либо BURP SUITE.

 

 

И ПОМНИТЕ ВСЕ ПОКАЗАННОЕ ВЫШЕ, СДЕЛАНО В ЦЕЛЯХ ОБУЧЕНИЯ!!!

МОЖНО ПРИМЕНЯТЬ ТОЛЬКО НА СВОИХ ПРОЕКТАХ, ПОСЛЕ РАЗРЕШЕНИЯ

Спойлер, если вам подсказки также не смогли помочь, сейчас расскажу, что надо сделать. Вся лажа таится в окончании урла. Берем скрипт javascript:alert("я красавчик"), подставляем в урл вместо слова confirm, вводим в инпут любое значение и жмем next линк.

gallery/выделение_109

6) Level 6

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

gallery/выделение_110

Спойлер, если вам подсказки также не смогли помочь, сейчас расскажу, что надо сделать. Тут нам понадобится:

- скрипт, всего лишь простой алерт alert("я красавчик");

- ресурс для генерации линки на него 

 

Теперь вставляем этот скриптец в этот ресурс, генерим урлик URL, а затем подставляем в наш 6 уровень игры, в урл нашего задания вместо значения урла </static/gadget.js>. После того как вставили этот линк в урл, примените к протоколу https на один либо на несколько символов заглавные буквы, чтоб приложение не думало что это линк))) Я заменил букву p на P. И воуля!!!

gallery/выделение_112