Forwarded from Hunt Or Be Hunted (Alexey Kosmachev)
(PHP) Type Juggling
Этот пост начну с предповествования.
У различных языков программирования разный подход к типизации - то есть к тому, насколько строго ЯП будет относиться к типам переменным (int, float, string и т.д.). Здесь будет идти речь о свободно типизированных языках программирования (eng: loosely typed), а в частности о PHP, как о ЯП, который собрал в себе наиболее интересные штуки, о которых рассказано далее. Данные языки стараются "предугадывать", что имел в виду программист или пользователь и делать внутри неявное преобразование переменных в другие типы. К слову, некоторые подходы могут быть применимы и к другим свободно типизорованным ЯП, например Perl, JavaScript, но у них есть своя специфика, о которой здесь рассказывать не буду.
Итак,
🟪 Type Juggling - автоматическая конвертация типов в свободно типизированных языках программирования.
По своей сути это является особенностью языка, а не уязвимостью. Тем не менее, неаккуратное ее использование зачастую приводит к неожиданным последствиям, которые зачастую результируют в проблемы безопасности.
🟣 Тип:
Programming Language, Web, Server-Side.
Наибольший интерес в данном ключе вызывают операции сравнения. В PHP их два вида:
📝 свободное (loose):
📝 строгое (strict):
И самые интересные моменты всплывают как раз в первом типе.
🟣 Пример уязвимого кода:
В данном случае если пользователь введет что-то, что при преобразовании в int будет давать 0 (например
Еще один интересный пример
Больше подобных сравнений я поместил в скрине к посту (источник)
🟣 Влияние:
Такие штуки помогают обходить разные условные конструкции и критичность будет зависеть от расположения подобной проблемы в коде. Один из наиболее базовых и критичных импактов - возможность обходить контроль доступа при авторизации (сравнение хешей паролей) - тут и появилось понятие "магических хешей" (magic hashes).
🟣 Как защититься?
Использовать строгое (`===`) сравнение и использовать функции
На самом деле, в наши дни такое можно встретить только на CTF, где оно используется очень часто. Последние версии PHP умеют элегантно справляться с подобными проблемами и большинством способов обхода защиты, а даже если и используется более старая версия языка, то обнаружить эту проблему без наличия исходных кодов (и явных признаков от самого приложения) крайне сложно. Но тем не менее, знать о существовании этого очень полезно и может пригодиться во многих сферах работы.
#edu #vuln #programming #web #php #php_type_juggling #magic_hashes #type_juggling
Этот пост начну с предповествования.
У различных языков программирования разный подход к типизации - то есть к тому, насколько строго ЯП будет относиться к типам переменным (int, float, string и т.д.). Здесь будет идти речь о свободно типизированных языках программирования (eng: loosely typed), а в частности о PHP, как о ЯП, который собрал в себе наиболее интересные штуки, о которых рассказано далее. Данные языки стараются "предугадывать", что имел в виду программист или пользователь и делать внутри неявное преобразование переменных в другие типы. К слову, некоторые подходы могут быть применимы и к другим свободно типизорованным ЯП, например Perl, JavaScript, но у них есть своя специфика, о которой здесь рассказывать не буду.
Итак,
По своей сути это является особенностью языка, а не уязвимостью. Тем не менее, неаккуратное ее использование зачастую приводит к неожиданным последствиям, которые зачастую результируют в проблемы безопасности.
Programming Language, Web, Server-Side.
Наибольший интерес в данном ключе вызывают операции сравнения. В PHP их два вида:
==
или !=
===
иди !==
И самые интересные моменты всплывают как раз в первом типе.
if (md5($user_input) == '0e732793752744629114494286417663') { ...
В данном случае если пользователь введет что-то, что при преобразовании в int будет давать 0 (например
GTJ3YSmZ
в md5 будет 0e{digits...}), то условие будет истинным, так как для PHP обе эти строки будут конвертироваться в 0 (данный синтаксис возводит 0 в огромную степень, что результирует в 0).Еще один интересный пример
'abc' == 0
. Данное условие будет истинным, так как в первой строке PHP будет смотреть на ее начало в поиске цифр, по ненахождению которых он будет считать строку нулем. То есть следующее условие также будет истинным: '23abc' == 23
Больше подобных сравнений я поместил в скрине к посту (источник)
Такие штуки помогают обходить разные условные конструкции и критичность будет зависеть от расположения подобной проблемы в коде. Один из наиболее базовых и критичных импактов - возможность обходить контроль доступа при авторизации (сравнение хешей паролей) - тут и появилось понятие "магических хешей" (magic hashes).
Использовать строгое (`===`) сравнение и использовать функции
password_hash()
, password_verify()
и hash_equals()
для работы с хешами и паролями. (Ну и md5 не используйте для этих целей - он уже давно признан старым, оставьте в покое старичка).На самом деле, в наши дни такое можно встретить только на CTF, где оно используется очень часто. Последние версии PHP умеют элегантно справляться с подобными проблемами и большинством способов обхода защиты, а даже если и используется более старая версия языка, то обнаружить эту проблему без наличия исходных кодов (и явных признаков от самого приложения) крайне сложно. Но тем не менее, знать о существовании этого очень полезно и может пригодиться во многих сферах работы.
#edu #vuln #programming #web #php #php_type_juggling #magic_hashes #type_juggling
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Информационная опасность
https://virustest.gov.ru
Национальный мультисканер.
https://opentip.kaspersky.com/
TI портал и платформа анализа Лаборатории Касперского.
https://www.virustotal.com
Обнаружение вредоносного ПО антивирусными движками.
https://tria.ge
Сервис-песочница для анализа вредоносных программ. Он позволяет пользователям бесплатно анализировать образцы вредоносных программ в настраиваемой среде.
https://www.hybrid-analysis.com
Бесплатный автоматизированный сервис анализа вредоносных программ, работающий на базе Falcon Sandbox. Пользователи могут загружать файлы или URL-адреса для мгновенного анализа, сервис обеспечивает анализ угроз с использованием машинного обучения, TI, антивирусных движков и статического анализа. Поддерживает сопоставление правил YARA.
https://analyze.intezer.com
Обеспечивает анализ вредоносных программ и TI. Помогает выявлять сходства между известными семействами вредоносных программ.
https://cuckoosandbox.org
Знаменитая Кукушка. Автоматизированная система анализа вредоносных программ с открытым исходным кодом. Она позволяет пользователям анализировать подозрительные файлы и URL-адреса в песочнице.
https://www.joesandbox.com
Автоматизированная платформа анализа вредоносных программ, которая анализирует файлы и URL-адреса разных архитектур: Windows, macOS, Linux и Android. Предоставляет подробные аналитические отчеты и поддерживает различные расширенные функции.
#malware
Please open Telegram to view this post
VIEW IN TELEGRAM
Похек
Video
Это лучшее, что вы увидите за этот вечер 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
Threat Zone 2025
#bizone #threatintelligence
Как просили, информация и инсайды о Threat Intelligence. Также скоро с одним из телеграм админов будет совместный пост на эту тему.
Stay secure🕶
🌚 @poxek
#bizone #threatintelligence
Как просили, информация и инсайды о Threat Intelligence. Также скоро с одним из телеграм админов будет совместный пост на эту тему.
Stay secure
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Обходим WAF с помощью лайфхака из Twitter'а и немного defensive
#WAF #web #twitter
Также это можно настроить автоэнкодинг в бурп суюте
Логика простая: WAF или любая другая система фильтрации ввода вероятно будет блокировать только определенный список UTF-8 символов
Как защититься?
Конвертируйте весь ввод строго в UTF-8 формат, так вы сильно упростите себе жизнь и правила фильтрации
🌚 @poxek
#WAF #web #twitter
Также это можно настроить автоэнкодинг в бурп суюте
Логика простая: WAF или любая другая система фильтрации ввода вероятно будет блокировать только определенный список UTF-8 символов
Как защититься?
Конвертируйте весь ввод строго в UTF-8 формат, так вы сильно упростите себе жизнь и правила фильтрации
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from offsec notes
Please open Telegram to view this post
VIEW IN TELEGRAM
Firewall не спасёт
#firewall #nmap
Межсетевые экраны издревле применяются для блокирования входящего трафика нежелательных приложений. Обычно для этого создаются правила фильтрации, разрешающие входящий трафик по явно указанным сетевым портам и запрещающие весь остальной. При этом легитимные приложения, монопольно владеющие открытыми портами, работают без проблем, а вот нежелательные остаются без связи, поскольку все доступные им порты блокируются межсетевым экраном. Данный подход давно отработан и стар как мир, казалось бы, что тут может пойти не так?
А оказывается, может и вполне идёт. Далее из этой статьи вы узнаете две техники обхода межсетевых экранов, позволяющие нежелательным приложениям преодолевать фильтрацию входящего сетевого трафика и получать команды от удалённых узлов
➡️ Читать далее
🌚 @poxek | 📺 YT | 📺 RT | 📺 VK | 🌚 Магазин мерча
#firewall #nmap
Межсетевые экраны издревле применяются для блокирования входящего трафика нежелательных приложений. Обычно для этого создаются правила фильтрации, разрешающие входящий трафик по явно указанным сетевым портам и запрещающие весь остальной. При этом легитимные приложения, монопольно владеющие открытыми портами, работают без проблем, а вот нежелательные остаются без связи, поскольку все доступные им порты блокируются межсетевым экраном. Данный подход давно отработан и стар как мир, казалось бы, что тут может пойти не так?
А оказывается, может и вполне идёт. Далее из этой статьи вы узнаете две техники обхода межсетевых экранов, позволяющие нежелательным приложениям преодолевать фильтрацию входящего сетевого трафика и получать команды от удалённых узлов
Please open Telegram to view this post
VIEW IN TELEGRAM
Вы узнаете:
— Ключевые тренды и тактики DDoS-атак в 2024 году
— Реальные примеры, как кибератаки влияют на бизнес
— Сценарии потенциальных угроз, которые будут актуальны в 2025-м
— Рекомендации, как подготовить инфраструктуру к новым волнам DDoS-атак
Please open Telegram to view this post
VIEW IN TELEGRAM
Ревизор приехал: pg_anon проверяет, всё ли скрыто
#psql #Postgresql #pg #dev
В современном мире, где данные становятся новой нефтью, разработчики часто сталкиваются с дилеммой: как тестировать приложения на реальных данных, не подвергая риску конфиденциальную информацию пользователей? Использование продакшн-данных в тестовых средах без должной анонимизации может привести к серьёзным утечкам и, как следствие, к многомиллионным штрафам и потере репутации компании.
Здесь на помощь приходит инструмент pg_anon — решение для анонимизации данных в PostgreSQL. С его помощью можно маскировать персональные данные, сохраняя при этом структуру и целостность информации. Это особенно важно для разработчиков и тестировщиков, которым нужны реалистичные данные для работы без риска нарушения конфиденциальности.
В статье подробно рассматриваются примеры конфигураций pg_anon и приводится пошаговое руководство по его внедрению в процессы разработки. Автор, опираясь на 15-летний опыт работы с данными в крупных проектах, подчёркивает, что безопасность данных — это не препятствие для работы, а залог спокойствия и стабильности бизнеса.
Для разработчиков, стремящихся обеспечить безопасность данных и соответствие современным стандартам защиты информации, внедрение таких инструментов, как pg_anon, становится не просто рекомендацией, а необходимостью.
➡️ Читать далее
🌚 @poxek | 📺 YT | 📺 RT | 📺 VK | 🌚 Магазин мерча
#psql #Postgresql #pg #dev
В современном мире, где данные становятся новой нефтью, разработчики часто сталкиваются с дилеммой: как тестировать приложения на реальных данных, не подвергая риску конфиденциальную информацию пользователей? Использование продакшн-данных в тестовых средах без должной анонимизации может привести к серьёзным утечкам и, как следствие, к многомиллионным штрафам и потере репутации компании.
Здесь на помощь приходит инструмент pg_anon — решение для анонимизации данных в PostgreSQL. С его помощью можно маскировать персональные данные, сохраняя при этом структуру и целостность информации. Это особенно важно для разработчиков и тестировщиков, которым нужны реалистичные данные для работы без риска нарушения конфиденциальности.
В статье подробно рассматриваются примеры конфигураций pg_anon и приводится пошаговое руководство по его внедрению в процессы разработки. Автор, опираясь на 15-летний опыт работы с данными в крупных проектах, подчёркивает, что безопасность данных — это не препятствие для работы, а залог спокойствия и стабильности бизнеса.
Для разработчиков, стремящихся обеспечить безопасность данных и соответствие современным стандартам защиты информации, внедрение таких инструментов, как pg_anon, становится не просто рекомендацией, а необходимостью.
Please open Telegram to view this post
VIEW IN TELEGRAM