CVE-2020-1350 Windows DNS Server 远程代码执行漏洞分析利用技术分享,从零基础到精通,收藏这篇就够了!

DNS解析远程代码执行漏洞 DNS解析远程代码执行漏洞通常指的是攻击者利用DNS解析过程中的漏洞,通过构造恶意的DNS查询请求,实现对目标系统的远程代码执行。这种漏洞可能存在于DNS服务器软件、DNS客户端软件或中间件中。 阅读详情

本文为看雪论坛精华文章

看雪论坛作者ID:蝶澈——

‍‍

漏洞简讯

2020年7月,微软公开发布了Windows DNS Server远程代码执行漏洞,漏洞编号为CVE-2020-1350,该漏洞影响 2003 到 2019 年发布的所有 Windows Server 版本,CVSS 评分为满分 10 分。

微软在公告中指出,该漏洞可引发蠕虫式传播。Windows DNS Server 在处理特制的 SIG 响应包时,存在远程代码执行漏洞,未经身份验证的攻击者可通过维护一个域名并设置指向恶意服务器的 NS 记录,通过向目标 DNS 服务器查询该域名的 SIG 来利用此漏洞,成功利用此漏洞的远程攻击者可在目标系统上以 SYSTEM 账户权限执行任意代码。

经研判,该漏洞无需交互、不需要身份认证且 Windows DNS Server 默认配置可触发。目前,互联网上已出现该漏洞相关细节、POC 以及漏洞利用视频。

漏洞分析

此漏洞公开后,Check Point 发布了相关的分析文章,传送门:

https://research.checkpoint.com/2020/resolving-your-way-into-domain-admin:-exploiting-a-17-year-old-bug-in-windows-dns-servers。如果已了解漏洞原理可直接跳过本节。

以下为存在漏洞的函数 SigWireRead,SigWireRead 函数用来缓存 SIG 记录,当用户发起 SIG 查询时,DNS Server 首先查询有没有缓存记录,如果没有查询到或者该记录的 TTL 到期,则会向相应的 NS 服务器请求数据,这时候 DNS Server 会调用 SigWireRead 函数来存储这个记录。该漏洞是由整数溢出引发的堆溢出,漏洞位置位于倒数第 10 行和倒数第 3 行。



`_BYTE *__fastcall SigWireRead(__int64 a1, __int64 pMsg, __int64 pchData, unsigned __int16 a4)``{`  `__int64 v4; // rbx``unsigned __int64 pchEnd; // rdi``unsigned __int8 *signameData; // r8``unsigned __int8 *v7; // rax``unsigned __int8 *v8; // rbp``size_t sigLength; // rdi`  `_BYTE *v10; // rax`  `_BYTE *v11; // rsi``unsigned __int8 nameSigner; // [rsp+30h] [rbp-138h]``   `  `v4 = pchData;``   pchEnd = pchData + a4;  ``  signameData = (unsigned __int8 *)(pchData + 0x12);``if ( (unsigned __int64)signameData >= pchEnd )``return 0i64;`  `v7 = Name_PacketNameToCountNameEx(&nameSigner, pMsg, signameData, pchEnd)`  `v8 = v7;``if ( !v7 )``return 0i64;`  `sigLength = pchEnd - (_QWORD)v7;``  v10 = RR_AllocateEx((unsigned __int16)sigLength + (unsigned __int16)nameSigner + 0x14, 0, 0);  //整数溢出`  `v11 = v10;`                                  `if ( !v10 )``return 0i64;`  `*(_OWORD *)(v10 + 0x38) = *(_OWORD *)v4;`  `*((_WORD *)v10 + 0x24) = *(_WORD *)(v4 + 0x10);`  `Name_CopyCountName(v10 + 0x4A, &nameSigner);``memcpy(&v11[(unsigned __int8)v11[0x4A] + 0x4C], v8, sigLength);  //堆溢出``return v11;``}`


RR_AllocateEx 函数的第一个参数为 sigLength + nameSigner + 0x14,由于其大小为16 bits(仅使用 CX),可导致在计算参数时产生整数溢出,分配较小的缓冲区,后续使用 memcpy 函数向缓冲区复制大量数据导致堆溢出。

通过对比发现,关键变量 nameSigner 对应了数据包中 Signer’s name 表示的域名长度,sigLength 则对应了 Signature 字段数据的长度。实际上 Signer’s name 字段为 C0 0C,但解析成了 yyyyyyyyt.fun,这是因为使用了 DNS 名称压缩。C0 表示启用名称压缩,后面的 0C 代表了数据相对于 DNS 报文的偏移,Name_PacketNameToCountNameEx 函数会处理这个,并将处理结果放在 &nameSigner 处。

正常 DNS 响应包大小不会超过 0xFFFF,基于 UDP 的 DNS 大小被限制到 512 字节,即使采用 TCP 连接,DNS 消息长度也被限制为 2 个字节,也就是 0xFFFF,如下图所示,这 0xFFFF 字节数据除了包含真实的 Signer’s name 以及 Signature,还包括 DNS 头部和原始查询等信息,这些数据加起来已经明显超过0x14了,在这种情况下, sigLength + nameSigner + 0x14 小于 0x10000,因而不能直接产生溢出。

所以嘛,还需要观察一下 Name_PacketNameToCountNameEx 函数,以 “yyyyyyyyt.fun” 为例,经过该函数处理后 nameSigner 为 0xF,表示后面有 0xF 个字节,后面的 2 表示后面有两组数据,一组为 9 字节长度的 yyyyyyyyt,另一组为 3 字节长度的 fun。计算出的 nameSigner 会参与后续计算。



