从0开始学V8漏洞利用之Windows Chrome利用一条龙
本篇文章记录一下v8漏洞在Windows实际的利用。
v8只是Chrome浏览器解析JavaScript代码的一个引擎,就算通过v8代码漏洞,能执行shellcode,也没办法获取到系统权限,因为在v8引擎的外层还一层沙箱,所以在v8漏洞的分析利用文章中,最后显示的效果都需要让Chrome启动加上--no-sandbox
参数,所以v8漏洞的实际利用场景只能找一些使用了Chrome内核,并且没有开沙箱的应用。
除此之前,v8需要结合一些其他的漏洞,比如沙箱逃逸/提权漏洞,才能真正打穿Chrome。
本文说说,在Windows的环境下,怎么编写exp来结合Windows提权漏洞,来打穿Chrome。
- 你真正想执行的shellcode:
1 | // shellcode.js |
把一个弹计算器的shellcode设置一个变量,储存在shellcode.js
中
- 找一个Windows大哥,写一个Windows提权的loadpe(这部分内容后续会让我同事进行编写),并且写入loadpe中,loadpe的二进制将会写入dll.js。
1 | // dll.js |
这loadpe在进行Windows提权后,将会执行shellcode.js中的shellcode,而shellcode的地址,我们需要在exp中泄漏出来:
1 | var myshell = new Uint8Array(0x1000); |
- 我们需要泄漏出dll的地址,然后exp的shellcode作用是把loadpe内存设置为可读可写可执行权限,然后跳转过来:
1 | var dllDataAddr = addressOf(dllData); |
按照这样的模板编写EXP,就可以跟Windows大哥编写loadpe的提权exp完美结合起来,我研究v8相关的漏洞,他研究Windows相关的漏洞,然后我们的成果却可以相互结合。
从0开始学V8漏洞利用之Windows Chrome利用一条龙