# WEB Basic Practice 3 ###### tags: `WEB Basic` ### Статистика пройденных атак: ![](https://i.imgur.com/PLpYBX0.png) ![](https://i.imgur.com/iqkGK4t.png) ### SQL-injection уязвимости: #### 1) Обход логина ![](https://i.imgur.com/shih1Jb.png) ![](https://i.imgur.com/7dmuhvt.png) Нажмём на My account и введём рандомные символы в поле логина и пароля: ![](https://i.imgur.com/cf5ZDtQ.png) В это же время включим Burp Suite и нажмём на Log in в браузере: ![](https://i.imgur.com/IU362dp.png) Поменяем поле username на administrator'-- ![](https://i.imgur.com/lw3LfKy.png) ![](https://i.imgur.com/kxdc9DY.png) #### 2) Извлечение скрытых данных ![](https://i.imgur.com/bqardfv.png) ![](https://i.imgur.com/SNJqGs8.png) Зайдём в раздел Lifestyle, например: ![](https://i.imgur.com/hJM3sWT.png) Перейдём в Burp: ![](https://i.imgur.com/4xHitc2.png) Допишем '+OR+1=1-- ![](https://i.imgur.com/VSeuNg5.png) ![](https://i.imgur.com/g3Vag4I.png) Увидим, что появились и другие товары: ![](https://i.imgur.com/RXwpIok.png) #### 3) UNION-атака, позволяющая извлекать информацию из других таблиц ![](https://i.imgur.com/NvM8ZGc.png) Перейдём в раздел Gifts, например: ![](https://i.imgur.com/dXqCIok.png) ![](https://i.imgur.com/G4WJSbl.png) Допишем к Gifts '+UNION+SELECT+'abc','def'--, чтобы проверить количество столбцов в таблице: ![](https://i.imgur.com/gkVkJrI.png) Увидим, что столбца как минимум 2: ![](https://i.imgur.com/0UbsK9Y.png) ![](https://i.imgur.com/yxSBPEr.png) Попробуем дописать ещё один столбец в UNION-конструкцию: ![](https://i.imgur.com/MOml0E9.png) Увидим, что столбца в таблице всё-таки 2: ![](https://i.imgur.com/xNbota1.png) Изменим немного конструкцию UNION, которая вывыводит имена и пароли пользователей из таблицы с пользователеми: ![](https://i.imgur.com/nnTFkGU.png) Увидим пароль carlos и administrator, он нам и нужен: ![](https://i.imgur.com/d4HWtfV.png) Введём логин и пароль от администратора и получим доступ: ![](https://i.imgur.com/eDCpQW9.png) #### 4) Запрос типа и версии базы данных на MySQL и Microsoft ![](https://i.imgur.com/JtaboOs.png) Перейдём в категорию Pets: ![](https://i.imgur.com/CVvPrM1.png) ![](https://i.imgur.com/zwFWOBb.png) Допишем UNION-конструкцию, чтобы узнать, сколько столбцов в таблице, однако на конце вместо -- будет # ![](https://i.imgur.com/ahXU4DF.png) Увидим, что столбца как минимум 2: ![](https://i.imgur.com/U1uMeNd.png) ![](https://i.imgur.com/KDkMKNA.png) Изменим UNION-конструкцию, написав в первый столбец параметр version, а во второй NULL: ![](https://i.imgur.com/RkJIEmz.png) ![](https://i.imgur.com/hQlTVNM.png) В самом низу видно номер версии используемой базы данных MySQL: ![](https://i.imgur.com/e6tMa2P.png) ### XSS уязвимости: #### 1) Сохраненный XSS в контексте HTML без каких-либо кодировок ![](https://i.imgur.com/78lm17b.png) Перейдём к одному из блогов в комментарии: ![](https://i.imgur.com/tN52v3u.png) ![](https://i.imgur.com/czuixJI.png) Напишем скрипт, что выводит в оповещении единицу: ![](https://i.imgur.com/6LfFij2.png) Оставляем комментарии, написав ещё имя и почту: ![](https://i.imgur.com/6YjOCb8.png) Вернёмся назад, где увидим, что скрипт сработал: ![](https://i.imgur.com/gEBHNe4.png) #### 2) DOM XSS в document.write с использованием исходного кода ![](https://i.imgur.com/dcEUKgL.png) ![](https://i.imgur.com/6Sa4Zrf.png) Напишем в поиске строку, состоящую из символов и чисел: ![](https://i.imgur.com/aDGuy2N.png) Увидим, что наш поисковой запрос записывается в img src: ![](https://i.imgur.com/mjxhvoM.png) Напишем следующую строчку в поисковике, которая выводит единицу: ![](https://i.imgur.com/AzpPgEi.png) ![](https://i.imgur.com/XZGQCA0.png) ![](https://i.imgur.com/SSr3uju.png) #### 3) Отраженный XSS в строку JavaScript с угловыми скобками, закодированный в HTML ![](https://i.imgur.com/UW8z6cL.png) Напишем случайную строчку в поисковике: ![](https://i.imgur.com/0FAexqN.png) Поймаем запрос с помощью Burp: ![](https://i.imgur.com/BCuCb71.png) И отправим его в Repeater: ![](https://i.imgur.com/8drIRPh.png) Нажмём на Send и найдём упоминания этой строчки в ответе на запрос, где увидим, что строчка записалась в переменную JS: ![](https://i.imgur.com/fSqggVN.png) Введём команду, что выводит единицу: ![](https://i.imgur.com/4RoxA9R.png) ![](https://i.imgur.com/wKJ4m8K.png) ![](https://i.imgur.com/IkgejbH.png) #### 4) Отраженный DOM XSS ![](https://i.imgur.com/YrdD7TU.png) Введём в поиск рандомный запрос: ![](https://i.imgur.com/H2fIl1M.png) Найдём запрос в Burp Suite: ![](https://i.imgur.com/CinCPr2.png) Перейдём в другую вкладку: ![](https://i.imgur.com/Oi3ZHAm.png) Отправим этот запрос ещё раз и получим ответ от сервера: ![](https://i.imgur.com/vVY8U79.png) Введём команду, что выводит единицу: ![](https://i.imgur.com/kIFgUmm.png) ![](https://i.imgur.com/iJFlv3A.png) ### CSRF: #### 1) Уязвимость CSRF без защиты ![](https://i.imgur.com/1AVAaTK.png) ![](https://i.imgur.com/4QQIhrQ.png) Залогинимся как wiener и пароль peter: ![](https://i.imgur.com/BGJp0CB.png) ![](https://i.imgur.com/gkxJCAF.png) Изменим email: ![](https://i.imgur.com/Zldvk7Q.png) ![](https://i.imgur.com/w4gI94S.png) Найдём запрос на изменение email: ![](https://i.imgur.com/2BR8Byv.png) Так как версия Burp Community, то скопируем скрипт и вставим нужные параметры на сервер, а затем отправим этот скрипт: ![](https://i.imgur.com/wjJXut2.png) ![](https://i.imgur.com/fp1qFHp.png) #### 2) CSRF, где проверка токена зависит от метода запроса ![](https://i.imgur.com/4zSZCwR.png) Залогинимся как и в прошлой лабораторной: ![](https://i.imgur.com/StOAYt3.png) Поменяем email: ![](https://i.imgur.com/gRcyqq5.png) ![](https://i.imgur.com/QnR5sHc.png) Найдём запрос на изменение email: ![](https://i.imgur.com/hfdVaZS.png) Отправим запрос в Repeater: ![](https://i.imgur.com/Cww4I8B.png) ![](https://i.imgur.com/S5THXjQ.png) Поменяем метод с Post на Get: ![](https://i.imgur.com/s98ZuFj.png) ![](https://i.imgur.com/bS8CJeB.png) Напишем скрипт, подставив свои значения, и отправим его: ![](https://i.imgur.com/dNfsylq.png) ![](https://i.imgur.com/Ay0erXA.png) ### SSRF: #### 1) Базовый SSRF против локального сервера ![](https://i.imgur.com/ng0Usw9.png) ![](https://i.imgur.com/6wprWub.png) Если попробовать прописать /admin на конце сайтовой строки, то увидим следующее: ![](https://i.imgur.com/LTpTxJi.png) Нажмём на check stock с включенным Burp: ![](https://i.imgur.com/4evJEdS.png) Нажмём на forward: ![](https://i.imgur.com/fRScsM4.png) Увидим, где появляется текст на сайте: ![](https://i.imgur.com/vLRZ5pM.png) Отправим отслеженный запрос в Repeater и нажмём на send, где увидим ссылку на удаление carlos: ![](https://i.imgur.com/wL5ZqfU.png) Пропишем в StockApi следующую ссылку, чтобы удалить пользователя carlos: ![](https://i.imgur.com/iMr24EZ.png) ![](https://i.imgur.com/xZnZvfS.png) #### 2) SSRF с обходом фильтра через открытую уязвимость перенаправления ![](https://i.imgur.com/pL51l89.png) Нажмём на Check stock: ![](https://i.imgur.com/c1Wo9qS.png) ![](https://i.imgur.com/W6YJ5QJ.png) Пропишем в параметре crsf http://192.168.0.12:8080/admin ![](https://i.imgur.com/03tyhNW.png) И увидим следующее оповещение под списка: ![](https://i.imgur.com/9bhGZfp.png) Перейдём на следующую страницу в магазине и отправим forward: ![](https://i.imgur.com/1RhffX0.png) Запрос отправим в Repeater и нажмём send: ![](https://i.imgur.com/ivBL1NE.png) После этого высветятся пользователи: ![](https://i.imgur.com/JX062Hu.png) Изменим stockApi на следующую строчку, что удалит пользователя, и перейдём обратно на вкладку Proxy, где нажмём на forward: ![](https://i.imgur.com/JeeG2Ls.png) ![](https://i.imgur.com/o8y9fU8.png) ![](https://i.imgur.com/74236Wj.png) ### RCE: #### 1) Внедрение команды ОС, простой случай ![](https://i.imgur.com/e0TTzDa.png) ![](https://i.imgur.com/z8BzqM1.png) Перейдём на страницу продукта и нажмём Check store: ![](https://i.imgur.com/V1yepeS.png) Перейдём в burp, который был до этого включён: ![](https://i.imgur.com/5lIaRnQ.png) Изменим параметр storeId, дописав |whoami ![](https://i.imgur.com/UjHRqcG.png) Увидим имя пользователя: ![](https://i.imgur.com/biGCh4Y.png) ![](https://i.imgur.com/oZIYS8P.png) ### Path traversal: #### 1) Обход пути к файлу, простой случай ![](https://i.imgur.com/N4gVqvQ.png) Откроем картинку в новой вкладке: ![](https://i.imgur.com/de3wzuI.png) ![](https://i.imgur.com/38fYAch.png) Поменяем параметр filename на путь к файлу с пользователями: ![](https://i.imgur.com/HrviQGY.png) Отправим запрос в Repeater и нажмём send, после чего увидим файл /etc/passwd: ![](https://i.imgur.com/YqXgU9t.png) ![](https://i.imgur.com/YFBl0KC.png) #### 2) Обход пути к файлу, последовательности обхода заблокированы с обходом абсолютного пути ![](https://i.imgur.com/6a56F9G.png) Откроем картинку в новой вкладке, включив Burp: ![](https://i.imgur.com/6cZf7ZK.png) Отправим запрос в Repeater: ![](https://i.imgur.com/fcN9axa.png) Поменяем параметр filename, прописав /etc/passwd, и нажмём на send: ![](https://i.imgur.com/jSBtqaG.png) ![](https://i.imgur.com/HWvcNoZ.png)