`0:001> db r8```000002ea`760b445d  c0 0c 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................```0:001> r rcx``rcx=000000f775b7f1f0``   ``0:001> p``dns!SigWireRead+0x41:```00007ff7`a9daf911 488be8          mov     rbp,rax```0:001> db rcx    // &nameSigner` ``000000f7`75b7f1f0  0f 02 09 79 79 79 79 79-79 79 79 74 03 66 75 6e  ...yyyyyyyyt.fun````000000f7`75b7f200  00 be 6c 75 ea 02 00 00-00 00 00 00 00 00 00 00  ..lu............`````0:001> u rip l6``dns!SigWireRead+0x4e:```00007ff7`a9daf91e 482bf8          sub     rdi,rax````00007ff7`a9daf921 6683c114        add     cx,14h````00007ff7`a9daf925 33d2            xor     edx,edx````00007ff7`a9daf927 6603cf          add     cx,di````00007ff7`a9daf92a 4533c0          xor     r8d,r8d````00007ff7`a9daf92d e8263c0800      call    dns!RR_AllocateEx (00007ff7`a9e33558)`````0:001> r cx``cx=f``0:001> ? rdi-rax```Evaluate expression: 65472 = 00000000`0000ffc0```0:001> ? cx + ffc0 + 14    //无法整数溢出```Evaluate expression: 65507 = 00000000`0000ffe3``


正常情况下,即使 DNS 响应包长度为 0xFFFF 也无法触发整数溢出,但由于攻击者可控制 DNS 响应数据,可通过设置 Signer’s name 中的偏移,使其指向一个较大的数来增加 nameSigner。由于每一组的长度不能超过 0x40(Name_PacketNameToCountNameEx 函数中有判断),所以我选择查询 9.yyyyyyyyt.fun。

当偏移由 0xC 变为 0xD,要处理的数据就由 "01 39 09 79 79 79 79 79 79 79 79 74 03 66 75 6e"变成了 “39 09 79 79 79 79 79 79 79 79 74 03 66 75 6e”。Name_PacketNameToCountNameEx 函数执行完成后 nameSigner 为 0x3b(0x39+1+1)。



`0:001>``dns!Name_PacketNameToCountNameEx+0xdd:```00007ff7`a9d74f55 493bf6          cmp     rsi,r14```0:001> ub rip``dns!Name_PacketNameToCountNameEx+0xbb:```00007ff7`a9d74f33 4c8d46ff        lea     r8,[rsi-1]````00007ff7`a9d74f37 0fb606          movzx   eax,byte ptr [rsi]````00007ff7`a9d74f3a 488db530190000  lea     rsi,[rbp+1930h]````00007ff7`a9d74f41 440fb6ca        movzx   r9d,dl````00007ff7`a9d74f45 6641c1e108      shl     r9w,8````00007ff7`a9d74f4a 66440bc8        or      r9w,ax````00007ff7`a9d74f4e 410fb7c1        movzx   eax,r9w````00007ff7`a9d74f52 4803f0          add     rsi,rax    //rax=0xd`````0:001> db rsi l40`   ``000002ea`760b442d  39 09 79 79 79 79 79 79-79 79 74 03 66 75 6e 00  9.yyyyyyyyt.fun.````000002ea`760b443d  00 18 00 01 c0 0c 00 18-00 01 00 00 00 00 ff d2  ................````000002ea`760b444d  00 01 05 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````000002ea`760b445d  00 00 c0 0d 00 00 00 00-00 00 00 00 00 00 00 00  ................`````0:001> gu    //函数返回``dns!SigWireRead+0x41:```00007ff7`a9daf911 488be8          mov     rbp,rax`````0:001> db rcx l40  // &nameSigner```000000f7`75b7f1f0  3b 01 39 09 79 79 79 79-79 79 79 79 74 03 66 75  ;.9.yyyyyyyyt.fu````000000f7`75b7f200  6e 00 00 18 00 01 c0 0c-00 18 00 01 00 00 00 00  n...............````000000f7`75b7f210  ff d2 00 01 05 00 00 00-00 00 00 00 00 00 00 00  ................````000000f7`75b7f220  00 00 00 00 c0 0d 00 00-00 00 00 00 00 7f 00 00  ................``


在这种情况下,sigLength + nameSigner + 0x14 的结果为 0x1000d,超过了 0xFFFF,成功整数溢出。虽然调用 RR_AllocateEx 函数时请求的大小为 0xd,但实际分配了 0x68 大小的缓冲区,因为分配的堆需要容纳 0x10 大小的自定义头部、0x38大小的 RR 头部以及重组的 DNS RR 数据(申请时的 0xd)。



`0:001> u rip l6``dns!SigWireRead+0x4e:```00007ff7`a9daf91e 482bf8          sub     rdi,rax````00007ff7`a9daf921 6683c114        add     cx,14h````00007ff7`a9daf925 33d2            xor     edx,edx````00007ff7`a9daf927 6603cf          add     cx,di````00007ff7`a9daf92a 4533c0          xor     r8d,r8d````00007ff7`a9daf92d e8263c0800      call    dns!RR_AllocateEx (00007ff7`a9e33558)```0:001> r cx``cx=3b``0:001> ? cx + rdi - rax + 14    //整数溢出```Evaluate expression: 65549 = 00000000`0001000d```……``0:001>` `dns!SigWireRead+0x5d:```00007ff7`a9daf92d e8263c0800      call    dns!RR_AllocateEx (00007ff7`a9e33558)```0:001> r rcx``rcx=000000000000000d``   ``//dns!Mem_Alloc```00007ff7`a9e32f3a 3b3dfc850a00    cmp     edi,dword ptr [dns!StandardAllocLists+0xc (00007ff7`a9edb53c)]````00007ff7`a9e32f40 488d1de9850a00  lea     rbx,[dns!StandardAllocLists (00007ff7`a9edb530)]````00007ff7`a9e32f47 760c            jbe     dns!Mem_Alloc+0xe9 (00007ff7`a9e32f55)````00007ff7`a9e32f49 488bc3          mov     rax,rbx````00007ff7`a9e32f4c 4883c358        add     rbx,58h````00007ff7`a9e32f50 3b7864          cmp     edi,dword ptr [rax+64h] ds:00007ff7`a9edb594=00000068`````0:001> dq dns!StandardAllocLists + 58```00007ff7`a9edb588  000002ea`758c5b18 00000068`00000001   // 0x68 大小的 AllocLists````00007ff7`a9edb598  0000000b`00000027 0000009c`00000004````00007ff7`a9edb5a8  0000004e`000000df 00000000`00003f60````00007ff7`a9edb5b8  ffffffff`ffffffff 00000000`ffffffff````00007ff7`a9edb5c8  00000000`00000000 00000000`00000000````00007ff7`a9edb5d8  00000000`00001388 000002ea`752c5098   // 0x88 大小的 AllocLists````00007ff7`a9edb5e8  00000088`00000002 00000004`0000001e````00007ff7`a9edb5f8  000000d2`00000007 00000021`000000ef`````0:001> gu``dns!SigWireRead+0x62:```00007ff7`a9daf932 488bf0          mov     rsi,rax```0:001> db rax-10  // 分配到 0x2ea758c5b18,长度为 0x68```000002ea`758c5b18  1c 00 00 00 bb 1a 69 00-ef 0c 0c 0c 0c 0c 0c fe  ......i.........````000002ea`758c5b28  00 00 00 00 00 00 00 00-00 80 00 00 00 00 0d 00  ................````000002ea`758c5b38  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````000002ea`758c5b48  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````000002ea`758c5b58  00 00 00 00 00 00 00 00-18 04 02 62 30 03 6f 72  ...........b0.or````000002ea`758c5b68  67 0b 61 66 69 6c 69 61-73 2d 6e 73 74 03 6f 72  g.afilias-nst.or````000002ea`758c5b78  67 00 00 00 00 00 00 00-00 00 00 00 ee 22 69 00  g............"i.````000002ea`758c5b88  e8 5b 8c 75 ea 02 00 00-ef 0b 0b fe ef 0b 0b fe  .[.u............``


SigWireRead 函数在后面会将 RR 数据重组(图2框里的数据),但由于 Signer’s name 实际指向的数据的长度就超过了 0xd,所以在 Name_CopyCountName 处就会产生溢出,覆盖到邻接的堆块。

以下为后续调用 memcpy 函数向不可访问区域写数据时触发崩溃的场景:



`0:001>` `dns!SigWireRead+0x98:```00007ff7`a9daf968 e8324c0d00      call    dns!memcpy (00007ff7`a9e8459f)``````0:001> db 2ea`758c5b18````000002ea`758c5b18  1c 00 00 00 bb 1a 69 00-ef 0c 0c 0c 0c 0c 0c fe  ......i.........````000002ea`758c5b28  00 00 00 00 00 00 00 00-00 80 00 00 00 00 0d 00  ................````000002ea`758c5b38  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````000002ea`758c5b48  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````000002ea`758c5b58  00 00 00 00 00 00 00 00-00 01 05 00 00 00 00 00  ................````000002ea`758c5b68  00 00 00 00 00 00 00 00-00 00 3b 01 39 09 79 79  ..........;.9.yy````000002ea`758c5b78  79 79 79 79 79 79 74 03-66 75 6e 00 00 18 00 01  yyyyyyt.fun.....    //已经溢出了````000002ea`758c5b88  c0 0c 00 18 00 01 00 00-00 00 ff d2 00 01 05 00  ................`````0:001> r r8    //但还是要复制0xffbe长度的数据``r8=000000000000ffbe``   ``0:001> p``(868.8fc): Access violation - code c0000005 (first chance)``First chance exceptions are reported before any exception handling.``This exception may be expected and handled.``msvcrt!memcpy+0xb4:```00007fff`98f74a34 660f7f49f0      movdqa  xmmword ptr [rcx-10h],xmm1 ds:000002ea`758cb000=????????????????????????????????``


漏洞利用

DNS 堆管理

RR_AllocateEx 函数被用来申请 RR 对象空间,在函数内部会将申请的长度加上 a2(例,SigWireRead 调用 RR_AllocateEx 时将 a2 设置为0),然后再加上 0x38(RR 对象头长度),然后调用 Mem_Alloc 函数。

如下所示,在 Mem_Alloc 函数中会将传入的 length 加 0x10(自定义堆头大小)。如果这个长度大于0xA0,会调用 allocMemory -> HeapAlloc 进行分配。而如果长度在 0xA0 以内,则从 StandardAllocLists 中分配合适大小的堆,如果当前 StandardAllocLists 中没有合适大小的堆,就会调用 allocMemory -> HeapAlloc 函数请求 v14[3] * v14[4] 大小的堆,并将它们分开并链接起来供 StandardAllocLists 查询。

StandardAllocLists 维护四个不同大小的堆链,包括 0x50、0x68、0x88 和 0xA0。例,如果 v8 在 0x89 到 0xA0 之间,则会分配到 0xA0 大小的 DNS 堆:

index 0:0x50 * 0x33(个数)= 0xFF0(0x00〜0x50)

index 1:0x68 * 0x27(个数)= 0xFD8(0x51〜0x68)

index 2:0x88 * 0x1e(个数)= 0xFF0(0x69〜0x88)

index 3:0xA0 * 0x19(个数)= 0xFA0(0x89〜0xA0)

对象的分配与释放

由前面信息可知,RRSIG 对象包括 0x10 的自定义头部、0x38 字节的对象头部以及不确定长度的对象数据(包括 0x12 长度的数据、Signer’s name 以及 Signature)。通过调整发送的响应包的 Signature 的长度可分配到目标大小的堆,如下,RRSIG 对象被分配到 0xA0 大小的块上。由于 RR 对象的结构已知,所以也很容易伪造。

当缓存信息超时后,将会自动释放该 RR 对象。可将目标 DNS 响应数据的 TTL 设置为 0,并在短时间内再次请求,从而释放原有的堆,同时也会重新申请一个新的堆来储存数据。以下为释放后的堆,其偏移 8 处指向下一个大小为 0xA0 的可用的堆。由于其大小在 0xA0 以内,因而会被 StandardAllocLists 记录(0xA0 大小,索引 3),也是遵循后进先出的原则。

避免立即崩溃

为了避免漏洞触发时引发崩溃,可以多次请求服务器使其分配很多 RR 对象(保证这些对象在漏洞利用时不会被释放)。然后释放中间的一个对象,使得触发漏洞时,RRSIG 对象可以申请到之前释放的块。

1、分配大量 0x1000F 块(加上 0x10 字节的 _Heap_Entry 实际上是 0x10020),然后释放中间的一个 0x1000F 块

2、分配大小为 0xF05F 的块,从而分割出 0xFB0 大小的剩余可用空间

3、接下来再请求大量 0xA0 块就可以使目标 RR 缓冲区分配到这个 0xFB0 大小的块(_Heap_Entry 0x10 + 0xFA0)

这样可保证向重占位的 0xFB0 大小的块中的某个释放后的对象处复制超过 0xFFFF 大小的数据也不会触发崩溃。

某次测试时的布局如下,我们可以释放 sp_115 所在堆,然后利用漏洞申请相同大小的堆,并覆盖后面的数据。



`0:019> db 17ef599f300 lfa0```0000017e`f599f300  00 00 00 00 00 00 00 00-42 71 5e fc f9 36 db 10  ........Bq^..6..````0000017e`f599f310  70 b7 65 e7 bb 22 a3 00-ef 0c 0c 0c 0c 0c 0c fe  p.e.."..........````0000017e`f599f320  00 00 00 00 00 00 00 00-61 80 10 00 18 00 57 00  ........a.....W.````0000017e`f599f330  57 02 00 00 57 02 00 00-00 00 00 00 01 00 00 00  W...W...........````0000017e`f599f340  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`f599f350  00 00 00 00 00 00 00 00-00 01 05 00 00 00 00 00  ................````0000017e`f599f360  00 00 00 00 00 00 00 00-00 00 16 03 06 73 70 5f  .............sp_````0000017e`f599f370  31 31 35 09 79 79 79 79-79 79 79 79 74 03 66 75  115.yyyyyyyyt.fu````0000017e`f599f380  6e 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  n...............````0000017e`f599f390  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`f599f3a0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`f599f3b0  00 00 00 00 bb 22 a3 00-ef 0c 0c 0c 0c 0c 0c fe  ....."..........````0000017e`f599f3c0  00 00 00 00 00 00 00 00-61 80 00 00 18 00 57 00  ........a.....W.````0000017e`f599f3d0  57 02 00 00 c7 19 00 00-00 00 00 00 01 00 00 00  W...............````0000017e`f599f3e0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`f599f3f0  00 00 00 00 00 00 00 00-00 01 05 00 00 00 00 00  ................````0000017e`f599f400  00 00 00 00 00 00 00 00-00 00 16 03 06 73 70 5f  .............sp_````0000017e`f599f410  31 31 36 09 79 79 79 79-79 79 79 79 74 03 66 75  116.yyyyyyyyt.fu````0000017e`f599f420  6e 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  n...............````0000017e`f599f430  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`f599f440  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`f599f450  00 00 00 00 bb 22 a3 00-ef 0c 0c 0c 0c 0c 0c fe  ....."..........````0000017e`f599f460  00 00 00 00 00 00 00 00-61 80 00 00 18 00 57 00  ........a.....W.````0000017e`f599f470  57 02 00 00 c7 19 00 00-00 00 00 00 01 00 00 00  W...............````0000017e`f599f480  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`f599f490  00 00 00 00 00 00 00 00-00 01 05 00 00 00 00 00  ................```......`


数据泄露

通过设置 RR 对象中的 rr_size 可泄露后面对象的堆数据。当客户端发起 SIG 请求时,DNS Server 会从缓存中读取数据。如下,在 SigWireWrite 函数中,rr_size 可控制读取数据的长度,但要需要保证 rr_size - nameSigner - 0x14 的大小不超过 v4 - v9(Wire_TestForBytesRemaining 函数控制)。

将 sp_116 的 rr_size 设置为 0x1a0(本来是 0x57)然后请求其 SIG 可获取sp_117 和 sp_118 范围内的数据,如下:

代码执行

当使用 RR_Free 函数释放超时的 RR 对象时,会判断 wtype 是否为 2(NS)或 6(SOA),如果是的话,就会调用 Timeout_FreeWithFunctionEx,在该函数中调用 Mem_Alloc 申请 0x38 大小的堆,用于存放对象指针(pItem)、释放函数指针(pFreeFunction)等等。对象释放时会在Timeout_CleanupDelayedFreeList 函数中调用 FreeFunction,且参数为 pItem,不过这通常需要一段时间。



`// DNS!RR_Free`  `v4 = *(_WORD *)(v1 + 0xC);``if ( v4 != 2 && v4 != 6 && (unsigned __int16)(v4 + 0xFF) > 1u || (v5 = *(_WORD *)(v1 + 0xA), v5 & 0x200) )`  `{ ...... }``else`  `{`        `*(_WORD *)(v1 + 0xA) = v5 | 0x200;`        `Timeout_FreeWithFunctionEx(v1, (__int64)RR_Free, (__int64)"nanoserver\\ds\\dns\\server\\server\\record.c", 168);`        `_InterlockedAdd(&dword_1401CCF4C, 1u);`  `}``//DNS!Timeout_FreeWithFunctionEx``if ( rr_object )`  `{`    `v4 = (CHAR *)a3;`    `v5 = (void *)rr_free;`    `v6 = a4;`    `v7 = (void *)rr_object;`    `......`    `v8 = (DnsTimeoutObject *)Mem_Alloc(0x28, 7i64, (__int64)"nanoserver\\ds\\dns\\server\\server\\timeout.c", 1619);`    `v9 = v8;``if ( v8 ) ``    {`      `v8->Tag = 0xDE1AEDFE;``      v8->pItem = v7;          //偏移0x8处设置需要释放的对象指针`      `v8->pFreeFunction = v5;  // 偏移0x10处设置RR_FREE函数指针`      `v8->pszFile = v4;`      `v8->LineNo = v6;``//DNS!Timeout_CleanupDelayedFreeList``if ( v5->pFreeFunction )`    `{`      `_InterlockedIncrement(&dword_1401DB464)`      `((void (__usercall *)(__int64 (*)(void)@<rcx>))v5->pFreeFunction)((__int64 (*)(void))v6->pItem);`      `}``else`    `{`      `Mem_Free((_QWORD *)v6->pItem, 0i64, 0i64, (__int64)"nanoserver\\ds\\dns\\server\\server\\timeout.c", 571);`    `}`


如果可以将 DnsTimeoutObject(0x38大小)分配到可控的位置,再利用溢出覆盖 pItem 和 pFreeFunction,就可以在对象释放时控制执行流程(允许执行带一个参数的函数)。而且,原始的 pFreeFunction 指向 dns!RR_Free,可通过将其泄露从而进一步获取 DNS 基址(这需要收集不同版本的偏移)。



``0:021> db 17e`f599f630 l50````0000017e`f599f630  00 00 00 00 bb 07 50 00-ef 0c 0c 0c 0c 0c 0c fe  ......P.........````0000017e`f599f640  10 16 03 e7 7e 01 00 00-70 9f 02 e7 7e 01 00 00  ....~...p...~...````0000017e`f599f650  b0 4a e4 d8 f7 7f 00 00-b8 9f f6 d8 f7 7f 00 00  .J..............````0000017e`f599f660  fe ed 1a de a8 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`f599f670  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................``````0:021> u 7ff7`d8e44ab0    //偏移 0x10 处(不包括头部)的函数指针```dns!RR_Free:```00007ff7`d8e44ab0 4885c9          test    rcx,rcx````00007ff7`d8e44ab3 0f8434020000    je      dns!RR_Free+0x23d (00007ff7`d8e44ced)````00007ff7`d8e44ab9 48895c2408      mov     qword ptr [rsp+8],rbx````00007ff7`d8e44abe 48896c2410      mov     qword ptr [rsp+10h],rbp````00007ff7`d8e44ac3 4889742418      mov     qword ptr [rsp+18h],rsi````00007ff7`d8e44ac8 57              push    rdi````00007ff7`d8e44ac9 4154            push    r12````00007ff7`d8e44acb 4156            push    r14``````0:021> db 17e`e7029f70-10  //偏移 0x8 处的一个 SOA 对象指针````0000017e`e7029f60  00 00 00 00 bb 22 8a 00-ef 0c 0c 0c 0c 0c 0c fe  ....."..........````0000017e`e7029f70  00 00 00 00 00 00 00 00-61 80 10 22 06 00 2d 00  ........a.."..-.````0000017e`e7029f80  ae 01 00 00 ae 01 00 00-00 00 00 00 01 00 00 00  ................````0000017e`e7029f90  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`e7029fa0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................````0000017e`e7029fb0  00 00 00 00 00 00 00 00-00 00 00 00 01 00 00 14  ................````0000017e`e7029fc0  03 04 73 70 5f 30 09 79-79 79 79 79 79 79 79 74  ..sp_0.yyyyyyyyt````0000017e`e7029fd0  03 66 75 6e 00 00 00 00-00 00 00 00 00 00 00 00  .fun............``


