看了相關(guān)密碼找回漏洞的分析文章后,打算找個應(yīng)用來進(jìn)行這方面的分析研究。最近剛?cè)胧至硕《⒅悄荛T磁這個智能家居硬件,它通過硬件和軟件app的結(jié)合,來監(jiān)控門的安全性。看到它驗(yàn)證碼中只是四位簡單的數(shù)字,估計(jì)其中可能存在安全漏洞,就著手進(jìn)行了相關(guān)的測試。
存在的相關(guān)漏洞已經(jīng)通過了相關(guān)企業(yè),已經(jīng)完成了修復(fù)。現(xiàn)在的文章來做個記錄和對有需要的同學(xué)做個參考。
軟件后臺設(shè)計(jì)中存在缺陷導(dǎo)致可遍歷賬號信息,并重置任意賬戶密碼
通過應(yīng)用app的使用,發(fā)現(xiàn)后臺設(shè)計(jì)存在兩個問題:
1.login1接口會在發(fā)送密碼前先進(jìn)行是否存在賬號進(jìn)行檢測,返回相應(yīng)的錯誤碼,可以隨機(jī)遍歷手機(jī)號測試接口取得存在的手機(jī)號列表,可能因?yàn)樽杂脩糨^少原因,測試158號碼時候只得到一個注冊手機(jī)信息。
測試代碼:
https://github.com/joeyxy/python/blob/master/crawler/dingding/dingding.py
2.找回密碼功能中,通過使用應(yīng)用,觀察其邏輯,反編譯其軟件,找到了aes加密算法及相應(yīng)的key及iv向量組成方式。因?yàn)槭褂昧?位純數(shù)字弱驗(yàn)證碼,雖然設(shè)定了過期時間為120秒,但是后臺沒有限定提交的次數(shù),實(shí)際測試中,基本在不到一分鐘的測試中就可以利用password2接口設(shè)計(jì)缺陷破解驗(yàn)證碼,直接提交修改其它注冊用戶的密碼。
測試代碼:
https://github.com/joeyxy/python/blob/master/crawler/dingding/poc_dd3.py
這里使用到的分析工具主要有:Burp Suite,JD-Jui
手機(jī)通過配置代理將數(shù)據(jù)發(fā)送到Burp Suite分析
遍歷賬號login相應(yīng)細(xì)節(jié),存在賬號則返回碼為:0
提交賬號請求:
服務(wù)器對賬號請求的返回?cái)?shù)據(jù)
測試破解驗(yàn)證碼,修改用戶密碼。首先是請求接口password1,提交手機(jī)號碼和參數(shù),請求發(fā)送驗(yàn)證碼,接口會返回aes加密所要使用的相關(guān)key,然后通過aes加密算法使用key+驗(yàn)證碼和iv加密驗(yàn)證碼加密碼的字符串算出密碼,發(fā)送給給服務(wù)器,這里代碼是通過遍歷測試,根據(jù)接口返回的信息,檢查返回碼,錯誤碼為0就表示修改密碼成功,打印相關(guān)消息。
反編譯apk包所得到的加密算法:
找回密碼password1接口測試:
更新密碼password2接口測試:
將上面的測試過程編碼,測試結(jié)果:
應(yīng)用后臺存在的漏洞主要是在于沒有限定后臺請求的次數(shù),同時使用了簡單數(shù)字驗(yàn)證碼。在分析的過程中,花費(fèi)時間多的地方在于對于加密算法的分析,通過反編譯軟件來找到AES算法及相應(yīng)key與iv的組成。下面的工作就是進(jìn)行編碼測試了。
文章來源:FreeBuf黑客與極客(FreeBuf.COM)