
CVE-2016-5195 dirtycow par timwr outil de correction automatisé multi-fichier
VEUILLEZ NOTER QUE JE NE TESTE PAS FORMELLEMENT CE CODE IL EST CONÇU COMME UN OUTIL ÉDUCATIF
À quoi ça sert ? android-dirtycow-replacer utilise l'exploit dirtycow CVE-2016-5195 pour patcher une liste de plus de 1000 fichiers. Vous pouvez la modifier pour qu'elle en contienne 10000 mais 1000 devrait suffire. Il vérifie d'abord que les fichiers diffèrent, sinon il tente de remplacer et en cas d'erreur il s'arrête. C'est à vous de fournir les fichiers en les modifiant, ou en patchant votre selinux, ou autre. dirtycow ne remplace que ce qu'il peut lire, et c'est pourquoi cet outil n'est pas l'outil final.
Désolé si j'ai dit certaines choses deux fois, j'ai la tête d'un développeur Ce code a été testé sur un Note 5 et semble fonctionner correctement. Cependant... Ce code est en grande partie non testé et n'est pas le projet final. Je conçois un exploit toolbox.c dirtycow qui écrasera des fichiers normalement illisibles, comme init. Pourquoi toolbox ? Parce que je peux obtenir root + le contexte dont j'ai besoin en exploitant toolbox, puis lire tous les fichiers que je veux.
Nécessite Linux, comme la dernière version d'Ubuntu (gratuit), et le SDK Android & le NDK Android (gratuits aussi).
Instructions Créez un fichier nommé files.txt avec les chemins à gauche/droite de ce que vous souhaitez remplacer. /system/build.prop /data/local/tmp/replace/build.prop Assurez-vous que vos fichiers existent des deux côtés de l'équation, des trucs assez simples j'espère ! Je suggère d'essayer de faire un cat du fichier avant même de l'ajouter à la liste. exemple : adb shell cat /init le chemin à gauche est le fichier remplacé (notez l'espace) le chemin à droite est le fichier pour le remplacer
Exemple inclus Un exemple files.txt est inclus avec cet exemple. Il pointe vers des fichiers de test (modifiez-le pour voir) Il y a aussi deux répertoires contenant des fichiers de test : replace/ et replacewith/ Dans le répertoire replace/ se trouvent 4 fichiers beingpatched1, beingpatched2, ..3, ..4 beingpatched# texte == unpatched001 --- unpatched004 Les fichiers dans replacewith/ contiennent le texte patchingdon1 à patchingdon4 Quand vous tapez 'make push', il compile et ces répertoires, files.txt et replacer sont poussés vers /data/local/tmp/ ..vous me suivez toujours ?, Instructions réelles pour l'exemple Décompressez dans un dossier, faites un clic droit et ouvrez deux terminaux dans ce dossier ......astuce : si vous cliquez sur une fenêtre de terminal puis sur l'autre, les deux fenêtres restent visibles
Dans une fenêtre de terminal tapez : make log
Dans l'autre fenêtre de terminal tapez : make push <===Pas d'erreur, non ?
adb shell puis cd data/local/tmp puis ./replacer
Aperçu du projet principal — Pas ce projet La fonction compare est conçue comme le déclencheur pour toolbox.c La fonction compare compare les fichiers octet par octet pour déterminer s'ils diffèrent. Ce sera le déclencheur pour que toolbox.c tente de recharger /init. Ensuite, toolbox.c écrira un fichier journal (la clé de déclenchement suivante aussi) toolbox.c enregistrera la tentative dans un autre fichier journal (le déclenchement final) nous informant que toutes les fonctions ont été tentées. Cela nous permettra d'essayer plusieurs contextes pour chaque phase en cas d'échec avant d'abandonner, probablement nécessaire.
android-dirtycow-replacer Mon objectif est de concevoir un outil de remplacement automatisé dirtycow.c à utiliser comme exploit dans toolbox.c ou dumpstat.c android-dirtycow-replacer lit les fichiers à patcher depuis un fichier texte, puis teste si les fichiers diffèrent et si seulement s'ils diffèrent, android-dirtycow-replacer patch les fichiers en utilisant dirtycow.c. Encore une fois, ce code est conçu pour être fusionné dans toolbox.c / dumpstate.c comme moyen de patcher des fichiers non patchables ! Mon code final sera probablement entremêlé avec la gestion des UID et des contextes. C'est la fourche dans mon propre code.
Cette application peut avoir d'autres utilisations Mais je ne la conçois pas pour d'autres utilisations pour le moment. L'utilisation la plus viable qui me vient à l'esprit est le remplacement d'une liste constante de fichiers après le démarrage, comme les polices ou la suppression des permissions pour que les applications aient accès à Internet lorsque l'écran est éteint. Ou bien beaucoup d'autres paramètres sous /etc qui seront réparés après chaque démarrage.
REQUIS
Logiciel non mis à jour pour le moment. Logiciel listé comme exemple de code Je pense personnellement que cet outil pourrait obtenir root sur n'importe quel appareil dans le champ d'application tel quel. Je crois aussi que c'est un outil d'organisation puissant pour atteindre exactement cet objectif. Le problème pour moi est que je n'ai aucun intérêt à obtenir root sur mon téléphone personnel pour le moment. J'ai planté suffisamment de trucs pour que mon Note 5 soit tellement génial et c'est une tâche difficile de tout remettre en place. VEUILLEZ NOTER QUE JE NE TESTE CE CODE NULLE PART JAMAIS ! IL EST CONÇU COMME UN OUTIL ÉDUCATIF
Si vous avez un problème Veuillez lister le problème et je le corrigerai dès que possible tant que je peux le faire en toute sécurité sur mon appareil de test.