先前,研究人员已经找到了 CFG 允许执行的且只需要一个参数的 dns!NsecDNSRecordConvert 函数,它可以将第一个参数偏移0x20处的字符串复制到新开辟的区域,这允许我们进行任意地址读取。我们可以通过设置 v1 偏移 0x28 处的数据使 Rpc_AllocateRecord 函数申请到我们可控的区域,然后再使用数据泄露思路进行读取。

为了获得 msvcrt!system 函数(CFG允许)的地址,可通过上述思路进一步泄露 msvcrt!memcpy 函数地址,然后根据偏移计算出 system 函数地址。但这还需要一个可控的参数地址,可通过连续释放两个对象,然后泄露后一个对象空间来获得堆指针,将 dns!_imp_memcpy 地址布局到该地址偏移 0x20 处。成功获取 msvcrt!system 函数地址后,采用同样的思路调用 system 可获得任意命令执行。

总 结

Windows DNS Server 在处理特制的 SIG 响应包时,存在远程代码执行漏洞,未经身份验证的攻击者可通过向目标 DNS 服务器查询并响应 SIG 请求来利用此漏洞,成功利用此漏洞的远程攻击者可在目标系统上以 SYSTEM 账户权限执行任意代码。

本文对此漏洞进行分析,并参考链接 [2-3] 中的漏洞利用思路,在实验环境下拿到了 SYSTEM SHELL,如下所示。PS:实验环境是指将 DNS 服务器转发器配置为攻击者控制的 NS 服务器。由于真实环境下的 DNS 服务器会处理大量请求,此思路可能无法很好地应用于实战。

