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.