
CVE-2016-5195 dirtycow por timwr herramienta automatizada de parcheo de múltiples archivos
POR FAVOR TEN EN CUENTA QUE NO ESTOY PROBANDO FORMALMENTE ESTE CÓDIGO SE ESTÁ DISEÑANDO COMO UNA HERRAMIENTA EDUCATIVA
¿Qué hace? android-dirtycow-replacer utiliza el exploit dirtycow de CVE-2016-5195 para parchear una lista de más de 1000 archivos. Puedes editarlo para que sean 10000, pero 1000 debería bastar. Primero verifica que los archivos sean diferentes, si no, intenta reemplazar y si hay error se detiene. Es tu trabajo proporcionar los archivos editándolos, o parcheando tu selinux, o lo que sea. dirtycow solo reemplaza lo que puede leer, y por eso esta herramienta no es la herramienta final.
Perdón si dije algunas cosas dos veces, tengo cabeza de programador Este código fue probado en un Note 5 y parece funcionar correctamente. Sin embargo... Este código está mayormente sin probar y no es el proyecto final. Estoy diseñando un exploit dirtycow en toolbox.c que sobrescribirá archivos normalmente ilegibles, como init. ¿Por qué toolbox? Porque puedo obtener root + el contexto que necesito explotando toolbox y luego leer todos los archivos que quiero.
Requisitos Linux, como la última versión de Ubuntu (gratis), y el Android SDK & Android NDK (también gratis).
Instrucciones Crea un archivo llamado files.txt con las rutas izquierda/derecha de lo que deseas reemplazar. /system/build.prop /data/local/tmp/replace/build.prop Asegúrate de que tus archivos existan en ambos lados de la ecuación, ¡cosas bastante simples espero! Sugiero intentar hacer cat del archivo antes incluso de agregarlo a la lista. ejemplo: adb shell cat /init la ruta de la izquierda es el archivo que se está reemplazando (nota el espacio) la ruta de la derecha es el archivo con el que se reemplaza
Ejemplo incluido Existe un archivo files.txt de ejemplo con este ejemplo. Apunta a archivos de prueba (edítalo para ver) También hay dos directorios que contienen archivos de prueba. replace/ y replacewith/ Dentro del directorio replace/ hay 4 archivos beingpatched1, beingpatched2,..3,..4 beingpatched# text == unpatched001 --- unpatched004 Los archivos en replacedwith/ contienen texto patchingdon1 hasta patchingdon4 Cuando escribas 'make push', se compilará y estos directorios, files.txt y replacer se enviarán a /data/local/tmp/ ..¿todavía conmigo?,
Instrucciones reales para el ejemplo Descomprime en una carpeta, haz clic derecho y abre dos terminales en esta carpeta ......consejo: si haces clic en una ventana de terminal y luego en la otra, ambas ventanas de terminal permanecen visibles
En una ventana de terminal escribe: make log
En la siguiente ventana de terminal escribe: make push <===Sin errores ¿verdad?
adb shell then cd data/local/tmp then ./replacer
Descripción general del proyecto principal -- No este proyecto La función compare se está diseñando como el disparador para toolbox.c La función compare compara archivos byte por byte para determinar si son diferentes. Este será el disparador para que toolbox.c intente recargar /init. Luego toolbox.c escribirá un archivo de registro (también la siguiente clave de disparador) toolbox.c registrará el intento posterior en otro archivo de registro (el disparador final) informándonos que todas las funciones intentadas. Esto nos permitirá probar múltiples contextos para cada fase en caso de fallo antes de rendirnos, probablemente necesario.
android-dirtycow-replacer Mi objetivo es diseñar una herramienta de reemplazo automatizada de dirtycow.c para usar como exploit dentro de toolbox.c o dumpstat.c android-dirtycow-replacer lee archivos a parchear desde un archivo de texto, luego prueba si los archivos son diferentes y si entonces solo si son diferentes android-dirtycow-replacer parcheará los archivos usando dirtycow.c. Nuevamente, este código se está diseñando para fusionarse en toolbox.c / dumpstate.c como un medio para parchear archivos no parcheables. Mi código final probablemente estará entrelazado con el manejo de UID y contexto. Esta es la bifurcación en mi propio código.
Esta aplicación puede tener otros usos Pero no la estoy diseñando para otros usos en este momento. El uso más viable que se me ocurre es reemplazar una lista constante de archivos después del arranque, como fuentes o eliminar permisos para que las aplicaciones tengan acceso a internet mientras la pantalla está apagada. O muchas otras configuraciones bajo /etc que se repararán después de cada arranque.
REQUERIDO
Software no actualizado en este momento. Software listado como código de ejemplo Personalmente creo que esta herramienta podría lograr root en cualquier dispositivo dentro del alcance tal como está. También creo que es una poderosa herramienta organizativa para lograr exactamente ese objetivo. El problema para mí es que no tengo interés en obtener root en mi teléfono celular en este momento. Rompí lo suficiente como para que mi Note 5 sea tan increíble y es una tarea difícil configurarlo de nuevo. POR FAVOR TEN EN CUENTA QUE NO ESTOY PROBANDO ESTE CÓDIGO EN NINGÚN LUGAR NUNCA JAMÁS! SE ESTÁ DISEÑANDO COMO UNA HERRAMIENTA EDUCATIVA
Si tienes un problema Por favor enumera el problema y lo corregiré cuando pueda siempre y cuando pueda hacerlo de manera segura en mi dispositivo de prueba.