
Blueborne CVE-2017-0781 Android heap overflow vulnerability
Это реализация уязвимости переполнения кучи Android CVE-2017-0781, описанной в документе Blueborne, опубликованном компанией Armis. Дополнительное чтение: https://www.armis.com/blueborne/
В текущем состоянии этот код только демонстрирует переполнение и возможность аварийного завершения службы Bluetooth. Опять же, это не полностью разработанное удалённое выполнение кода, но оно может быть.
Получите pwntools.
apt-get update
apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential
pip install --upgrade pip
pip install --upgrade pwntools
Получите pybluez.
apt-get install bluetooth libbluetooth-dev
pip install pybluez==0.22
Я использовал для этого инструменты hciconfig и btmgmt, оба входят в пакет bluez. Если ваш модуль Bluetooth заблокирован, может помочь rfkill.
Запустите btmgmt.
Команда info покажет индексы ваших устройств.
Ввод select 0 сделает первый контроллер Bluetooth активным. Сокращённый способ: запустить инструмент с btmgmt --index 0.
Убедитесь, что вы можете обнаруживать устройства с помощью команды find. Экран Android должен быть включён, а представление настроек Bluetooth должно быть открыто, чтобы устройство было обнаруживаемым. Обратите внимание, что обнаруживаемость не является обязательным условием для эксплуатации этой уязвимости, как подробно описано в документе, опубликованном Armis.
Для работы эксплойта без ручного сопряжения вы должны установить возможности IO вашего хоста с помощью io-cap 0x03 в инструменте btmgmt.
После этого запустите код с помощью python CVE-2017-0781.py TARGET=XX:XX:XX:XX:XX:XX, и служба Bluetooth на вашем Android-устройстве должна аварийно завершиться. Это может потребовать нескольких попыток. В настоящее время код отправляет 30 таких недействительных пакетов, чтобы повредить достаточно памяти для сбоя процесса.
Удачного взлома ;)
Убедитесь, что ваше Bluetooth-устройство видно на хосте с помощью команды hciconfig.
user-pc user # hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: XX:XX:XX:XX:XX:XX ACL MTU: 310:10 SCO MTU: 64:8
DOWN
RX bytes:580 acl:0 sco:0 events:31 errors:0
TX bytes:368 acl:0 sco:0 commands:30 errors:0
Если оно не в состоянии UP, а DOWN, как показано здесь, исправьте это с помощью hciconfig <intf> up
user-pc user # hciconfig hci0 up
Can't init device hci0: Operation not possible due to RF-kill (132)
Если вы получаете сообщения об rf-kill, попробуйте команду rfkill list.
user-pc user # rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
2: asus-wlan: Wireless LAN
Soft blocked: no
Hard blocked: no
3: asus-bluetooth: Bluetooth
Soft blocked: no
Hard blocked: no
4: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
Разблокировка может быть выполнена с помощью rfkill unblock <id>.
Если вы видите, что ваше устройство всё равно запрашивает код сопряжения после установки возможностей IO на хосте, то, вероятно, этот метод в настоящее время невозможен на вашем устройстве.