Выполнение произвольного кода в приложении Facebook
Прекрасная бага, позволяющая выполнить произвольный код в контексте приложения Facebook.
Принцип эксплуатации построен на классическом Path Traversal, который стал возможен благодаря использованию самописной функции для загрузки файлов без какой либо фильтрации. То есть, если имя файла "../file", то он будет записан на директорию выше от предполагаемого места сохранения. Ну а дальше можно перезаписать любой нативный файл в песочнице и получить ACE.
Интересно, что в другом месте используется безопасная реализация через DownloadManager. Наверное, функционал писали разные команды 😁
Так что правила санитизации любого контента пришедшего из-вне в мобильных приложениях актуальны как никогда!
Перефразируя известное высказывание пишите код так, как будто кругом враги,не доверяйте никому и проверяйте все данные, что приходят к вам в приложение 😁
#Android #Facebook #ACE
Прекрасная бага, позволяющая выполнить произвольный код в контексте приложения Facebook.
Принцип эксплуатации построен на классическом Path Traversal, который стал возможен благодаря использованию самописной функции для загрузки файлов без какой либо фильтрации. То есть, если имя файла "../file", то он будет записан на директорию выше от предполагаемого места сохранения. Ну а дальше можно перезаписать любой нативный файл в песочнице и получить ACE.
Интересно, что в другом месте используется безопасная реализация через DownloadManager. Наверное, функционал писали разные команды 😁
Так что правила санитизации любого контента пришедшего из-вне в мобильных приложениях актуальны как никогда!
Перефразируя известное высказывание пишите код так, как будто кругом враги,не доверяйте никому и проверяйте все данные, что приходят к вам в приложение 😁
#Android #Facebook #ACE
Medium
Arbitrary code execution on Facebook for Android through download feature
TL;DR
Поиск Arbitary Code Execution в Android приложениях
В продолжении рубрики советы для мобильного BugBounty от одного из лучших багхантеров @bagipro:
1) Пишем hook для xposed или frida для определения вызова методов File.exists() и фильтруем по расширению .so
2) Ищем в декомпилированных исходниках использование методов ZipFile и всех его методов (например entries(), getEntry() и т.д.)
3) Если в найденных методах нет проверки на наличие специальных символов, например zipFile.getName().contains("../"), это означает, что возможно перезаписать произвольные файлы в процессе разархивации файла.
4) Найдите способ подменить файл, который распаковывается (достаточно часто эти файлы хранятся на SD-карте или путь к таким файлам передается через незащищенные компоненты приложения)
5) Скомпилируйте нативную библиотеку, которая выполняет произвольный код (например, записывает идентификатор пользователя в файл или выполняет команду chmod 777), создайте zip-файл, содержащий Path Traversal в имени и заставьте приложение его обработать.
Офигенный подход, простой и изящный. Я иногда не понимаю, как он это делает 😄 Еще раз спасибо, что делишься опытом!
Кстати, кто-то уже написал готовый скрипт для Frida, так что можно его прям брать и проверять "свои" приложения!
А есть ли у вас похожие наработки и уязвимости, на которые вы проверяете приложения?
#BugBounty #bagipro #Vulnerability #ACE
В продолжении рубрики советы для мобильного BugBounty от одного из лучших багхантеров @bagipro:
1) Пишем hook для xposed или frida для определения вызова методов File.exists() и фильтруем по расширению .so
2) Ищем в декомпилированных исходниках использование методов ZipFile и всех его методов (например entries(), getEntry() и т.д.)
3) Если в найденных методах нет проверки на наличие специальных символов, например zipFile.getName().contains("../"), это означает, что возможно перезаписать произвольные файлы в процессе разархивации файла.
4) Найдите способ подменить файл, который распаковывается (достаточно часто эти файлы хранятся на SD-карте или путь к таким файлам передается через незащищенные компоненты приложения)
5) Скомпилируйте нативную библиотеку, которая выполняет произвольный код (например, записывает идентификатор пользователя в файл или выполняет команду chmod 777), создайте zip-файл, содержащий Path Traversal в имени и заставьте приложение его обработать.
Офигенный подход, простой и изящный. Я иногда не понимаю, как он это делает 😄 Еще раз спасибо, что делишься опытом!
Кстати, кто-то уже написал готовый скрипт для Frida, так что можно его прям брать и проверять "свои" приложения!
А есть ли у вас похожие наработки и уязвимости, на которые вы проверяете приложения?
#BugBounty #bagipro #Vulnerability #ACE
Telegram
Mobile AppSec World
Советы для мобильного BugBounty
Советы для мобильного BugBounty от потрясающего ресерчера @bagipro:
1. Декомпилировать приложение с помощью jadx.
2. Найти все обработчики deeplink из AndroidManifest.xml, они выглядят как <data android:scheme="airbnb" a…
Советы для мобильного BugBounty от потрясающего ресерчера @bagipro:
1. Декомпилировать приложение с помощью jadx.
2. Найти все обработчики deeplink из AndroidManifest.xml, они выглядят как <data android:scheme="airbnb" a…
Уязвимость в Mattermost приложении под Android
Уязвимость Persistant Arbitrary code execution в приложении Mattermost под Android. Очень интересная бага, учитывая, что это OpenSource проект, и на его основе многие компании строят свои внутренние мессенджеры. Так что, если вы используете в компании Mattermost, то обновитесь на свеженькую версию)
Суть атаки в наличии уязвимости Path Traversal в одном из параметров, который принимает ContentProvider. Благодаря этому можно перезаписать одну из нативных библиотек в приложении и при следующем запуске будет выполнен код, который атакующий зашил в метод OnLoad внутри натива.
Крайне знакомая техника, где же я о ней читал? 🤔
#Mattermost #Vulnerability #ACE
Уязвимость Persistant Arbitrary code execution в приложении Mattermost под Android. Очень интересная бага, учитывая, что это OpenSource проект, и на его основе многие компании строят свои внутренние мессенджеры. Так что, если вы используете в компании Mattermost, то обновитесь на свеженькую версию)
Суть атаки в наличии уязвимости Path Traversal в одном из параметров, который принимает ContentProvider. Благодаря этому можно перезаписать одну из нативных библиотек в приложении и при следующем запуске будет выполнен код, который атакующий зашил в метод OnLoad внутри натива.
Крайне знакомая техника, где же я о ней читал? 🤔
#Mattermost #Vulnerability #ACE
HackerOne
Mattermost disclosed on HackerOne: Persistant Arbitrary code...
## Summary:
Activity `com.mattermost.share.ShareActivity` is is exported and is designed to allow file sharing from third party application to mattermost android app.
```
<activity...
Activity `com.mattermost.share.ShareActivity` is is exported and is designed to allow file sharing from third party application to mattermost android app.
```
<activity...
Эксплуатация уязвимости выполнения кода на уровне ядра через функционал OTA Update в MacOS
Доклад из разряда «Ничего не понятно, но очень интересно!».
Для начала материалы:
1. Слайды с доклада
2. PoC для энтузиастов
3. Видео демонстрация
К сожалению, мне не довелось еще изучить механизмы безопасности операционной системы MacOS, в частности, защиту SIP и прочие околосвязанные вещи. В теории я более менее понимаю, как оно работает, но пока что, все что я делал, это отключал SIP :)
Надеюсь, эти материалы будут полезны тем, кто вплотную работает с этим направлением. Ну а остальным, в качестве расширения кругозора :₽
#macos #ace #kernel
Доклад из разряда «Ничего не понятно, но очень интересно!».
Для начала материалы:
1. Слайды с доклада
2. PoC для энтузиастов
3. Видео демонстрация
К сожалению, мне не довелось еще изучить механизмы безопасности операционной системы MacOS, в частности, защиту SIP и прочие околосвязанные вещи. В теории я более менее понимаю, как оно работает, но пока что, все что я делал, это отключал SIP :)
Надеюсь, эти материалы будут полезны тем, кто вплотную работает с этим направлением. Ну а остальным, в качестве расширения кругозора :₽
#macos #ace #kernel
GitHub
jhftss.github.io/res/slides/OBTS_v6_The Nightmare of Apple OTA Update_Mickey Jin.pdf at main · jhftss/jhftss.github.io
Mickey's Blogs. Contribute to jhftss/jhftss.github.io development by creating an account on GitHub.