不知道有没有朋友手头上有这个漏洞的POC?

自己通过补丁比对看了一下感觉这个漏洞和之前MS11-046的非常像。简单说下,MS11-046是AfdConnect中没有以正确的方式对Irp-UserBuffer的有效性进行检验,攻击者如果将UserBuffer的长度设为0就可以绕过验证。写内存的操作并不直接在AfdConnect中完成,而是在执行一个APC例程AfdConnectApcKernelRoutine时,就会向攻击者指定的UserBuffer写入4字节数据。
这个MS11-080出问题的函数是AfdJoinLeaf,在这个函数里对Irp->UserBuffer的
验证也是非常草率的,绕过地址检验的方式和MS11-046的利用方法相同——将UserBuffer的长度设为0即可。感觉如果能够将控制流导向
PAGE:B2D30F67 mov ecx, offset _AfdRestartJoin@
PAGE:B2D30F6C mov eax, ecx
PAGE:B2D30F6E test eax, eax
PAGE:B2D30F70 mov eax, [edi+60h]
PAGE:B2D30F73 jz loc_B2D3104A
PAGE:B2D30F79 sub eax, 24h
PAGE:B2D30F7C mov [eax+1Ch], ecx
PAGE:B2D30F7F mov ecx, [ebp+var_20]
PAGE:B2D30F82 mov [eax+20h], ecx
PAGE:B2D30F85 mov byte ptr [eax+3], 0E0h
PAGE:B2D30F89 jmp loc_B2D31057
就有机会向攻击者指定的UserBuffer中写入4字节数据。因为我发现在AfdRestartJoin函数中会创建一个APC对象,而APC例程同样是AfdConnectApcKernelRoutine。
本人能力有限

目前没有分析清楚如何将控制流导向上述位置

贸然发帖希望可以抛砖引玉
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课