黑客/网络安全学习路线

对于从来没有接触过黑客/网络安全的同学,目前网络安全、信息安全也是计算机大学生毕业薪资相对较高的学科。

大白也帮大家准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

这也是耗费了大白近四个月的时间,吐血整理,文章非常非常长,觉得有用的话,希望粉丝朋友帮忙点个**「分享」「收藏」「在看」「赞」**

网络安全/渗透测试法律法规必知必会****

今天大白就帮想学黑客/网络安全技术的朋友们入门必须先了解法律法律。

【网络安全零基础入门必知必会】网络安全行业分析报告(01)

【网络安全零基础入门必知必会】什么是黑客、白客、红客、极客、脚本小子?(02)

【网络安全零基础入门必知必会】网络安全市场分类(03)

【网络安全零基础入门必知必会】常见的网站攻击方式(04)

【网络安全零基础入门必知必会】网络安全专业术语全面解析(05)

【网络安全入门必知必会】《中华人民共和国网络安全法》(06)

【网络安全零基础入门必知必会】《计算机信息系统安全保护条例》(07)

【网络安全零基础入门必知必会】《中国计算机信息网络国际联网管理暂行规定》(08)

【网络安全零基础入门必知必会】《计算机信息网络国际互联网安全保护管理办法》(09)

【网络安全零基础入门必知必会】《互联网信息服务管理办法》(10)

