A3: Practice in XSS

Раніше додав статтю з теорією та прикладами як шукати XSS

Так як ми вважаємо, що ми готові до практичних прикладів, то погнали. Є відмінний сайт, який запилили хлопці з Google, для тих кому ліньки піднімати локально веб-додатки з Web вразливістю. Ця гра має 6 рівнів. кожному з них свій спосіб застосування XSS. Але, для тих кому цього виявиться мало, наприкінці статейки, я, перерахую всі можливі сайти та додатки, де можна буде ще вправлятися там.

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

І так: Перейдемо на сайт XSS-Game для пошуку

2) Level 2

На цьому левелі є фільтрування тега script, тому варто вжити в інпут інший тег, допустимо IMG, з атрибутом в них OnError. І скрипт наш матиме такий вигляд «img src="http://test.com" onerror="javascript:alert(1231313132)"/»

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

Перейшовши на перший рівень, ми побачимо 5 пунктів:

- Опис місії

- Ціль місії

- Завдання з уразливістю під цю місію

- Код завдання

- І останнє це підказка, їх там по кілька штук, від легкої підказки до найпрямішої

Спойлер цього левела, якщо не хочете не читайте цей рядок))) і спробуйте розібратися самі: Тут, як я писав у попередній статті, використовується тип XSS відображений (не постійний) Нам просто треба вставити в поле найпростіший скрипт «script»alert('я знайшов вразливість')«/script», потім натиснути Search

І ось що ми отримаємо:

3) Level 3

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

4) Level 4

На цьому рівні вже постаралися добре над фільтрацією тегів script та інших замочок))). Але якщо пам'ятаєте в першій статті був пункт про енкодинг чи шифрування наших зловісних речей, про які додаток не здогадується, тому що йому вказали явні теги, які не повинні відпрацьовувати, а ми ці теги переробляємо під інші назви, шифруючи їх. І давайте розберемо трохи цю форму, при введенні якогось числа в інпут, а потім натискання на Create timer, буде запущено таймер, після закінчення заданого періоду в інпуті вистрибне алерт з повідомленням, що таймер закінчив свою роботу. І зверніть увагу, що під час роботи таймера в урлі з'являється параметр timer= з значенням в інпуті.

Спойлер, якщо ви не здогадалися з підказками, як вирішувати це завдання. Тут також можна заюзати атрибут OnError, але просто розставити дужки додатково. І отримаємо такий скрипт, який впровадимо на сайт 'onerror='alert("я красень, знайшов вразливість")';. Зрештою у нас URL повинен мати такий вигляд: https://xss-game.appspot.com/level3/frame#1' onerror='alert("я красень, знайшов вразливість")';

Спойлер, тут нам потрібно отримати URL encoder, щоб зашифрувати шматок скрипта, перейшовши на енкодер, закинемо деякі з елементів коду (скриптеца), допустимо точки з комами; alert ("я красень"); var b = (''); і зашифрувавши його у потрібному нам кодуванні. А потім цей код підставити значення інпута. І так за допомогою чудового енкодару у нас крапка з комою стає «%3B», підставляємо замість них у скрипт закодоване значення і додаємо дужки та лапки з боків, де отримаємо такий скриптець у результаті: https://xss-game.appspot.com/level4/frame?timer=')%3Balert("я красень")%3Bvar b=('

5) Level 5

Тут випадок із типом XSS у DOM моделі. Коли ми маємо функціонал типу туториала, у якому наш урл не змінює свого значення, лише параметр після , який має параметр next=. Як ми бачимо за цією формою як ми натиснемо на лінк Sign_up значення URL передаватися next=confirm. Тут то й таїться вся проблема

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

6) Level 6

І так, зібралися силами, то останній левів цієї ігралі. З одного боку нам здається що тут треба знову якийсь скрипт підставляти в урл, але все ж таки тут також постаралися над фільтрацією шкідливих тегів, навіть шифрування тут не підійде. Є ще такий спосіб, як розмістити зловісний код на якомусь ресурсі, де згенерується посилання на цей код. А далі думайте, як його заюзати сюди.

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

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

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

Тепер вставляємо цей скриптець у цей ресурс, генеруємо урлик URL, а потім підставляємо в наш 6 рівень гри, в урл нашого завдання замість значення урла "/static/gadget.js". Після того як вставили цей лінк в урл, застосуйте до протоколу https на один або кілька символів великі літери, щоб додаток не думав що це лінк))) Я замінив букву p на P. І воуля!!!

Сподіваюся вам сподобалося шукати 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.