
Blueborne CVE-2017-0781 Android heap overflow vulnerability
Esta é uma implementação da vulnerabilidade de estouro de heap no Android CVE-2017-0781 descrita no whitepaper do Blueborne lançado pela Armis. Leitura adicional: https://www.armis.com/blueborne/
No estado atual, este código apenas demonstra o estouro e a capacidade de travar o serviço bluetooth. Novamente, isso não é uma execução remota de código totalmente desenvolvida, mas pode ser.
Obtenha o 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
Obtenha o pybluez.
apt-get install bluetooth libbluetooth-dev
pip install pybluez==0.22
Eu usei as ferramentas hciconfig e btmgmt para isso, ambas estão incluídas no pacote bluez. Se você tiver o módulo bluetooth bloqueado, o rfkill pode ajudar.
Execute btmgmt.
O comando info mostrará os índices dos seus dispositivos.
Inserir select 0 tornará o primeiro controlador bluetooth ativo. Um atalho para isso é iniciar a ferramenta com btmgmt --index 0.
Certifique-se de que você pode descobrir dispositivos com o comando find. A tela do seu Android deve estar ligada e a visualização das configurações de bluetooth deve estar aberta para que ele seja detectável. Observe que a detectabilidade não é um pré-requisito para explorar esta vulnerabilidade, conforme detalhado no whitepaper lançado pela Armis.
Para que o exploit funcione sem pareamento manual, você deve definir as capacidades de IO do seu host com io-cap 0x03 na ferramenta btmgmt.
Com isso configurado, execute o código com python CVE-2017-0781.py TARGET=XX:XX:XX:XX:XX:XX e o serviço bluetooth do seu dispositivo Android deve travar. Pode levar algumas tentativas. Atualmente, o código envia 30 desses pacotes inválidos para corromper memória suficiente para o processo travar.
Feliz hacking ;)
Certifique-se de que você vê seu dispositivo bluetooth no host com o comando 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
Se não estiver UP mas sim DOWN como mostrado aqui, então corrija com hciconfig <intf> up
user-pc user # hciconfig hci0 up
Can't init device hci0: Operation not possible due to RF-kill (132)
Se você receber mensagens sobre rf-kill, tente o comando 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
O desbloqueio pode ser feito com rfkill unblock <id>.
Se você perceber que seu dispositivo ainda pede o código de pareamento após definir as capacidades de IO no host, então este método provavelmente não é possível atualmente no seu dispositivo.