????????本系列僅說明靶場的攻擊思路,不會給出任何的詳細代碼執行步驟,因為個人覺得找到合適的工具以實現攻擊思路的能力也非常重要。root要逆向,沒做了,但是user flag也有借鑒意義,關于2FA的繞過我們有必要了解
1.首先Nmap掃描,發現80和22和8080端口。在80端口我們發現了bookstack,在8080端口我們發現了teampass。
【+】中間件發現
【*】希望探尋中間件版本
2.為了了解中間件版本信息,我們使用katana來快速爬取js,從而發現中間件版本。
【+】中間件版本探明
3.我們發現teampass和bookstack均存在漏洞。teampass的版本存在SQL注入漏洞,bookstack版本存在SSRF+LFR漏洞。teampass是一個團隊密鑰管理軟件,里面會存很多密碼,是非常有價值的目標。bookstack是一個博客軟件,里面會有文章。借助teampass漏洞我們竊取到了數據庫里面用戶的占賬號和密碼hash。
【+】竊取賬號和密碼hash
4.我們希望能夠破解密碼,從而進入teampass獲取密碼。我們使用hashcat成功破解了密碼,進入到bob賬號,獲取了reader賬號的ssh密鑰,和bob的bookstack密鑰。
【+】獲取ssh賬戶,bookstack賬戶5.我們嘗試登錄ssh,發現存在2FA,我們必須獲取到相關的驗證碼。經過網絡上的搜索,我們會了解到2FA認證會有一個密鑰文件,這個文件通常存在于/home/user/xxx文件。我們嘗試使用bookstack的LFR漏洞獲取/home/user/xxx文件,但失敗了(后續了解到是因為Web服務賬戶權限不足導致的)。于是我們轉向了bookstack的文章,因為個人寫作也很可能會泄露一些敏感信息。我們發現了有關于備份的文章,他告訴我們備份目錄,那么很可能這個地方也存在/home/user/xxx文件的副本,所以我嘗試獲取它。我們成功獲取到了/home/user/xxx文件的驗證碼密鑰。于是我們編寫python完成驗證碼獲取。我們成功登陸了ssh
【+】reader用戶的ssh shell
6.獲取reader用戶,第一步猜測自身身份,我們應該是一個Web運維角色,因為我們可以使用數據庫,并查明密碼hash是否是弱密碼。首先linpeas快速掃描一下,我們了解到我們擁有一個check_***.sh腳本的sudo權限,這非常有趣。我們查看腳本,并找不到一些命令執行的位置,但是我們發現了一個check_***二進制文件。因為二進制文件可能會有意想不到的功能,所以我們可能可以借助二進制文件來劫持root用戶。可惜的是,查明了so靜態庫的調用情況,我們并沒有獲得一些有趣的內容。那么只有逆向分析這個二進制文件了,首先我strings了二進制文件,以查看是否有硬編碼的密碼,但是沒有。然后我使用pspy64監控了二進制文件的執行過程,以了解是否有我可以在不動態調試二進制文件的情況下執行命令的可能,但是沒有。值得注意的是二進制文件執行后,會創建一個mysql語句,mysql語句可以用于執行shell,如果我們可以劫持其中變量,那么就一定能夠完成命令執行。那么也就可以劫持root用戶。
【+】user flag get!