0x00 實驗環境
攻擊機:Win 10
0x01 影響版本
OpenSSH 7.7前存在一個用戶名枚舉漏洞,通過該漏洞,攻擊者可以判斷某個用戶名是否存在於目標主機
0x02 漏洞復現
針對搭建好的vulhub環境:
這里最主要的是python3的模塊——paramiko 的調用,需要安裝好該模塊才能使用poc
直接執行以下命令即可
上圖可以發現root與vulhub是存在的用戶,可進行爆破。
針對特定版本的payload可用,若需要我測試可使用的payload請私聊我
0x03 漏洞原理
87 static int 88 userauth_pubkey(struct ssh *ssh) 89 { ... 101 if (!authctxt->valid) { 102 debug2("%s: disabled because of invalid user", __func__); 103 return 0; 104 } 105 if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0 || 106 (r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 || 107 (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0) 108 fatal("%s: parse request failed: %s", __func__, ssh_err(r));
當用戶不可用時,userauth_pubkey會直接返回錯誤信息,如果用戶可用,則會進入下一個條件判斷,調用fatal函數。所以在username可用於不可用兩種情況下,可以看出來這個函數的返回是不同的