---
title: Практическая работа 3
tags: pt-start, web basics
---
> [name=despersy]
> Перед начало работы отмечу, что изначально я не полностью прочитал условие работы и подумал, что надо выполнить атаки на скачаном сервере, ибо он для этого и сделан. Реализации данных атак я выделил в отдельные теги перед основной работой.
## SQL injection
### На скачанном докере
Сначала запускаем докер на 80 порту.

Пробуем саму базовую атаку. Она расссчитана на то, что сервер проверяем пароль возвращая true. В таком случае моя атака сработает, ибо я закрываю скобку данных, после чего записываю выражение, которое 100% вернет true, после чего комментирую всю остальную часть.

И она сработала.

### Реализация sql injection на сервере без защиты
Повторяем действие, которое было уже проделано и описано в предыдущем пункте.

Смотрим результат.

### Реализация sql injection с работой через скрытые файлы.
Тут уже никаких ссылок нет, поиска тоже, поэтому лезем в код сайта.

А вот и работа фильтра поиска. Возможно тут получиться что-нибудь устроить.

Если заменить значение в самом фильтре, возможно, выдаст что-то другое.

Результат печальный

Тогда лезем в burp и смотрим запрос через перехват

Меняет результат фильтра на другой, чтобы получить все данные.

Ловим ошибку и меняем запрос на запрос переделанный под ссылку.

И опять внутренняя ошибка...

Теперь лезем в путь и меняем его. Это тоже не сработало.

Тут до меня дошло, что я пока не проверял работу именно через запись в поисковой строке. Пробуем и получаем хороший результат.

### Атака с получением данных из другой таблицы.
Пробуем сначала просто попасть внутрь системы

Ага. Не работает.

В описании работа есть UNION, следовательно, надо работать через него. Пробуем изменить запрос на UNION SELECT 'столбец1','столбец2' --. Это делается, чтобы проверить количество столбцов в таблице.

Ясно, делаем иначе.

Пробуем написать тоже самое, только уже через строку. Запрос сработал.

Проверяем второй раз. Получаем две строчки в ответ.

Теперь попробуем вытащить все данные из таблицы пользователей. Получаем данные с паролями.

Берем данные админа и входим в систему.

### Атака sql с получение версии системы.
Пробуем напролом. Не выходит. Хотя у меня и запрос немного неверный.

За кадром я проверил еще несколько вариаций атак, которые были до этого, но все они не прошли. По итогу перешел в repeater и начал работать с запросами тут. Сработало.

гуглим вызов версии из sql и пробуем запрос, который был только что, только теперь заменяем первый столбец. Результат успешный

## xss атаки.
### Реализация на докер сервере
Пробуем внедрить код в поисковую строку. Результат положительный.

Теперь пытаемся закунуть полноценный скрипт. Это не выходит. Стоит отметить, что есть несколько вызовов alert, я использовал один из них, также монжо попробовать сделать это через iframe

Через iframe сработало.

Чисто из интереса пробую запустить сайт для рикролла, ибо ютуб блокируется как и другие сервисы.

### xss без кодирования
Пробуем воткнуть в ссылку запрос, получаем not found

Тогда начинаем лазить по сайту на предмет тектбоксов. Находим таковой в коментариях у товарам. Пробуем запустить тут.

Сработало.

### xss dom атака
Пробуем через поисковую строку. Не выходит. Значит идем дальше.


Поравшись в сайте, я пошел в его углубленное изучение вплоть до скриптов через burpsuite. В итоге нашел схему работы запроса. По сути мой текст в тупую добавляется к поисковому запросу.

Пробуем закрыть тег сделав другую img, но это не сработает

Тогда как вариант можно использовать svg, ибо у него есть параметры onload для скриптов

Результат удачный

### reflected xss
Ну раз в заголовке записан html, то и лезть надо в него.

Пробую добавить комментом сроку. Результат, очевидно, неудачный.

Пробуем немного изменить разметку между alert

Результат успешный.

### xss reflected dom
Надо полагать, что теперь вообще все атаки работать не будут не через burpsuite, поэтому лезем сразу в него. Есть путь и есть результат.

Рельтат нулевой

Потыкав еще по всем блокам я опять лезу в js. Тут можно заметить, что результат вычтитывается через eval. По идее закоментив ненужную часть я смогу выполнить запрос, нужный мне.

Пробуем

Результат успешный

## CSRF атаки
### Реализация на докере.
Тут я узнал, что есть таблица лидеров.

Переходим на страницу пользователя. Тут берем теги и готовим отправку на страницу


Так как новые браузеры не дают выполнять подобные атаки, я пользовался konqueror'ом для этого. На моменте запуска со второго окна есть возможность запустить код, после чего у пользователя измениться имя
```
<html>
<body>
<iframe srcdoc='
<html>
<body>
<form action="http://192.168.0.122/profile" method="POST">
<input type="hidden" name="username" value="desp_new_name" />
<input type="submit" value="Submit Request" />
</form>
<script>document.forms[0].submit();</script>
</body>
</form>
'></iframe>
</body>
</html>
```

### csrf атака на сервер без защиты
Так как в ТЗ присутствуют стартовые данные, то изначально входим под ними

Через intercepter ловим пост запрос и делаем из него csrf

Теперь жем по exploit server

и выполняем полученный скрипт

### csrf с открытым переходом
Повторяем действия и предыдущего пункта

Переходим в csrf generator

Запускаем код


## ssrf атаки
Пробуем попасть на страницу администратора. Требует пароль

Просто из интереса пробую инъекцию. Само собой нет

Тогда лезем по товарам. Есть активные кнопки в продуктах. Возможно именно это мне и нужно

Смотрим его через код страницы. А вот и запрос к базе появился

В ТЗ localhost, поэтому пробуем его. Немного не то, поэтому просто вводим


Теперь смотрим на запрос, привязанный к этим кнопкам

Немного модифицируем свой запрос

Удаляем пользователя и получаем поздравления

### ssrf валидация токенов
Сразу берем пакет и отправляем в репитер

Пробуем отправить запрос на путь админа

В итоге получаем список пользователей

Через этот же репитер выполняем удаление пользователя

Смотрим на результат

## RCE
Как и раньше начинаем с перехвата трафика к серверу и попыток его модифицировать

Подобным образом мы уже пытались выполнить rce, поэтому попробую еще раз.

И да, ls сработал

Теперь запускаем whoami

Смотрим на результат

## Path traversal
### Простой вариант
Описание выводится через фильтрацию, поэтому смотрим дальше

Пробуем на rce

Не-а.

Пробуем второй вариант

Ну, картинку сломал

Пробуем выйти за границы пути. Почему несколька "../"? /var/www/html. Мы выходим из каждой директории до корня и идет в /etc/passwd. /etc/passwd просто я уже пробовал, поэтому пошел выходит постепенно из директории, ибо нахождение всех файлов в корне html могло быть и неверным.

Смотрим ответ от сервера.


### path traversal при помощи абсолютного пути
Пробуем повторить прошлую работу, постепенно добавляя к пути ../

аа... И не пришлось даже. Так даже лучше
