今年的Hitcon 2020第一天Jimmy Liu老師主講「IoT Hacking 101」,主要是實作基礎的物聯網設備滲透測試!有關上課素材可從「https://github.com/DrmnSamoLiu/Hitcon-iot101」下載,上課簡報請參考素材包裡的DVIPcam_hitcon.pdf,在此假設您已事先閱讀並瞭此份簡報的內容。
參加此議題的同事於會後分享學習心得,而筆者事後練習時,又發現LV2(簡報22頁)有另一條啟用Telnet及FTP服務的途徑,借此做個筆記。
此題的網路攝影機預設只開啟端口443、554、8000,我們要想辦法辦啟動這台設備上的Telnet及FTP服務,即開啟端口23及21。
依照簡報內容,由於使用者未變更預設密碼,駭客可由使用手冊得知兩組登入帳密:「root / root」及「user / DVIPcam」,實際上,root的密碼已變更,無法直接以管理員身分登入管理界面,但user的密碼則未變更,駭客能夠經由提權而取得管理員權限,在瀏覽「System Configuration」頁面時啟用Telnet及FTP服務(簡報28頁)。好了,前述的滲透手法,簡報裡已寫得很清楚,這裡不再贅述。
但~~如果連user的預設密碼也被修改,有沒有「不需要網站的帳密就能開啟Telnet服務」的方法?這篇的手法就是了!
一、為了分析網站的原始碼,先從登入頁下載此設備的韌體更新檔(firmware.bin)。
二、利用7-zip開啟 firmware.bin,檢查 www/cgi-bin/ 目錄,注意readcookie.cgi、Config.cgi及Configsubmit.cgi這三個檔案。
三、檢查readcookie.cgi,發現呼叫此CGI時不會檢查是否已登入,且會將HTTP_COOKIE寫到/var/Allowed_SessionID,而Allowed_SessionID是判斷使用者有沒有登入的依據。我們就是利用此漏洞。
四、檢視Config.cgi,發現它會載入 /var/web/Config.html,所以再檢視此網頁,發現它是用來設定FTP及Telnet開關,Submit的內容是Telnet=on/off&FTP=on/off,提交對象是「/cgi-bin/Configsubmit.cgi」
五、再檢視「Configsubmit.cgi」,發現此cgi並不會檢查權限,只要有session就可以成立。(剛剛的readcookie.cgi已可建立session)
經由上面分析,得知readcookie.cgi可以建立空seeeionid,Configsubmit.cgi可以設定Telnet及FTP服務,為了便於操作,此處使用Firefox示範。(192.168.232.139 是筆者電腦啟動LV2映象檔後的網址,請依個人環境修正)
一、 在瀏覽 https://192.168.232.139/cig-bin/readcookie.cgi,會得到如下結果,重點在於session is 的內容是空的。
二、啟用 FireFox的開發者模式,切換到「網路」頁籤。
三、瀏覽https://192.168.232.139/cig-bin/Configsubmit.cgi,出現404是正常的。
四、從「網路」頁籤的網址清單中選擇剛剛請求的Configsubmit.cgi,然後點擊右方的「重新發送」下拉選單,並選擇「編輯並重新發送」項目。
五、將方法改成「POST」,並在請求內容中貼上「Telnet=on&FTP=on」,然後「傳送」。
六、查看回應結果,FTP及Telnet已經打開。
假設您已按照簡報30頁的方法執行暴力破解,應該已得到作業系統的 admin / Administrator 這組帳密,可以利用telnet操控這台設備了!
沒有留言:
張貼留言