【网络安全零基础入门必知必会】《计算机信息系统安全专用产品检测和销售许可证管理办法》(11)

【网络安全零基础入门必知必会】《通信网络安全防护管理办法》(12)

【网络安全零基础入门必知必会】《中华人民共和国国家安全法》(13)

【网络安全零基础入门必知必会】《中华人民共和国数据安全法》(14)

【网络安全零基础入门必知必会】《中华人民共和国个人信息保护法》(15)

【网络安全零基础入门必知必会】《网络产品安全漏洞管理规定》(16)

网络安全/渗透测试linux入门必知必会

【网络安全零基础入门必知必会】什么是Linux?Linux系统的组成与版本?什么是命令(01)

【网络安全零基础入门必知必会】VMware下载安装,使用VMware新建虚拟机,远程管理工具(02)

【网络安全零基础入门必知必会】VMware常用操作指南(非常详细)零基础入门到精通,收藏这一篇就够了(03)

【网络安全零基础入门必知必会】CentOS7安装流程步骤教程(非常详细)零基入门到精通,收藏这一篇就够了(04)

【网络安全零基础入门必知必会】Linux系统目录结构详细介绍(05)

【网络安全零基础入门必知必会】Linux 命令大全(非常详细)零基础入门到精通,收藏这一篇就够了(06)

【网络安全零基础入门必知必会】linux安全加固(非常详细)零基础入门到精通,收藏这一篇就够了(07)

网络安全/渗透测试****计算机网络入门必知必会****

【网络安全零基础入门必知必会】TCP/IP协议深入解析(非常详细)零基础入门到精通,收藏这一篇就够了(01)

【网络安全零基础入门必知必会】什么是HTTP数据包&Http数据包分析(非常详细)零基础入门到精通,收藏这一篇就够了(02)

【网络安全零基础入门必知必会】计算机网络—子网划分、子网掩码和网关(非常详细)零基础入门到精通,收藏这一篇就够了(03)

网络安全/渗透测试入门之HTML入门必知必会

【网络安全零基础入门必知必会】什么是HTML&HTML基本结构&HTML基本使用(非常详细)零基础入门到精通,收藏这一篇就够了1

【网络安全零基础入门必知必会】VScode、PhpStorm的安装使用、Php的环境配置,零基础入门到精通,收藏这一篇就够了2

【网络安全零基础入门必知必会】HTML之编写登录和文件上传(非常详细)零基础入门到精通,收藏这一篇就够了3

网络安全/渗透测试入门之Javascript入门必知必会

【网络安全零基础入门必知必会】Javascript语法基础(非常详细)零基础入门到精通,收藏这一篇就够了(01)

【网络安全零基础入门必知必会】Javascript实现Post请求、Ajax请求、输出数据到页面、实现前进后退、文件上传(02)

网络安全/渗透测试入门之Shell入门必知必会

【网络安全零基础入门必知必会】Shell编程基础入门(非常详细)零基础入门到精通,收藏这一篇就够了(第七章)

网络安全/渗透测试入门之PHP入门必知必会

【网络安全零基础入门】PHP环境搭建、安装Apache、安装与配置MySQL(非常详细)零基础入门到精通,收藏这一篇就够(01)

【网络安全零基础入门】PHP基础语法(非常详细)零基础入门到精通,收藏这一篇就够了(02)

【网络安全零基础入门必知必会】PHP+Bootstrap实现表单校验功能、PHP+MYSQL实现简单的用户注册登录功能(03)

网络安全/渗透测试入门之MySQL入门必知必会

【网络安全零基础入门必知必会】MySQL数据库基础知识/安装(非常详细)零基础入门到精通,收藏这一篇就够了(01)

【网络安全零基础入门必知必会】SQL语言入门(非常详细)零基础入门到精通,收藏这一篇就够了(02)

【网络安全零基础入门必知必会】MySQL函数使用大全(非常详细)零基础入门到精通,收藏这一篇就够了(03)

【网络安全零基础入门必知必会】MySQL多表查询语法(非常详细)零基础入门到精通,收藏这一篇就够了(04)

****网络安全/渗透测试入门之Python入门必知必会

【网络安全零基础入门必知必会】之Python+Pycharm安装保姆级教程,Python环境配置使用指南,收藏这一篇就够了【1】

【网络安全零基础入门必知必会】之Python编程入门教程(非常详细)零基础入门到精通,收藏这一篇就够了(2)

python开发之手写第一个python程序

python开发笔记之变量

python基础语法特征

python开发数据类型

python开发笔记之程序交互

python入门教程之python开发学习笔记基本数据类型

python入门教程之python开发笔记之格式化输出

python入门教程之python开发笔记基本运算符

python入门教程python开发基本流程控制if … else

python入门教程之python开发笔记流程控制之循环

python入门之Pycharm开发工具的使用

python入门教程之python字符编码转换

python入门之python开发字符编码

python入门之python开发基本数据类型数字

python入门python开发基本数据类型字符串

python入门python开发基本数据类型列表

python入门python开发基本数据类型

python入门教程之python开发可变和不可变数据类型和hash

python入门教程python开发字典数据类型

python入门之python开发笔记基本数据类型集合

python开发之collections模块

python开发笔记之三元运算

【网络安全零基础入门必知必会】之10个python爬虫入门实例(非常详细)零基础入门到精通,收藏这一篇就够了(3)

****网络安全/渗透测试入门之SQL注入入门必知必会

【网络安全渗透测试零基础入门必知必会】之初识SQL注入(非常详细)零基础入门到精通,收藏这一篇就够了(1)

【网络安全渗透测试零基础入门必知必会】之SQL手工注入基础语法&工具介绍(2)

【网络安全渗透测试零基础入门必知必会】之SQL注入实战(非常详细)零基础入门到精通,收藏这一篇就够了(3)

【网络安全渗透测试零基础入门必知必会】之SQLmap安装&实战(非常详细)零基础入门到精通,收藏这一篇就够了(4)

【网络安全渗透测试零基础入门必知必会】之SQL防御(非常详细)零基础入门到精通,收藏这一篇就够了(4)

****网络安全/渗透测试入门之XSS攻击入门必知必会

【网络安全渗透测试零基础入门必知必会】之XSS攻击基本概念和原理介绍(非常详细)零基础入门到精通,收藏这一篇就够了(1)

网络安全渗透测试零基础入门必知必会】之XSS攻击获取用户cookie和用户密码(实战演示)零基础入门到精通收藏这一篇就够了(2)

【网络安全渗透测试零基础入门必知必会】之XSS攻击获取键盘记录(实战演示)零基础入门到精通收藏这一篇就够了(3)

【网络安全渗透测试零基础入门必知必会】之xss-platform平台的入门搭建(非常详细)零基础入门到精通,收藏这一篇就够了4

【网络安全渗透测试入门】之XSS漏洞检测、利用和防御机制XSS游戏(非常详细)零基础入门到精通,收藏这一篇就够了5

****网络安全/渗透测试入门文件上传攻击与防御入门必知必会

【网络安全渗透测试零基础入门必知必会】之什么是文件包含漏洞&分类(非常详细)零基础入门到精通,收藏这一篇就够了1

【网络安全渗透测试零基础入门必知必会】之cve实际漏洞案例解析(非常详细)零基础入门到精通, 收藏这一篇就够了2

【网络安全渗透测试零基础入门必知必会】之PHP伪协议精讲(文件包含漏洞)零基础入门到精通,收藏这一篇就够了3

【网络安全渗透测试零基础入门必知必会】之如何搭建 DVWA 靶场保姆级教程(非常详细)零基础入门到精通,收藏这一篇就够了4

