|
google了一把,证明楼主疑似标题党帮凶,哈,原文章链接: http://blog.donews.com/axis/archive/2006/12/13/1095521.aspx
昨天晚上check了一下winwebmail的验证方式
不管是smtp还是 pop3
pre-auth的传递参数比如USER xxxxxxx PASS xxxxxxxxxxxx
这种
基本上都是限定只能输入240字节
因为有一个 strncat(buf, string, 240);
loc_4523FB:
mov eax, [esi]
or ecx, 0FFFFFFFFh
lea edx, [ebx+eax+33h]
xor eax, eax
mov edi, edx
repne scasb
not ecx
dec ecx
mov eax, 0F0h
sub eax, ecx
lea ecx, [ebp+String]
push eax ; size_t
push ecx ; char *
push edx ; char *
call _strncat
add esp, 0Ch
注意这里
mov eax, F0h
接下来
loc_452425:
mov edx, [esi]
or ecx, 0FFFFFFFFh
xor eax, eax
lea edx, [edx+ebx+33h]
mov edi, edx
repne scasb
mov edi, [esi]
not ecx
dec ecx
add ecx, edi
cmp byte ptr [ecx+ebx+32h], 0Ah
jz short loc_452459
然后就判断回车\x0A
如果有回车,就继续执行,如果没有回车,就返回上层函数。
继续执行后
在这里执行了一个拷贝
lea edi, [ebp+var_270]
add esp, 0Ch
rep stosd
mov ecx, [ebp+var_18]
lea edx, [ebp+var_270]
push ecx
push offset aS_3 ; "%s"
push edx ; char *
stosb
call _sprintf
不过由于前面被截断了,只能拷贝240 bytes过来,所以是覆盖不到ebp的
我只看了3.7.3.1和3.6.3.1 这两个版本,基本相同.
其他登陆后的命令就没看了,不怎么感兴趣了,如果也用的这里的函数来截断,那也是没有问题的。
所以,至少在处理输入这个地方是没有问题的了。
不能确定在之后的地方有没有问题,没继续跟下去了。
最后结论是,期待winwebmail 0day的兄弟们估计要失望了,至少pre-auth的漏洞,是比较难了,呵呵。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=1095521 |
|