Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? •...
-
Upload
phungduong -
Category
Documents
-
view
262 -
download
9
Transcript of Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? •...
![Page 1: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/1.jpg)
Web Application Fuzzing best practice
![Page 2: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/2.jpg)
whoami
• Константин Педан
• Пентестер в SRC Security Research & Consulting GmbH
• 10+ лет опыта работы в ИТ, 5+ лет опыта в ИБ
• GIAC GPEN, GIAC GXPN, PCI DSS ASV
![Page 3: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/3.jpg)
Краткое содержание
• Что такое фаззинг?
• Фаззинг веб приложений
• Продвинутый веб фаззинг
• Автоматизация продвинутого фаззинга
![Page 4: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/4.jpg)
Что такое фаззинг?
• техника тестирования путем передачи на вход приложения неправильных, случайных или неожиданных данных
• важная часть SDLC при разработке безопасных приложений
• исследовательский инструмент с высоким уровнем идентификации уязвимостей
![Page 5: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/5.jpg)
Причины популярности
• Фаззинг эффективнее чем анализ исходного кода • утечка исходного кода «Windows 2000» и «NT 4.0», в 2004 не дала взрывного роста найденных уязвимостей
• CVE-2014-6278 (Shellshock), CVE-2016-6309 (statem/statem.c in OpenSSL 1.1.0a), CVE-2017-5340 (RCE in PHP < 7.0.15)
• Низкий порог вхождения
• Практически полная автоматизация процесса
![Page 6: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/6.jpg)
Типы фаззинга
• «Глупый» фаззинг • случайные данные
• статические данные
• мутации данных
• «Умный» фаззинг • генерация данных
• умные мутации
![Page 7: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/7.jpg)
Типы фаззинга
• Фаззинг случайными данными • самый не эффективный подход
• Фаззинг путем мутации • берем валидные данные и вносим аномалии
• быстрый старт, результативность зависит от качества аномалий
• Фаззинг путем генерации • создаем тестовые запросы на основе документации
• медленный старт, требует знания протокола, высокая эффективность
![Page 8: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/8.jpg)
Критерии эффективности
• Максимальная глубина тестирования кода приложения при минимальном количестве итераций
• Реализуемо с любым подходом, глубину тестирования можно измерить, позволяет проверить эффективность фаззинга
![Page 9: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/9.jpg)
Инструментарий
• Фреймворки • Radamsa, Sulley, Peach, SPIKE, American Fuzzy Lop …
• Оценка эффективности • Pai Mei, Valgrind, DynamoRIO, DTrace …
![Page 10: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/10.jpg)
Работы которые стоит почитать
• Fuzzing for Software Security Testing and Quality Assurance, Charlie Miller, 2008, ISBN 13: 978-1-59693-214-2
• Fuzzing: Brute Force Vulnerability Discovery, Michael Sutton, 2007, ISBN 0-32-144611-9
• Babysitting an Army of Monkeys, Charlie Miller, 2010
![Page 11: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/11.jpg)
Фаззинг веб приложений
![Page 12: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/12.jpg)
Особенности веб фаззинга
• Ограниченый набор точек куда можно передать данные: • URI, Header, Cookies, Post data
• Непредсказуемая архитектура приложения и сетевой доступ
• Отсутствие стандартного ответа об ошибке
• Невозможность оценить глубину тестирования
![Page 13: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/13.jpg)
Типичный веб фаззинг #1
GET / HTTP/1.1 Accept: */* Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cache-Control: no-cache Pragma: no-cache Connection: close
HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 8 Cache-Control: no-cache, no-store, must-revalidate Date: Mon, 09 Oct 2017 20:12:29 GMT Connection: close
—> стандартный запрос
<— стандартный ответ
![Page 14: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/14.jpg)
Типичный веб фаззинг #2
GET /AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA HTTP/1.1 Accept: */* Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cache-Control: no-cache Pragma: no-cache Connection: close
HTTP/1.1 404 Not Found Content-Type: text/html Content-Length: 349 Connection: close Date: Mon, 09 Oct 2017 20:14:15 GMT Server: ECSF (dca/53FA)
—> запрос с ошибкой
<— стандартная ошибка
![Page 15: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/15.jpg)
Типичный веб фаззинг #3
GET /%00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA HTTP/1.1 Accept: */* Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cache-Control: no-cache Pragma: no-cache Connection: close
HTTP/1.1 500 Internal Server Error Content-Type: text/plain Content-Length: -1 Cache-Control: no-cache, no-store, must-revalidate Date: Mon, 09 Oct 2017 20:14:29 GMT Connection: close
—> запрос с payload
<— аномальная ошибка
![Page 16: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/16.jpg)
Стратегия веб фаззинга
• Мы не можем оценить эффективность как в обычном фаззинге
• Но можем построить эффективную стратегию ответив на следующие вопросы: • что тестируем?
• чем тестируем?
• что пытаемся обнаружить?
• когда останавливаем тестирование?
![Page 17: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/17.jpg)
Что мы тестируем?
• Тип приложения • форма поиска, парсер данных, профайл пользователя …
• В каком виде передаются данные? • текст, бинарный формат
• Дополнительный особенности • end-to-end шифрование, сжатие данных, обязательные параметры, валидация данных, подпись …
![Page 18: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/18.jpg)
Чем тестируем?
• Сканеры • IBM AppScan, Acunetix, Burp Suite, Arachni, Nikto …
• Intruders • Burp Suite, Zed Attack Proxy …
![Page 19: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/19.jpg)
Сканер уязвимостей
• Минимальное участие пен.тестера
• Плохо работает если часть логики в браузере клиента
• Полная зависимость результата от качества сканера
![Page 20: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/20.jpg)
Веб фаззинг != поиск инъекций
• Сканеры фокусируются на разнообразные инъекции • SQL, JS (XSS), XML, JSON, LDAP, OS Command
• Другие уязвимости тестируют поверхностно • Buffer overflow, Directory Traversal, Race condition, обход бизнес логики …
![Page 21: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/21.jpg)
Ручной подход / Intruder
• Эффективнее тестирует бизнес логику и сложные уязвимости
• Вносится человеческий фактор
• Полная зависимость результата от опыта пен.тестера
![Page 22: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/22.jpg)
Что пытаемся обнаружить?
• Аномалий в ответах • HTTP коды
• различия в длине ответов
• различия во времени ответа
• сообщения об ошибках
• обрывы сессии и конекта
• Повторяемость аномалии
![Page 23: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/23.jpg)
Когда останавливаем тестирование?
• При достаточном количестве итераций можно найти все баги (теоретически)
• Каждый последующий баг найти сложнее чем предыдущий
• Тестирование стоит остановить как только выходим на «плато» графика: количество багов/количество итераций
точка остановкибаги
итерации
![Page 24: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/24.jpg)
Ошибка выжившего в фаззинге
• Payload’ы для сканеров и Intruder’ов на основе известных уязвимостей
• Известные векторы атаки позволяют найти только известные уязвимости
• Как искать неизвестные?
Total vulns
C
B A
M
![Page 25: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/25.jpg)
Продвинутый веб фаззинг
![Page 26: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/26.jpg)
Расширяем векторы атаки
• Добавляем к существующим данным новые мутации
• Мутации создают новые payloads
• Новые payloads == потенциально новые уязвимости
![Page 27: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/27.jpg)
Мутации
• Набор мутаций ограничен только фантазией
• Потенциально полезные мутации • понижение или повышение ID
• добавление случайного байта
• null - мутация
• повторение последовательности байтов
![Page 28: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/28.jpg)
Мутации ID
• GET /account_info?id=58782• 58832, 57856, -12541, 0, 15896332
• POST {«method»:»get_order","order_id":"A6528432"}• A1, A65535, A170141183460469231731687303715884105728
• Cookie: _ga=GA1.2.185633756.1488912637; UID=22134• 5273289, -22006, 9223372036854775809, 21354
![Page 29: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/29.jpg)
Пример #1
POST /api/getaccountdetails
{"AgreementId":0,"Device":"iPhone","AccountId":9161179,"PasswordHash":"***********************************","Language":"2","Login":"testuser"}
![Page 30: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/30.jpg)
Добавление случайного байта
_q=true&id=38736463233323&page=1&sid=id&sort=true&query=status%255B%255D%3D9%26keyword%3D%26keyword_similar%3D-1%26is_test%3D-1%26country_list%3D%26country%3D%26react_from%3D%26react_to%3D%26reg_from%3D%26reg_to%3D%26stat_from%3D%26stat_to%3D%26is_editing_needed%3D-1%26search_perset%3D0%26search_configuration_title%3D
![Page 31: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/31.jpg)
Пример #2
POST /admin/get_users/
_q=true&id=38736463233323&page=1&sid=id&sort=true&query=status%255B%255D%3D9[%26keyword%3D%2$6keyword_similar%3D-1%26is_test%3D-1%26country_list%3D%26country%3D%26react_from%3D%26react_to%3D%26reg_from%3D%26reg_to%3D%26stat_from%3D%26stat_to%3D%26is_editing_needed%3D-1%26search_perset%3D0%26search_configuration_title%3D
![Page 32: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/32.jpg)
Пример #2
{"error_type":"","errors":"A Database Error Occurred"}
![Page 33: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/33.jpg)
Null - мутация
• Повторение одного и того же запроса без внесения модификаций
• Несколько параллельных потоков и общее количество запросов >2000
• Позволяет идентифицировать проблемы с утечками памяти и CPU, обнаружить «состояние гонки»
![Page 34: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/34.jpg)
Пример #3
POST /BankBackEnd/changepassword
sid=2120834214354325434&passwordField=WrongPassword123&confirmPasswordField=WrongPassword123
при 20 потоках запросов и >2000 обращений к серверу появляется состояние гонки (race condition) и система изменяет пароль пользователя
![Page 35: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/35.jpg)
Повторение последовательности байтов
• GET /user_info?name=hacker• hackeckeckeckeckeckeckeckeckeckeckeckeckeckeckeckeckkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkker
• POST {«method»:»get_order»,"order_id":"A6528432"}• A6526526526526526526526526526526526526526526526526526526526
526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526526528432
![Page 36: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/36.jpg)
Инструментарий
• Можно использовать практически любой фреймворк для фаззинга
• Radamsa a general-purpose fuzzer • https://github.com/aoh/radamsa
• Sulley fuzzing engine • https://github.com/OpenRCE/sulley
![Page 37: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/37.jpg)
Burp Intruder + Radamsa
Burp плагин Radamsa
Burp Intruder
http
burp API
bd: drop a byte bf: flip one bit bi: insert a random byte br: repeat a byte bp: permute some bytes bei: increment a byte by one bed: decrement a byte by one ber: swap a byte with a random one sr: repeat a sequence of bytes ld: delete a line lr2: duplicate a line li: clone and insert it nearby lr: repeat a line ls: swap two lines lp: swap order of lines td: delete a node tr2: duplicate a node ts1: swap one node with another one ts2: swap two nodes pairwise tr: repeat a path of the parse tree uw: try to make a code point too wide ui: insert funny unicode num: modify a textual number ft: jump to a similar position in block fn: likely clone data between similar positions fo: fuse previously seen data elsewhere
![Page 38: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/38.jpg)
Web fuzzer плагин:
• Отправка статических payloads
• Определение оптимальной мутации
• Генерация новых payload используя radamsa
![Page 39: Pedan Web Application fuzzing - 13.uisgcon.orgweb... · Что такое фаззинг? • техника тестирования путем передачи на вход приложения](https://reader033.fdocuments.us/reader033/viewer/2022051010/5abfc88f7f8b9aa15e8e6d46/html5/thumbnails/39.jpg)
ToDo:
• Добавить анализ ответов от сервера • статистика размера, времени ответа, количества тегов, валидация
HTML и т.д. и т.п.
• Реализовать автоматическую маркировку подозрительных ответов
• Добавить дополнительные кодировки для payloads • url encode, double url encode, js encode, html encode, unicode, unicode
2, unicode 2 + utf-8