CardHolder
Новый участник
- Регистрация
- 02.10.2019
- Сообщения
- 2
- Реакции
- 4
Всем привет! В этой статье я расскажу Вам как манипулировать сообщениями и соединениями WebSocket, опишу виды уязвимостей, которые могут возникнуть при работе WebSockets, и приведу несколько примеров использования уязвимостей WebSocket. Поехали =)
WebSockets
Обнаружение уязвимостей безопасности WebSockets обычно включает в себя манипулирование различными способами.
Вы можете сделать это с помощью Burp Suite.
Перехват и изменение сообщений WebSocket
Вы можете использовать Burp Proxy для перехвата и изменения сообщений WebSocket следующим образом:
Помимо перехвата и изменения сообщений WebSocket на лету, вы можете воспроизводить отдельные сообщения и генерировать новые сообщения. Вы можете сделать это с помощью Burp Repeater:
В принципе, в отношении WebSockets может возникнуть практически любая уязвимость веб-безопасности:
Большинство основанных на вводе уязвимостей, влияющих на WebSockets, могут быть обнаружены и использованы путем изменения содержимого сообщений WebSocket.
Например, предположим, что приложение чата использует WebSockets для отправки сообщений чата между браузером и сервером. Когда пользователь вводит сообщение чата, на сервер отправляется сообщение WebSocket, подобное следующему:
Чтобы свести к минимуму риск уязвимостей безопасности, возникающих с WebSockets, используйте следующие рекомендации:
WebSockets
- WebSockets широко используются в современных веб-приложениях.
- Они инициируются через HTTP и обеспечивают долговременные соединения с асинхронной связью в обоих направлениях.
- WebSockets используются для самых разных задач, включая выполнение действий пользователя и передачу конфиденциальной информации.
- Практически любая уязвимость веб-безопасности, возникающая при обычном HTTP, также может возникать в связи с коммуникациями WebSockets.
Обнаружение уязвимостей безопасности WebSockets обычно включает в себя манипулирование различными способами.
Вы можете сделать это с помощью Burp Suite.
Перехват и изменение сообщений WebSocket
Вы можете использовать Burp Proxy для перехвата и изменения сообщений WebSocket следующим образом:
- Настройте браузер на использование Burp Suite в качестве прокси-сервера.
- Перейдите к функции приложения, которая использует WebSockets. Вы можете определить, что WebSockets используется с помощью приложения и ищет записи, появляющиеся на вкладке истории WebSockets в Burp Proxy.
- На вкладке «Intercept» прокси Burp убедитесь, что перехват включен.
- Когда сообщение WebSocket отправляется из браузера или сервера, оно будет отображаться на вкладке « Intercept» для просмотра или изменения. Нажмите кнопку «Forward», чтобы переслать сообщение.
Помимо перехвата и изменения сообщений WebSocket на лету, вы можете воспроизводить отдельные сообщения и генерировать новые сообщения. Вы можете сделать это с помощью Burp Repeater:
- В Burp Proxy выберите сообщение в истории WebSockets или на вкладке «Intercept» и выберите «Send to Repeater» из контекстного меню.
- В Burp Repeater вы теперь можете редактировать выбранное сообщение и отправлять его снова и снова.
- Вы можете ввести новое сообщение и отправить его в любом направлении клиенту или серверу.
- На панели «History» в Burp Repeater вы можете просмотреть историю сообщений, которые были переданы через соединение WebSocket. Он включает в себя сообщения, созданные вами в Burp Repeater, а также сообщения, созданные браузером или сервером через одно и то же соединение.
- Если вы хотите отредактировать и повторно отправить любое сообщение из панели истории, вы можете сделать это, выбрав сообщение и выбрав «Edit and resend» в контекстном меню.
В принципе, в отношении WebSockets может возникнуть практически любая уязвимость веб-безопасности:
- Предоставленные пользователем входные данные, передаваемые на сервер, могут обрабатываться небезопасными способами, что приводит к таким уязвимостям, как инъекция SQL или внедрение внешних объектов XML.
- Некоторые слепые уязвимости, достигаемые с помощью WebSockets, могут быть обнаружены только с помощью (OAST) методов.
- Если данные, контролируемые злоумышленником, передаются через WebSockets другим пользователям приложения, это может привести к XSS или другим уязвимостям на стороне клиента.
Большинство основанных на вводе уязвимостей, влияющих на WebSockets, могут быть обнаружены и использованы путем изменения содержимого сообщений WebSocket.
Например, предположим, что приложение чата использует WebSockets для отправки сообщений чата между браузером и сервером. Когда пользователь вводит сообщение чата, на сервер отправляется сообщение WebSocket, подобное следующему:
- {«message»:»Hello Carlos»}
- <td>Hello Carlos</td>
- {«message»:»<img src=1 onerror=’alert(1)’>»}
Чтобы свести к минимуму риск уязвимостей безопасности, возникающих с WebSockets, используйте следующие рекомендации:
- Используйте протокол wss:// (WebSockets over TLS).
- Hardcoded URL-адреса конечной точки WebSockets и, конечно, не включть контролируемые пользователем данные в этот URL-адрес.
- Защитите сообщение рукопожатия WebSocket от CSRF, чтобы избежать уязвимостей, связанных с захватом WebSockets между сайтами.
- Считайте данные, полученные через WebSocket, ненадежными в обоих направлениях.Безопасная обрабатывайте данные как на стороне сервера, так и на стороне клиента, чтобы предотвратить уязвимости на основе ввода, такие как SQL инъекция и межсайтовый скриптинг.