---
# System prepended metadata

title: Untitled

---

Занятие 3. Основные атаки и паттерны 
https://portswigger.net/web-security

1. SQL-injection уязвимости:

1.1 https://portswigger.net/web-security/sql-injection/lab-login-bypass
Чтобы реализовать атаку Sql иньекции в данной лаборатории, для начала найдем запрос с учетными данными, который взаимодействует с базой данных.
Этим запросом является POST запрос авторизации.
![](https://i.imgur.com/ftb7o2i.png)

Введем логин и любой пароль.Включим в бурп режим перехвата. При перехвате запроса изменим в нем параметр username на administrator и закомментируем остальную часть запроса с паролем.
![](https://i.imgur.com/pQok8q9.png)

В результате получен доступ к аккаунту администратора.
![](https://i.imgur.com/l6bSUJ9.png)


1.2 https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data
В данной лаборатории сказано,что имеется уязвимость в фильтре категорий продуктов.
![](https://i.imgur.com/0OLdU5L.png)

Перехватим запрос выбора категории продуктов бурпом.
![](https://i.imgur.com/gPxjU3H.png)
Если поставить кавычку, получим внутреннюю ошибку сервера,что говорит о возможном наличии иньекции.
Так как в условии сказано что запрос к базе данных будет иметь вид: 
SELECT * FROM products WHERE category = 'Acessories' AND released = 1

Добавим к значению параметра категории пэйлоад 
' OR 1 = 1 -- , для того чтобы закрыть релиз 1 как коментарий, и логика запроса к БД получится что-то вроде этого:
SELECT * FROM products WHERE category = 'Acessories'+ OR + 1 = 1 -- AND released = 1.
![](https://i.imgur.com/Lo13xr3.png)

В результате получим доступ к скрытым данным, без ограничения relesed = 1.
![](https://i.imgur.com/o94oI7F.png)



1.3 https://portswigger.net/web-security/sql-injection/union-attacks/lab-retrieve-data-from-other-tables
По условию лабораторной работы база данных содержит таблицу users, со столбцами username и password.
Чтобы решить лабораторную задачу, выполните атаку UNION с внедрением SQL , которая извлекает все имена пользователей и пароли и использует эту информацию для входа в систему как administrator.

Найдем уязвимый параметр с помощью подстановки кавычки, и анализируя поведение сервера.
Им окажется параметр категория,в фильтре продуктов.
![](https://i.imgur.com/KmJIvM4.png)

Из условия известно что количество столбцов 2.
Выясним тип данных. 
C помощью UNION объединения введем строковый тип данных,если один из столбцов окажется не строковым увидим ошибку.
![](https://i.imgur.com/JJGDiAO.png)
![](https://i.imgur.com/LQuAZ4A.png)
Видим что данные отображаются на странице.

Сформируем запрос к таблице users, с объединением столбцов username и password.
'+UNION+SELECT+username,+password+FROM+users--
![](https://i.imgur.com/FtMMVCi.png)

Получим данные администратора и зайдем в админку.
![](https://i.imgur.com/LWaEXRs.png)
![](https://i.imgur.com/JOeu3AT.png)

1.4 https://portswigger.net/web-security/sql-injection/examining-the-database/lab-querying-database-version-mysql-microsoft

Эта лабораторная работа содержит уязвимость SQL-инъекции в фильтре категорий продуктов. Вы можете использовать атаку UNION для получения результатов введенного запроса.
Чтобы решить лабораторную работу, отобразите строку версии базы данных.

При вводе кавычки в параметр категории получим ошибку.
![](https://i.imgur.com/XUQSx1y.png)

Определим количество столбцов с помощью запроса ' order by--
![](https://i.imgur.com/pojcIW8.png)

' order by 1-- выдает 500 ошибку.
Используем шпаргалку по Sql инъекциям.Видим что в базах данных MySql символ комментария может быть #.
![](https://i.imgur.com/HR3Nxwg.png)

Ошибки не возникает при замене комментария.
Ищем количество столбцов. ' order by 1# При запросе 3 столбца выдает ошибку. Выясняем что столбцов 2.
![](https://i.imgur.com/sBITpW7.png)

Попытаемся понять какой тип данных.Попробуем строковый тип в оба столбца,используя запрос объединения. ' UNION SELECT 'aaa','bbb'#
![](https://i.imgur.com/0hJcVaQ.png)

Наш запрос отобразился.
Так как мы знаем,что тип комментария #, который используется в MySql. То запрос версии будет @@version.
' UNION SELECT @@version,'bbb'#
![](https://i.imgur.com/O7ePbKY.png)
![](https://i.imgur.com/6O4JPkF.png)


2. XSS уязвимости:

2.1 https://portswigger.net/web-security/cross-site-scripting/stored/lab-html-context-nothing-encoded
По описанию эта лабораторная работа содержит сохраненную уязвимость межсайтового скриптинга в функции комментариев.
Чтобы решить эту лабораторную задачу, отправьте комментарий, который вызывает alert функцию при просмотре сообщения в блоге.
![](https://i.imgur.com/rPMxwAh.png)
![](https://i.imgur.com/mgiHmeg.png)

При просмотре блога скрипт исполняется.
![](https://i.imgur.com/Rv0OChl.png)


2.2 https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink
По условию лабораторная работа содержит уязвимость межсайтового скриптинга на основе модели DOM в функции отслеживания поисковых запросов. Он использует функцию JavaScript document.write, которая записывает данные на страницу. Функция document.write вызывается с данными из location.search, которыми вы можете управлять с помощью URL-адреса веб-сайта.

Введем любую строку чтобы посмотреть в какой атрибут тега мы попадаем. Это атрибут img src.
![](https://i.imgur.com/mIrAtdj.png)
img src="/resources/images/tracker.gif?searchTerms=asd123"

Соответственно,чтобы выйти из этого атрибута, закроем его.
Используем обработчик событий загрузки svg Onload.
![](https://i.imgur.com/XlUQRUP.png)

У нас получилось выйти за пределы атрибута.
img src="/resources/images/tracker.gif?searchTerms=">< svg onload= alert(1)>

Так же тут отрабатывает и обычный скрипт ">< script> alert(1)</script >
(Пробелы в полезной нагрузке здесь в Hack.md умышленны,так как браузер себя странно ведет при виде скрипта)

![](https://i.imgur.com/PioDyWW.png)

2.3 https://portswigger.net/web-security/cross-site-scripting/contexts/lab-javascript-string-angle-brackets-html-encoded
Эта лабораторная работа содержит отраженную уязвимость межсайтового скриптинга в функции отслеживания поисковых запросов, где закодированы угловые скобки. 
Отражение происходит внутри строки JavaScript. Чтобы решить эту лабораторную задачу, выполните атаку межсайтового скриптинга, которая вырывается из строки JavaScript и вызывает alert функцию.

Для начала введем обычные символы.Посмотрим куда они попадают. Функция Document Write.
![](https://i.imgur.com/1OY68xz.png)

Введем полезную нагрузку для проверки.
![](https://i.imgur.com/pMjnjnd.png)

Посмотрим ответ в бурп,чтобы увидеть что произошло с наши скриптом.
Мы не вырвались из контекста, и угловые скобки заенкодились. Обычный пэйлоад здесь не подойдет.
![](https://i.imgur.com/gHSHkyf.png)

Используем вот такую нагрузку,чтобы вырваться из контекста функции.
'-script(1)-'
![](https://i.imgur.com/uhwHuif.png)
![](https://i.imgur.com/GdedEnD.png)


2.4 https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-dom-xss-reflected
Эта лабораторная работа демонстрирует отраженную уязвимость DOM. Уязвимости отраженной модели DOM возникают, когда приложение на стороне сервера обрабатывает данные из запроса и повторяет данные в ответе.

Откроем бурп и введем какие нибудь данные.
Видим что помимо обычного запроса GET и ответа с HTML,есть еще такой же запрос, но с ответом Json, в котором отражаются наши данные.
![](https://i.imgur.com/QnSjN40.png)

Протестируем на предмет защиты входных данных.
Заметим у обратной косой черты интересное поведение.
![](https://i.imgur.com/m4zzvZ1.png)
![](https://i.imgur.com/3bfRFWp.png)
![](https://i.imgur.com/l1IbXaH.png)

Окончательный пэйлоад будет вот таким: \"+alert(1)}//
![](https://i.imgur.com/8kAhL41.png)

В результате формируется следующий ответ:
{"results":[ ],"searchTerm":"\\" alert(1)}//"}
![](https://i.imgur.com/JlNldEv.png)
![](https://i.imgur.com/vmN3tat.png)


3. CSRF:

3.1 https://portswigger.net/web-security/csrf/lab-no-defenses
Функция изменения электронной почты в этой лаборатории уязвима для CSRF.
Чтобы решить лабораторную задачу, создайте некоторый HTML-код, который использует атаку CSRF для изменения адреса электронной почты зрителя и загрузите его на свой сервер эксплойтов.

![](https://i.imgur.com/kWqrZ8U.png)

Перехватим запрос на изменение почты пользователя.
![](https://i.imgur.com/HUI2J3G.png)

Перейдем на сервер эксплойтов и напишем HTML который будет отправлять запрос на изменение почты при переходе.
![](https://i.imgur.com/xLM5Ysz.png)

Протестируем на себе. Адрес изменился.
![](https://i.imgur.com/kAnLu8v.png)

Нажмем отправить эксплойт жертве.
![](https://i.imgur.com/6SQLP9l.png)


3.2 https://portswigger.net/web-security/csrf/lab-token-validation-depends-on-request-method
Функция изменения электронной почты в этой лаборатории уязвима для CSRF. Он пытается блокировать CSRF-атаки, но применяет защиту только к определенным типам запросов.

Отправим запрос на изменение почты.
![](https://i.imgur.com/W1WhgAg.png)

Видим что смена ящика защищена токеном CSRF.
![](https://i.imgur.com/TlnPkZ5.png)

Но,при измении метода запроса токен перестает работать.
![](https://i.imgur.com/e8rRoM0.png)

Создадим эксплойт и проверим на себе,меняет ли он адрес почты.
![](https://i.imgur.com/NTcIkD7.png)
![](https://i.imgur.com/QclNqDn.png)

Отправим жертве чтобы пройти лабораторию.
![](https://i.imgur.com/0Y8IoBM.png)


4. SSRF:

4.1 https://portswigger.net/web-security/ssrf/lab-basic-ssrf-against-localhost
В этой лаборатории есть функция проверки запасов, которая извлекает данные из внутренней системы.
Чтобы решить лабораторную задачу, измените URL-адрес проверки акций, чтобы получить доступ к интерфейсу администратора, http://localhost/admin и удалите пользователя carlos.

Попробуем получить доступ к панели администратора.
Нас не пускают.
![](https://i.imgur.com/oY6OP46.png)

Найдем запрос проверки складских остатков.
![](https://i.imgur.com/G9UdAmG.png)

Используем его чтобы попасть в панель адм-ра и удалить Карлоса.
![](https://i.imgur.com/pcp8e95.png)
![](https://i.imgur.com/Cp8Mgfy.png)
![](https://i.imgur.com/m1ekRSn.png)

4.2 https://portswigger.net/web-security/ssrf/lab-ssrf-filter-bypass-via-open-redirection

В этой лаборатории есть функция проверки запасов, которая извлекает данные из внутренней системы.
Чтобы решить лабораторную задачу, измените URL-адрес проверки акций, чтобы получить доступ к интерфейсу администратора, http://192.168.0.12:8080/adminи удалите пользователя carlos.
Средство проверки продуктов ограничено доступом только к локальному приложению, поэтому вам сначала нужно будет найти открытое перенаправление, влияющее на приложение.

По условию лабораторной работы найдем открытое перенаправление.
![](https://i.imgur.com/xCL5qzl.png)

Найдем уязвимое место проверки продуктов.
![](https://i.imgur.com/0ETmsQW.png)

Используем перенаправление,чтобы обойти защиту.
![](https://i.imgur.com/5HvScYz.png)

Добавим полный путь для удаления Карлоса.
![](https://i.imgur.com/os6uzrx.png)
![](https://i.imgur.com/tORFvOa.png)


5. RCE:

5.1 https://portswigger.net/web-security/os-command-injection/lab-simple
Эта лабораторная работа содержит уязвимость, связанную с внедрением команд ОС в средстве проверки запасов продукта.

Перехватим запрос на проверку наличия продуктов.
![](https://i.imgur.com/9mjh7MV.png)

Проверим первый,а затем второй параметр.
![](https://i.imgur.com/DOQjqBV.png)
![](https://i.imgur.com/KPyLVnp.png)
![](https://i.imgur.com/3vJs578.png)


6. Path traversal:

6.1 https://portswigger.net/web-security/file-path-traversal/lab-simple
Эта лабораторная работа содержит уязвимость обхода пути к файлу при отображении изображений продуктов.
Чтобы решить лабораторную работу, извлеките содержимое /etc/passwdфайла.

Нажмем посмотреть фото продукта и перехватим запрос.
Подставим путь к файлу.
![](https://i.imgur.com/ihlEcmJ.png)
![](https://i.imgur.com/pmaUuGh.png)


6.2 https://portswigger.net/web-security/file-path-traversal/lab-absolute-path-bypass
Эта лабораторная работа содержит уязвимость обхода пути к файлу при отображении изображений продуктов.
Приложение блокирует последовательности обхода, но обрабатывает предоставленное имя файла как относящееся к рабочему каталогу по умолчанию.

Нажмем просмотреть изображение в новой вкладке, изменим путь до изображения на путь к /etc/passwd.
![](https://i.imgur.com/CYac1CY.png)

Перехватим запрос и увидим файл etc/passwd
![](https://i.imgur.com/YqbsiLM.png)
![](https://i.imgur.com/Qk8lsrW.png)

















                                            
                                            












