在HTC One X AT&T 1.85固件及更早的版本上,预装了一款ATT Ready2Go应用,该程序以system用户运行,具有设置wifi、导入联系人、更换壁纸和安装应用程序等功能,我们可以利用此程序存在的漏洞获取设备Root权限。
一、漏洞与利用详情
漏洞出现在Ready2Go安装应用程序的流程上。
Ready2Go安装应用完整程序流程如下:
1、第一次通过Read2Go安装应用时,Read2Go建立下载目录“/data/install”,并且运行“chmod 777 /data/install”,赋予所有用户rwx权限。
2、当用户通过该程序安装应用程序时,Read2Go会把应用程序下载到“/data/install”目录,并且运行“chmod 666 /data/install/”。
3、下载完成后,Read2Go开始安装下载的程序,安装成功后删除下载的apk文件。
利用该漏洞获取Root权限完整流程如下:
1、查看“/data/install”目录是否存在,如不存在,可以通过Ready2Go下载安装任意应用程序的方式来创建该目录。
2、挑选一个已知包名的应用程序,如“com.att.android.markthespot.apk”,然后通过以下命令建立软连接到“/data/local.PRop”文件。
adb shell ls -s /data/local.prop /data/install/com.att.android.markthespot.apk
3、通过Ready2Go下载挑选的应用程序,由于/data/install/com.att.android.markthespot.apk是/data/local.prop文件的软连接,Ready2Go对下载文件的操作的作用在了/data/local.prop文件(Read2Go具有system权限,可以操作/data/local.prop文件),/data/local.prop就被修改为全局可读写。
4、通过adb reboot命令打断Read2Go的安装流程,阻断Read2Go安装成功后的删除apk操作。
5、设备重新启动后,/data/local.prop就被遗留为全局可读写的。
adb shell “echo ‘ro.kernel.qemu=1′ > /data/local.prop”
adb reboot
6、设备重新启动后,由于ro.kernel.qemu=1,所以adb不降权,这样adb shell连接设备就得到了以root身份运行的shell。
(设备启动过程中,系统加载/data/local.prop配置文件设置系统属性,adb最初以root运行,之后调用setuid()降低权限。降权之前,会判断系统属性ro.kernel.qemu,如果该属性位1,则不降权。)
新闻热点
疑难解答
图片精选