您的位置:首页 > 其它

MTK相机内核驱动缺陷导致的权限提升,poc原理分析

2015-07-21 14:34 821 查看
由于工作需要,实现对hongmi手机的root。因此,逆向了某国内知名root软件的提权方案。有进一步分析了其root原理,简单跟大家分享下。

/*

转载请注明出处:http://blog.csdn.net/jinangl_vsnake/article/details/46985425

如有交流,发送至邮箱jinangl@163.com

*/

根据逆向结果,搜索漏洞,再乌云上找到一篇文章"MTK相机内核驱动缺陷导致的权限提升"(http://www.wooyun.org/bugs/wooyun-2010-021778),比较契合。其漏洞为MTK相机驱动未检查用户参数,导致用户能够修改任意内存。

   首先,打开camera-isp设备文件。

   fd = open("/dev/camera-isp",
0x802/* O_RDWR|O_NONBLOCK|O_LARGEFILE 0x802 */
);

   然后将其映射到进程空间,起始线性地址为0x20000000U,映射长度为2G,偏移为0x10000000U。

    mmapAddr = (unsigned int)mmap((void*)0x20000000U,
0x80000000U,//0x80000000U
0x3,
0x11,
fd,
0x10000000U); //0x30010000U

   之所以映射2G的内存大小,是因为内核代码段与camera-isp的距离为0x80000000-0x15000000=0x6B000000,接近2G

   15000000-1500e000 : camera-isp.0

  15000000-1500e000 : camera-isp

80000000-bbffffff : System RAM

  80008000-807f1fff : Kernel code

  8082c000-80b532e7 : Kernel data

根据计算得知,内核代码段和数据段在0x80000000-0x1000000开始,因此可以对任意内核代码和数据进行读写。

       下面,说一个实现root提权思路:

        通过在映射到进程空间的内核代码段和数据段进行搜索,可以查找系统调用表,然后修改linux内核无用的系统调用(如0x10F系统调用项)项为自己定义的一个回调函数void callback();。

       通过syscall(0x10F);触发系统调用。

       在callback()函数中实现提权的目的即可。

     

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: