
CVE-2016-5195 dirtycow por timwr ferramenta automatizada de patch para múltiplos arquivos
POR FAVOR, OBSERVE QUE NÃO ESTOU TESTANDO FORMALMENTE ESTE CÓDIGO ELE ESTÁ SENDO PROJETADO COMO UMA FERRAMENTA EDUCACIONAL
O que faz? android-dirtycow-replacer usa o exploit dirtycow CVE-2016-5195 para corrigir uma lista de mais de 1000 arquivos. Você pode editá-la para 10000, mas 1000 deve ser suficiente. Ele primeiro verifica se os arquivos são diferentes; se não forem, tenta substituir e, se houver erro, ele para. É seu trabalho fornecer os arquivos editando-os, ou corrigindo seu selinux, ou o que for. dirtycow só substitui o que consegue ler, e é por isso que esta ferramenta não é a ferramenta final.
Desculpe se eu disse algumas coisas duas vezes, estou com cabeça de programador Este código foi testado em um Note 5 e parece funcionar corretamente. No entanto... Este código é em grande parte não testado e não é o projeto final. Estou projetando um exploit toolbox.c dirtycow que substituirá arquivos normalmente ilegíveis, como o init. Por que toolbox? Porque posso obter root + contexto de que preciso explorando o toolbox e depois ler todos os arquivos que quiser.
Requer Linux, como a versão mais recente do Ubuntu (gratuito), e o Android SDK & Android NDK (também gratuitos).
Instruções Crie um arquivo chamado files.txt com caminhos à esquerda/direita do que você deseja substituir. /system/build.prop /data/local/tmp/replace/build.prop Certifique-se de que seus arquivos existam em ambos os lados da equação, coisas bastante simples, espero! Sugiro tentar usar cat no arquivo antes mesmo de adicioná-lo à lista. Exemplo: adb shell cat /init caminho à esquerda é o arquivo que está sendo substituído (observe o espaço) caminho à direita é o arquivo para substituí-lo
Exemplo incluído Um arquivo files.txt de exemplo está incluído com este exemplo. Ele aponta para arquivos de teste (edite-o para ver) Há também dois diretórios contendo arquivos de teste. replace/ e replacewith/ Dentro do diretório replace/ estão 4 arquivos: beingpatched1, beingpatched2, ..3, ..4 beingpatched# texto == unpatched001 --- unpatched004 Os arquivos em replacedwith/ contêm o texto patchingdon1 a patchingdon4 Quando você digita 'make push', ele compila e esses diretórios, files.txt e replacer serão enviados para /data/local/tmp/ ..ainda comigo?, Instruções reais para o Exemplo Descompacte em uma pasta, clique com o botão direito e abra dois terminais nesta pasta ......dica: se você clicar em uma janela de terminal e depois na outra, ambas as janelas de terminal permanecem visíveis
Em uma janela de terminal digite: make log
Na próxima janela de terminal digite: make push <===Sem erros, certo?
adb shell depois cd data/local/tmp depois ./replacer
Visão geral do projeto principal -- Não este projeto A função de comparação está sendo projetada como o gatilho para toolbox.c A função de comparação compara arquivos byte a byte para determinar se eles são diferentes. Este será o gatilho para toolbox.c tentar recarregar /init. Em seguida, toolbox.c escreverá um arquivo de log (também a próxima chave de gatilho) toolbox.c registrará a tentativa posterior em outro arquivo de log (o gatilho final), informando-nos que todas as funções foram tentadas. Isso nos permitirá tentar vários contextos para cada fase em caso de falha antes de desistir, provavelmente necessário.
android-dirtycow-replacer Meu objetivo é projetar uma ferramenta de substituição dirtycow.c automatizada para usar como exploit dentro de toolbox.c ou dumpstat.c android-dirtycow-replacer lê arquivos para corrigir de um arquivo de texto, depois testa se os arquivos são diferentes e, em caso afirmativo, somente se eles forem diferentes, android-dirtycow-replacer corrigirá os arquivos usando dirtycow.c. Novamente, este código está sendo projetado para ser mesclado em toolbox.c / dumpstate.c como um meio de corrigir arquivos não corrigíveis! Meu código final provavelmente estará entrelaçado com código de tratamento de UID e contexto. Este é o fork no meu próprio código.
Este aplicativo pode ter outros usos Mas não estou projetando para outros usos neste momento. O uso mais viável que vem à mente é substituir uma lista constante de arquivos após a inicialização, como fontes ou remover permissões para aplicativos terem acesso à internet enquanto a tela está desligada. Ou muitas outras configurações em /etc que serão reparadas após cada inicialização.
REQUERIDO
Software não está sendo atualizado neste momento. Software está sendo listado como código de exemplo Pessoalmente, acredito que esta ferramenta poderia obter root em qualquer dispositivo dentro do escopo como está. Também acredito que é uma ferramenta poderosa de organização para alcançar exatamente esse objetivo. O problema para mim é que não tenho interesse em obter root no meu celular pessoal neste momento. Eu travei coisas suficientes para que meu Note 5 esteja incrível e é uma tarefa difícil configurá-lo novamente. POR FAVOR, OBSERVE QUE NÃO ESTOU TESTANDO ESTE CÓDIGO EM LUGAR ALGUM! ELE ESTÁ SENDO PROJETADO COMO UMA FERRAMENTA EDUCACIONAL
Se você tiver um problema Por favor, liste o problema e eu o corrigirei quando puder, desde que possa fazê-lo com segurança no meu dispositivo de teste.