【网络安全渗透测试零基础入门必知必会】之Web漏洞-文件包含漏洞超详细全解(附实例)5

【网络安全渗透测试零基础入门必知必会】之文件上传漏洞修复方案6

****网络安全/渗透测试入门CSRF渗透与防御必知必会

【网络安全渗透测试零基础入门必知必会】之CSRF漏洞概述和原理(非常详细)零基础入门到精通, 收藏这一篇就够了1

【网络安全渗透测试零基础入门必知必会】之CSRF攻击的危害&分类(非常详细)零基础入门到精通, 收藏这一篇就够了2

【网络安全渗透测试零基础入门必知必会】之XSS与CSRF的区别(非常详细)零基础入门到精通, 收藏这一篇就够了3

【网络安全渗透测试零基础入门必知必会】之CSRF漏洞挖掘与自动化工具(非常详细)零基础入门到精通,收藏这一篇就够了4

【网络安全渗透测试零基础入门必知必会】之CSRF请求伪造&Referer同源&置空&配合XSS&Token值校验&复用删除5

****网络安全/渗透测试入门SSRF渗透与防御必知必会

【网络安全渗透测试零基础入门必知必会】之SSRF漏洞概述及原理(非常详细)零基础入门到精通,收藏这一篇就够了 1

【网络安全渗透测试零基础入门必知必会】之SSRF相关函数和协议(非常详细)零基础入门到精通,收藏这一篇就够了2

【网络安全渗透测试零基础入门必知必会】之SSRF漏洞原理攻击与防御(非常详细)零基础入门到精通,收藏这一篇就够了3**
**

****网络安全/渗透测试入门XXE渗透与防御必知必会

【网络安全渗透测试零基础入门必知必会】之XML外部实体注入(非常详细)零基础入门到精通,收藏这一篇就够了1

网络安全渗透测试零基础入门必知必会】之XXE的攻击与危害(非常详细)零基础入门到精通,收藏这一篇就够了2

【网络安全渗透测试零基础入门必知必会】之XXE漏洞漏洞及利用方法解析(非常详细)零基础入门到精通,收藏这一篇就够了3

【网络安全渗透测试零基础入门必知必会】之微信XXE安全漏洞处理(非常详细)零基础入门到精通,收藏这一篇就够了4

****网络安全/渗透测试入门远程代码执行渗透与防御必知必会

【网络安全渗透测试零基础入门必知必会】之远程代码执行原理介绍(非常详细)零基础入门到精通,收藏这一篇就够了1

【网络安全零基础入门必知必会】之CVE-2021-4034漏洞原理解析(非常详细)零基础入门到精通,收藏这一篇就够了2

【网络安全零基础入门必知必会】之PHP远程命令执行与代码执行原理利用与常见绕过总结3

【网络安全零基础入门必知必会】之WEB安全渗透测试-pikachu&DVWA靶场搭建教程,零基础入门到精通,收藏这一篇就够了4

****网络安全/渗透测试入门反序列化渗透与防御必知必会

【网络安全零基础入门必知必会】之什么是PHP对象反序列化操作(非常详细)零基础入门到精通,收藏这一篇就够了1

【网络安全零基础渗透测试入门必知必会】之php反序列化漏洞原理解析、如何防御此漏洞?如何利用此漏洞?2

【网络安全渗透测试零基础入门必知必会】之Java 反序列化漏洞(非常详细)零基础入门到精通,收藏这一篇就够了3

【网络安全渗透测试零基础入门必知必会】之Java反序列化漏洞及实例解析(非常详细)零基础入门到精通,收藏这一篇就够了4

【网络安全渗透测试零基础入门必知必会】之CTF题目解析Java代码审计中的反序列化漏洞,以及其他漏洞的组合利用5

网络安全/渗透测试**入门逻辑漏洞必知必会**

【网络安全渗透测试零基础入门必知必会】之一文带你0基础挖到逻辑漏洞(非常详细)零基础入门到精通,收藏这一篇就够了

网络安全/渗透测试入门暴力猜解与防御必知必会

【网络安全渗透测试零基础入门必知必会】之密码安全概述(非常详细)零基础入门到精通,收藏这一篇就够了1

【网络安全渗透测试零基础入门必知必会】之什么样的密码是不安全的?(非常详细)零基础入门到精通,收藏这一篇就够了2

【网络安全渗透测试零基础入门必知必会】之密码猜解思路(非常详细)零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之利用Python暴力破解邻居家WiFi密码、压缩包密码,收藏这一篇就够了4

【网络安全渗透测试零基础入门必知必会】之BurpSuite密码爆破实例演示,零基础入门到精通,收藏这一篇就够了5

【网络安全渗透测试零基础入门必知必会】之Hydra密码爆破工具使用教程图文教程,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之暴力破解medusa,零基础入门到精通,收藏这一篇就够了7

【网络安全渗透测试零基础入门必知必会】之Metasploit抓取密码,零基础入门到精通,收藏这一篇就够了8

Wfuzz:功能强大的web漏洞挖掘工具

****网络安全/渗透测试入门掌握Redis未授权访问漏洞必知必会

【网络安全渗透测试零基础入门必知必会】之Redis未授权访问漏洞,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之Redis服务器被攻击后该如何安全加固,零基础入门到精通,收藏这一篇就够了**
**

网络安全/渗透测试入门掌握**ARP渗透与防御关必知必会**

【网络安全渗透测试零基础入门必知必会】之ARP攻击原理解析,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之ARP流量分析,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之ARP防御策略与实践指南,零基础入门到精通,收藏这一篇就够了

网络安全/渗透测试入门掌握系统权限提升渗透与防御关****必知必会

【网络安全渗透测试零基础入门必知必会】之Windows提权常用命令,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之Windows权限提升实战,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之linux 提权(非常详细)零基础入门到精通,收藏这一篇就够了

网络安全/渗透测试入门掌握Dos与DDos渗透与防御相关****必知必会

【网络安全渗透测试零基础入门必知必会】之DoS与DDoS攻击原理(非常详细)零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之Syn-Flood攻击原理解析(非常详细)零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之IP源地址欺骗与dos攻击,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之SNMP放大攻击原理及实战演示,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之NTP放大攻击原理,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之什么是CC攻击?CC攻击怎么防御?,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之如何防御DDOS的攻击?零基础入门到精通,收藏这一篇就够了

网络安全/渗透测试入门掌握无线网络安全渗透与防御相关****必知必会

【网络安全渗透测试零基础入门必知必会】之Aircrack-ng详细使用安装教程,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之aircrack-ng破解wifi密码(非常详细)零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之WEB渗透近源攻击,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之无线渗透|Wi-Fi渗透思路,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之渗透WEP新思路Hirte原理解析,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之WPS的漏洞原理解析,零基础入门到精通,收藏这一篇就够了

网络安全/渗透测试入门掌握木马免杀问题与防御********必知必会

【网络安全渗透测试零基础入门必知必会】之Metasploit – 木马生成原理和方法,零基础入门到精通,收藏这篇就够了

【网络安全渗透测试零基础入门必知必会】之MSF使用教程永恒之蓝漏洞扫描与利用,收藏这一篇就够了

网络安全/渗透测试入门掌握Vulnhub靶场实战********必知必会

【网络安全渗透测试零基础入门必知必会】之Vulnhub靶机Prime使用指南,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之Vulnhub靶场Breach1.0解析,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之vulnhub靶场之DC-9,零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之Vulnhub靶机Kioptrix level-4 多种姿势渗透详解,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之Vulnhub靶场PWNOS: 2.0 多种渗透方法,收藏这一篇就够了

网络安全/渗透测试入门掌握社会工程学必知必会

【网络安全渗透测试零基础入门必知必会】之什么是社会工程学?定义、类型、攻击技术,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之社会工程学之香农-韦弗模式,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之社工学smcr通信模型,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之社会工程学之社工步骤整理(附相应工具下载)收藏这一篇就够了

网络安全/渗透测试入门掌握********渗透测试工具使用******必知必会**

2024版最新Kali Linux操作系统安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了

【网络安全渗透测试零基础入门必知必会】之渗透测试工具大全之Nmap安装使用命令指南,零基础入门到精通,收藏这一篇就够了

2024版最新AWVS安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了

2024版最新burpsuite安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了

2024版最新owasp_zap安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了

2024版最新Sqlmap安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了

2024版最新Metasploit安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了

2024版最新Nessus下载安装激活使用教程(非常详细)零基础入门到精通,收藏这一篇就够了

2024版最新Wireshark安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了

觉得有用的话,希望粉丝朋友帮大白点个**「分享」「收藏」「在看」「赞」**

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

DNS Server远程代码执行漏洞复现(CVE-2020-1350) 漏洞描述 2020年7月15日,微软发布补丁修复了一个标注为远程代码执行的DNS Server漏洞,官方分类为“可蠕虫级”高危漏洞,易受攻击的漏洞有可能通过恶意软件在易受攻击的计算机之间传播,而无需用户干预。CVSS评分10分(即高危且易利用),漏洞编号CVE-2020-1350。未经身份验证的攻击者可以发送特殊构造的数据包到目标DNS Server来利用此漏洞,成功利用此漏洞可能达到远程代码执行的效果。如果域控制器上存在DNS服务,攻击者可利用此漏洞获取到域控制器的系统权限。另外,DNS服务器一.. 阅读详情

相关推荐

CVE-2020-1350-DoS:CVE-2020-1350的拒绝服务概念验证

CVE-2020-1350(SIGRed)-Windows DNS DoS攻击 该漏洞的功劳完全归功于Check Point Research( ),他对该漏洞进行了令人难以置信的(该帖子的 )。可以在找到其。 此漏洞是由编写的 快速的工作原理摘要: 在LAN上,您为邪恶域(例如9.evil_domain.com)触发DNS请求(更具体地说,是对SIG记录的请求)。 这被发送到易受攻击的Windows服务器的DNS服务器 易受攻击的服务器会将请求发送到将请求转发到的任何DNS(通常是标准Google IP) Google DNS使用邪恶域名服务器的域名服务器进行响应 然后,易受攻击的服务器充当DNS客户端,并向恶意DNS服务器发送请求 邪恶的服务器以溢出2字节数字的有效负载作为响应,从而导致发生比所需的更小的分配 签名被复制并且发生故障(当然),从而使易受攻击的服务器的DNS服务器崩溃

CVE-2020-1350: Windows DNS Server蠕虫级远程代码执行漏洞分析

