作者:袁哥
微软说此漏洞winnt\win2k下拒绝服务都不能,win2003下只能拒绝服务不能利用,只能说他们不懂溢出。
挑战:
1、写出winnt\win2k\win2003下的稳定利用。
2、写出有防火墙的稳定利用。防火墙只开了tcp42,不准许外联,不能影响原有wins服务。
写出1和2的愿意来公司应聘的可以发简历过来。
漏洞代码如下:
0:000> uf wins!getname
wins!GetName:
01011d38 55 push ebp
01011d39 8bec mov ebp,esp
01011d3b 8b4508 mov eax,dword ptr [ebp+8]
01011d3e 53 push ebx
01011d3f 56 push esi
01011d40 8b7510 mov esi,dword ptr [ebp+10h]
01011d43 8b00 mov eax,dword ptr [eax]
01011d45 33db xor ebx,ebx
01011d47 891e mov dword ptr [esi],ebx
01011d49 57 push edi
01011d4a 0fb608 movzx ecx,byte ptr [eax]
01011d4d 8bd1 mov edx,ecx
01011d4f 81e2c0000000 and edx,0C0h
01011d55 895510 mov dword ptr [ebp+10h],edx
01011d58 0f8589000000 jne wins!GetName+0xaf (01011de7)
wins!GetName+0x26:
01011d5e 83e13f and ecx,3Fh
01011d61 40 inc eax
01011d62 3bcb cmp ecx,ebx
01011d64 894d10 mov dword ptr [ebp+10h],ecx
01011d67 7e28 jle wins!GetName+0x59 (01011d91)
wins!GetName+0x31:
01011d69 8b7d0c mov edi,dword ptr [ebp+0Ch]
01011d6c 8d5101 lea edx,[ecx+1]
01011d6f d1ea shr edx,1
wins!GetName+0x39:
01011d71 8a08 mov cl,byte ptr [eax]
01011d73 8a5801 mov bl,byte ptr [eax+1]
01011d76 80e941 sub cl,41h
01011d79 40 inc eax
01011d7a 836d1002 sub dword ptr [ebp+10h],2
01011d7e 80eb41 sub bl,41h
01011d81 c0e104 shl cl,4
01011d84 0ad9 or bl,cl
01011d86 881f mov byte ptr [edi],bl
01011d88 47 inc edi
01011d89 40 inc eax
01011d8a ff06 inc dword ptr [esi]
01011d8c 4a dec edx
01011d8d 75e2 jne wins!GetName+0x39 (01011d71)
wins!GetName+0x57:
01011d8f eb03 jmp wins!GetName+0x5c (01011d94)
wins!GetName+0x59:
01011d91 8b7d0c mov edi,dword ptr [ebp+0Ch]
wins!GetName+0x5c:
01011d94 b901010000 mov ecx,101h
01011d99 2b4d10 sub ecx,dword ptr [ebp+10h]
wins!GetName+0x64:
01011d9c 33db xor ebx,ebx
01011d9e 3818 cmp byte ptr [eax],bl
01011da0 7434 je wins!GetName+0x9e (01011dd6)
wins!GetName+0x6a:
01011da2 813eef000000 cmp dword ptr [esi],0EFh
01011da8 773d ja wins!GetName+0xaf (01011de7)
wins!GetName+0x72:
01011daa 49 dec ecx
01011dab 3bcb cmp ecx,ebx
01011dad 7e38 jle wins!GetName+0xaf (01011de7)
wins!GetName+0x77:
01011daf c6072e mov byte ptr [edi],2Eh
01011db2 47 inc edi
01011db3 ff06 inc dword ptr [esi]
01011db5 8a10 mov dl,byte ptr [eax]
01011db7 83e23f and edx,3Fh
01011dba 2bca sub ecx,edx
01011dbc 3bcb cmp ecx,ebx
01011dbe 7e27 jle wins!GetName+0xaf (01011de7)
wins!GetName+0x88:
01011dc0 40 inc eax
01011dc1 8bda mov ebx,edx
01011dc3 4a dec edx
01011dc4 85db test ebx,ebx
01011dc6 74d4 je wins!GetName+0x64 (01011d9c)
wins!GetName+0x90:
01011dc8 42 inc edx
wins!GetName+0x91:
01011dc9 8a18 mov bl,byte ptr [eax]
01011dcb 881f mov byte ptr [edi],bl
01011dcd 47 inc edi
01011dce 40 inc eax
01011dcf ff06 inc dword ptr [esi]
01011dd1 4a dec edx
01011dd2 75f5 jne wins!GetName+0x91 (01011dc9)
wins!GetName+0x9c:
01011dd4 ebc6 jmp wins!GetName+0x64 (01011d9c)
wins!GetName+0x9e:
01011dd6 40 inc eax
01011dd7 49 dec ecx
01011dd8 85c9 test ecx,ecx
01011dda 7c0b jl wins!GetName+0xaf (01011de7)
wins!GetName+0xa4:
01011ddc 8b4d08 mov ecx,dword ptr [ebp+8]
01011ddf 881f mov byte ptr [edi],bl
01011de1 ff06 inc dword ptr [esi]
01011de3 8901 mov dword ptr [ecx],eax
01011de5 eb2a jmp wins!GetName+0xd9 (01011e11)
wins!GetName+0xaf:
01011de7 53 push ebx
01011de8 6892030000 push 392h
01011ded 68d4200001 push offset wins!`string' (010020d4)
01011df2 6817100140 push 40011017h
01011df7 6a01 push 1
01011df9 68010000e0 push 0E0000001h
01011dfe e8330b0000 call wins!WinsEvtLogEvt (01012936)
01011e03 53 push ebx
01011e04 53 push ebx
01011e05 53 push ebx
01011e06 680a0000e0 push 0E000000Ah
01011e0b ff1598100001 call dword ptr [wins!_imp__RaiseException (01001098)
]
wins!GetName+0xd9:
01011e11 5f pop edi
01011e12 5e pop esi
01011e13 5b pop ebx
01011e14 5d pop ebp
01011e15 c20c00 ret 0Ch
0:000>
微软安全公告MS04-006
Windows互联网命名服务(WINS)允许代码执行漏洞(830352)
影响系统:
Microsoft Windows NT Server 4.0 Service Pack 6a
Microsoft Windows NT Server 4.0 Terminal Server Edition Service Pack 6
Microsoft Windows 2000 Server Service Pack 2
Microsoft Windows 2000 Server Service Pack 3
Microsoft Windows 2000 Server Service Pack 4
Microsoft Windows Server 2003
Microsoft Windows Server 2003 64-Bit Edition
详细信息:
Windows互联网命名服务(WINS)中存在一个安全漏洞,导致漏洞存在的原因是因为WINS服
务用来验证特别创建的报文长度的方法中存在错误。利用这个漏洞攻击者可以对
WINDOWS 2003 server 的WINS服务进行拒绝服务攻击。
2003 server本身带有一项安全功能,这项安全功能会检测系统服务恶意的缓冲溢出行为,
一旦检测到就会立即中止该服务。当一个攻击者利用该漏洞发送一系列特别创建报文到
WINDOWS 2003 server 的WINS服务时,会导致WINS服务发生缓冲溢出,这样该服务就会被安全功能禁
止,需要重新启动服务才能恢复正常。恶意的攻击者也可能发现绕过安全功能利用该漏洞的方法,
如果那样的话,攻击者将可以已系统权限执行任意代码。
在Windows NT和Windows 2000中,漏洞的本质有些轻微的差异。WINS会拒绝特别创建的报
文,攻击者不能导致拒绝服务。这些平台上的漏洞也不允许代码执行。
解决方法:
微软已经针对这个漏洞发布了相应的安全公告及补丁程序,你可以到我们的网站上下载相应的
补丁程序:
Microsoft Windows NT Server 4.0 Service Pack 6a 中文版补丁
Microsoft Windows 2000 Server 中文版补丁
Microsoft Windows Server 2003 中文版补丁
更多漏洞及补丁信息请参见:
http://www.microsoft.com/technet/security/bulletin/MS04-006.asp
[课程]FART 脱壳王!加量不加价!FART作者讲授!