phpList 3.5.0 - Authentication Bypass 漏洞復(fù)現(xiàn)

phpList是用于管理郵件列表的開源軟件。它設(shè)計用于向訂戶列表傳播信息,例如新聞通訊,新聞,廣告。它用PHP編寫,并使用MySQL數(shù)據(jù)庫存儲信息。phpList是免費的開源軟件。

https://www.exploit-db.com/exploits/47989

管理員后臺登錄的密碼散列使用了==而不是===驗證

環(huán)境搭建

源碼下載(sourceforge):

https://sourceforge.net/projects/phplist/files/phplist-development/3.5.0-RC1/
image

解壓后直接找到這個目錄:

image

將這個lists拷貝到網(wǎng)站目錄下并且重命名。

修改config/config.php配置文件,設(shè)置要連接的數(shù)據(jù)庫和賬戶密碼

image

同時建立phplistdb數(shù)據(jù)庫。

訪問http://127.0.0.1/phplist/admin/

漏洞利用

初始化安裝,設(shè)置管理員的賬號密碼:

image

這里的密碼要設(shè)置成 sha256 后以0e開頭的字符串,如 TyNOQHUS

我們再次訪問后臺,以密碼 34250003024812進行登錄,其sha256后也是以0e開頭

image

登錄成功:

image

漏洞分析

找到驗證管理員登錄的php文件phpListAdminAuthentication.php

關(guān)鍵代碼:

image

可以看到$encryptedPass(密碼sha256后的值)是使用==來判斷和數(shù)據(jù)庫中的值是否一樣。PHP弱類型比較,就會造成0exxxxx == 0eyyyyy(會把每一個以”0e”開頭的哈希值都解釋為0)

漏洞修復(fù)

使用===強類型比較:

if (//Password validation.
            !empty($passwordDB) && $encryptedPass === $passwordDB
        )

總結(jié)

這種偶然現(xiàn)象可能不是很常見,但是還是借助fofa等工具搜集下使用phplist的網(wǎng)站,批量打一下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容