-
-
[求助]关于iOS漏洞利用时用户层向内核层传递攻击载荷的问题
-
发表于: 2017-3-31 21:50 3456
-
最近准备调试下三叉戟漏洞利用的4655和4656这两个漏洞,4655是个信息泄漏漏洞,4656是个两次释放漏洞。这篇报告比较详细的给出了这两个漏洞的利用情况--https://info.lookout.com/rs/051-ESQ-475/images/pegasus-exploits-technical-details.pdf。
根据这篇报告的描述,在进行两次释放内核漏洞利用前,攻击程序需要把ropchain放入内核之中,但这里我是真心的不能理解报告中的描述。按照报告中的描述,攻击程序会利用一下代码段将ropchain放入内核中:
int ret = syscall(SYS_open_extended, lockfile, O_WRONLY | O_EXLOCK, KAUTH_UID_NONE, KAUTH_GID_NONE, 0644, p + 0xEC0);
assert(ret != -1);
其中p+0xEC0指向kauth_filesec结构体,而kauth_filesec结构体中则包含了ropchain。而syscall将载荷写入内核的原理是由于open_extend中的如下代码:
if ((uap->xsecurity != USER_ADDR_NULL) &&
((ciferror = kauth_copyinfilesec(uap->xsecurity, &xsecdst)) != 0))
return ciferror;
其中kauth_copyinfilesec比较重要,它的关键代码是这两句:
copysize = KAUTH_FILESEC_SIZE(count);
if ((error = copyin(xsecurity, (caddr_t)fsec, copysize)) != 0)
goto out;
xsecurity就是我们传进来的攻击载荷,复制到fsec里面,所以我现在的问题是,攻击程序是如何通过信息泄露漏洞得到fsec的地址的,很纠结。。。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)