360-CERT [三六零CERT](javascript:void(0)???? 昨天 0x00 漏洞背景 Windows DNS Server远程代码执行漏洞(CVE-2020-1350):未经身份验证的攻击者可通过向目标DNS服务器发送特制数据包从而目标系统上以本地SYSTEM账户权限执行任意代码。该漏洞无需交互、不需要身份认证且Windows DNS Server默认配置可触发,攻击场景如下: (注:图来自互联网) 利用场景1: (1)受害者访问攻击者域名"evil.server.io" (2)

爱国小白帽 5002

NSE-scripts:NSE脚本可检测CVE-2020-1350 SIGRED和CVE-2020-0796 SMBGHOST,CVE-2021-21972

包含自定义NSE脚本 CVE-2020-0796 NSE脚本使用Microsoft SMBv3压缩(又名coronablue,SMBGhost)来检测易受攻击的CVE-2020-0796问题 该脚本是smb-protocols.nse脚本的修改后的版本,具有用于v3.11检测和验证CVE-2020-0796的修改后的输出数据。 注意:该脚本只是安全地检查SMBv3上的CVE-2020-0796漏洞,并且不会尝试执行任何其他操作。 安装和运行 将.nse文件复制到nmap / scripts /文件夹并运行更新 cp cve-2020-0796.nse /usr/share/nmap/scripts/ nmap --script-updatedb 运行为 nmap -p445 --script cve-2020-0796 <<target>> -- @output -- | smb

CVE-2020-1350: Windows DNS Server蠕虫级远程代码执行漏洞通告

360-CERT [三六零CERT](javascript:void(0)???? 今天 0x00 漏洞背景 2020年07月15日, 360CERT监测发现 微软官方 发布了 Windows DNS Server 的风险通告,该漏洞编号为 CVE-2020-1350,漏洞等级:严重。 Windows DNS Server` 存在 `远程代码执行漏洞`,`远程攻击者` 通过 `向受影响服务器发送特制的请求包`,可以造成 `远程代码执行影响 微软官方认为该漏洞具备蠕虫攻击的能力,CVSS评分10(10分制

爱国小白帽 2962

DNS溢出工具

利用Microsoft Windows DNS服务器的RPC接口在处理畸形请求时存在栈溢出漏洞,远程攻击者可能利用此漏洞获取服务器的管理权限的工具。

WindowsDNS服务器远程栈溢出漏洞的应用研究

WindowsDNS服务器远程栈溢出漏洞的应用研究 WindowsDNS服务器远程栈溢出漏洞的应用研究 WindowsDNS服务器远程栈溢出漏洞的应用研究

【更新1.0:PoC发布】CVE-2020-1350: Windows DNS Server蠕虫级远程代码执行漏洞通告

0x00 更新概览 2020年07月16日,360CERT监测到 FSecureLabs 发布了 PoC,可造成拒绝服务影响。本次更新标识该漏洞极易可能在短时间内出现大规模攻击态势。 具体更新详情可参考: 漏洞详情 0x01 漏洞背景 2020年07月15日, 360CERT监测发现 微软官方 发布了 Windows DNS Server 的风险通告,该漏洞编号为 CVE-2020-1350,漏洞等级:严重。 Windows DNS Server` 存在 `远程代码执行漏洞`,`远程攻击者` 通过 `向受.

爱国小白帽 1万+

DSMA时序修复避坑指南:当Setup和Hold互卡时,除了调Margin还能做什么?

本文深入探讨DSMA时序修复中的Setup与Hold互锁问题,提供7种高阶策略,包括优先级判断、高级参数组合、单元类型智能替换等,帮助工程师突破时序收敛瓶颈。特别针对fix_eco_timing命令的隐藏参数和物理协同优化进行详细解析,助力芯片设计实现时序收敛。

weixin_30162121的博客 296

CVE-2020-1350 项目使用文档

CVE-2020-1350 项目使用文档 1. 项目的目录结构及介绍 cve-2020-1350/ ├── README.md ├── config │ └── config.yaml ├── src │ ├── main.py │ └── utils.py └── tests └── test_main.py README.md: 项目说明文件,包含项目的基本信息和使用指...

gitblog_00903的博客 970

AutoCAD Plant 3D自定义零件库实战:手把手教你用Python创建参数化槽式三通

本文详细介绍了如何利用Python脚本在AutoCAD Plant 3D中创建参数化槽式三通组件,从API原理到实战开发,帮助用户构建高效的自定义零件库。通过Python装饰器系统控制零件属性和行为,实现几何建模、参数管理和规格编辑器集成,提升工业管道设计的标准化和效率。

weixin_28267011的博客 331

ESP-01S使用micropython,利用Thonny烧写固件

在家舒服的太久了,想学习点新的东西,这次看上了ESP8266系列的联网设备,想自己做点小玩意出来耍耍,下面跟我一起来学习吧。本篇主要记录固件的烧写及测试。Thonny下载链接不算难,但是网上资源较少。也是提醒自己不要忘记这个步骤,记录一下,也分享给和我一样开始接触的小伙伴,加油加油,万事开头难。

weixin_43422072的博客 1693

linux远程溢出漏洞,【高危】漏洞预警 | Linux Systemd存在高危远程溢出漏洞(CVE-2017-9445)...

原标题:【高危】漏洞预警 | Linux Systemd存在高危远程溢出漏洞(CVE-2017-9445)systemd是Linux下的init软件,主要用于减少系统引导时间和计算开销。systemd 的systemd-resolved服务用于处理DNS请求并为本地应用提供域名解析。该服务的dns_packet_new函数中存在缓冲区溢出漏洞,“页对齐数 - sizeof(DnsPacket) +...

weixin_31026805的博客 235

树莓派4B之OpenCV人脸识别实战:从Haar Cascade到实时检测(保姆级教程)

本教程详细介绍了如何在树莓派4B上部署OpenCV,并利用Haar Cascade算法实现实时人脸识别。内容涵盖从系统环境搭建、算法原理解析到代码逐行讲解与实战调优,为嵌入式AI和计算机视觉初学者提供了一份完整的保姆级实践指南。

p8q9r0的博客 402

win10黑客教学(1)--dns溢出

DNS 解析中的漏洞可能允许远程代码执行。 Microsoft Windows 是微软发布的非常流行的操作系统。 Microsoft Windows DNS 服务器的 RPC 接口在处理畸形请求时存在栈溢出漏洞,远程 攻击者可能利用此漏洞获取服务器的管理权限。 如果远程攻击者能够向有漏洞的系统发送特制的 RPC 报文的话,就可以触发这个溢 出,导致以 DNS 服务的安全环境执行任意指令 dns溢出工具 提取码:yo0i 使用时候在cmd里cd到目录下面,然后输入 dns 就可以看到帮助 [.] - UnQ

azraelxuemo的博客 1055

深入MIPI DSI显示技术栈 (三) DSI vs CSI-2:孪生协议的本质差异

MIPI协议中的DSI与CSI-2存在本质差异:DSI为输出导向协议(Host→Display),用于屏幕控制和画面传输;CSI-2为输入导向协议(Sensor→Host),专攻图像采集。二者在包结构、同步机制、物理层优化等方面均有显著区别:DSI支持命令包和BLLP包,CSI-2具备嵌入式数据包;DSI时钟模式以Burst为主,CSI-2支持Continuous模式。典型场景中,二者协同工作(如手机相机预览),需注意时序同步和延迟控制。设计混合系统时,需合理规划虚拟通道和物理层资源,充分发挥这对&quot

GateWorld的博客 2106

ArcGIS Pro 制作这种地图海报

ArcMap 版本与 ArcGIS Pro 版本的制图功能相差太多,无论从美观上还是制图效率都远远优于 ArcMap,用了一段时间的 ArcGIS Pro ,真心推荐有条件的大家赶紧试一试!一个软件也能搞定一张不错的海报哦!----吐槽:好的设计真的是门花时间的活,这个教程大概花了我7小时左右,我都忘了我自己教程中截图多少张了!(可能是我速度太慢了)测试数据:阿里云盘分享-----北极海冰数据.https://www.aliyundrive.com/s/SUhsnqfkmXh。

J_Giser的博客 1429

[严重]Microsoft Windows DNS服务器RPC接口远程栈溢出漏洞

危害级别:★★★★★★ 影响版本:Microsoft Windows Server 2003 SP2Microsoft Windows Server 2003 SP1Microsoft Windows 2000SP4

葉落堂 3616

SAP AI Core 高阶能力实战参考

文章摘要:本文探讨了在企业SAP架构中整合GenAI技术的工程化实践,重点分析了SAP AI Core的高阶能力应用。作者指出,企业级AI应用需解决多轮对话管理、Git同步工作流、提示词治理等核心问题,而非简单接入大模型API。技术方案展示了如何通过SAP AI Core的orchestration service管理对话历史,利用GitOps实现AI资产版本控制,并强调prompt template在审计合规中的治理价值。全文以SAP技术栈(ABAP/RAP/Fiori)为背景,阐释了AI能力与企业核心系

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 103

常见端口漏洞利用总结

常见端口漏洞利用总结

lovemine1314的博客 2051

相似贴子推荐:基于 LangChain4j + Milvus 的混合检索实战

本文提出了一种基于LangChain4j和Milvus的混合检索方案,用于解决论坛社区中的相似帖子推荐问题。该方案结合稠密向量语义检索和BM25关键词检索的优势,通过RRF算法实现结果融合。系统采用bge-small-zh模型生成语义向量,利用Milvus 2.5+原生支持的BM25功能和混合搜索API,在百万级数据规模下实现50ms内的检索延迟,召回率和精确率分别提升15%和22%。文章详细介绍了从数据预处理、向量化到混合检索的完整实现流程,并探讨了进阶优化方向,为推荐系统和RAG应用提供了高效解决方案。

分享AI、区块链技术及应用,未来已来 88

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

dns服务器漏洞修复,威胁警告:Microsoft 发布 DNS 服务器漏洞修补程序 (CVE-2020-1350)...

Microsoft针对其DNS服务器中的一个严重漏洞发布了修补程序,该漏洞会影响Windows Server 2003之前的版本。 该漏洞的CVSS评分为10,并且无需身份验证即可进行完整的系统折衷。该漏洞也可用于在无需用户交互的情况下跨网络传播。受影响的Windows服务器包括任何启用了DNS角色的服务器。因此,Active Directory和Kerberos都面临风险,因为它们都需要具有启用...

weixin_30802367的博客 654

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

CVE-2020-11945 Squid未授权整数溢出分析

聚焦源代码安全,网罗国内外最新资讯!Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid 的用途很多,可以作...

smellycat000的专栏 2168

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CVE-2020-5902: F5 BIG-IP 远程代码执行漏洞分析

360-CERT [三六零CERT](javascript:void(0)???? 昨天 0x00 漏洞简述 2020年07月08日, 360CERT监测发现 F5 官方更新了 F5 BIG-IP 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-5902,漏洞等级:严重。 未授权的远程攻击者通过向漏洞页面发送特制的请求包,可以造成任意 Java 代码执行。进而控制 F5 BIG-IP 的全部功能,包括但不限于: 执行任意系统命令、开启/禁用服务、创建/删除服务器端文件等,使用官方的httpd配置

爱国小白帽 1579

已潜伏17年!严重的“可蠕虫”系统漏洞影响所有Windows Server

聚焦源代码安全,网罗国内外最新资讯!编译:奇安信代码卫士团队研究人员告警组织机构尽快修复微软Windows Server各版本,以免企业网络遭已存在17年之久的、严重的可蠕虫漏洞...

smellycat000的专栏 589
上一篇: 【2025版】大模型 Copilot 和 Agent 有什么区别?从零基础到精通,精通收藏这篇就够了!
下一篇: 漏洞预警:应用服务器glassfish任意文件读取漏洞。从零基础到精通,收藏这篇就够了!
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值