起因
寶塔官方表示,7.4.2(Linux)版本的寶塔面板存在未授權訪問phpmyAdmin的漏洞,漏洞利用難度為“0”,通過訪問ip:888/pma
則可無需任何登錄操作直接進入phpmyAdmin,所有使用寶塔的站點均可測試是否存在此漏洞(未修改默認端口,安裝了phpmyAdmin的均存在可能);
- 影響范圍
- 寶塔 linux 7.4.2(安裝了 phpmyadmin)
- 寶塔 Linux 7.5.13(安裝了 phpmyadmin)
- 寶塔 windows 6.8(安裝了 phpmyadmin)
應急
1、關閉888端口對外訪問和phpmyAdmin服務
2、升級至官方緊急發布的7.4.3版本關於Linux面板7.4.2及Windows面板6.8緊急安全更新(官方)
3、將pma移到其他目錄/或刪除
官方
在Linux面板7.4.2/Windows面板6.8.0 版本中加入了phpmyadmin安全訪問模塊,原理是通過面板進行訪問phpmyadmin,而不是nginx/apache,但因在目錄存放時存在一個致命邏輯漏洞,導致nginx/apache也可以訪問到專門給面板使用的phpmyadmin目錄,我們在做安全審計時將重心放在面板程序中,忽略了除面板外被訪問的可能,從而導致了此事件的發生。
分析
(參考ph17h0n:寶塔面板phpMyAdmin未授權訪問漏洞是個低級錯誤嗎?)
下載安裝被影響到的寶塔linux版本:LinuxPanel-7.4.2.zip
在更新版本中判斷/www/server/phpmyadmin/pma
是否存在並刪除該目錄,這個目錄就是官方說的通過面板直接訪問phpmyadmin所使用的,刪除該目錄后則就無法使用該模塊;ph17h0n分析:
傳入了username和password的情況下,寶塔會改寫phpmyadmin的配置文件config.inc.php,將認證方式改成config,並寫死賬號密碼。
ph17h0n大佬科普了一直知識點:phpmyadmin除了cookie認證登錄以外還支持多種認證方式,而這里bt官方則是改用了config認證方式,phpmyadmin會使用配置文件中的username/password進行登錄;之所以可以通過面板直接訪問phpmyAdmin的原因也是這個,寫死了用戶名和密碼(所謂的自動填充並登錄),面板就可以不用手動輸入密碼訪問phpmyadmin,而bt官方只考慮到了用戶面板訪問pma,但是忘記了任何情況下都可以通過pma訪問,因為它直接識別config中的密碼。