资源描述:
《windowsxp核心驱动afd.sys本地权限提升漏洞分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WindowsXP核心驱动AFD.sys本地权限提升漏洞分析(ms08066)创建时间:2008-10-15文章属性:原创文章提交:whitecell(sinister_at_whitecell.org)Author: PolymorphoursEmail: Polymorphours@whitecell.orgHomepage:http://www.whitecell.orgDate: 2008-10-15漏洞模块:AFD.sys漏洞类型:任意内核地址可写这个漏洞又是一个可以写任意内核地址的漏洞,产生这个漏洞的原因是P
2、robeForWrite函数因为检查长度为0的Buffer被绕过。下面看下具体漏洞的情况,这个漏洞出现在函数AfdGetRemoteAddress中,当传入的第7个参数为0的时候,ProbeForWrite的检查形同虚设了。注意第六个参数PVOIDAddress,它是由Irp->UserBuffer传入的,而SIZE_TLength为OutputBufferLength,那么如果在DeviceIoControl中的OutputBuffer设置成内核需要写的地址,OutputBufferLength设置为0,并设置正确的IoDevi
3、ceCode即可触发这个漏洞.PAGE:00017D17;int__stdcallAfdGetRemoteAddress(int,int,char,int,int,PVOIDAddress,SIZE_TLength,int)PAGE:00017D17__stdcallAfdGetRemoteAddress(x,x,x,x,x,x,x,x)procnearPAGE:00017D17 ;DATAXREF:.data:0001230CoPAGE:00017D
4、17PAGE:00017D17var_24 =dwordptr-24hPAGE:00017D17var_20 =dwordptr-20hPAGE:00017D17var_1C =dwordptr-1ChPAGE:00017D17ms_exc =CPPEH_RECORDptr-18hPAGE:00017D17arg_0 =dwordptr 8PAGE:00017D17arg_8 =byteptr 10hPAGE:00017
5、D17Address =dwordptr 1ChPAGE:00017D17Length =dwordptr 20hPAGE:00017D17arg_1C =dwordptr 24hPAGE:00017D17PAGE:00017D17 push 14hPAGE:00017D19 push offsetunk_11B00PAGE:00017D1E call __SEH_pr
6、ologPAGE:00017D1EPAGE:00017D23 mov eax,[ebp+arg_0]PAGE:00017D26 mov ebx,[eax+0Ch]PAGE:00017D29 mov [ebp+var_24],ebxPAGE:00017D2C xor esi,esiPAGE:00017D2E mov eax,[ebp+arg_1C]PAGE
7、:00017D31 mov [eax],esiPAGE:00017D33 push ebxPAGE:00017D34 call AfdLockEndpointContext(x)PAGE:00017D34PAGE:00017D39 mov [ebp+var_20],eaxPAGE:00017D3C cmp eax,esiPAGE:00017D3E
8、 jz loc_17DE0PAGE:00017D3EPAGE:00017D44 cmp wordptr[ebx],0AFD2hPAGE:00017D49