這篇文章是針對實際項目中所出現(xiàn)的問題所做的一個總結(jié)。簡單來說,就是授權(quán)繞過問題,管理員帳戶被錯誤的接管。
詳細(xì)情況是這樣的,我們的項目中通常都會有用戶身份驗證功能,不同的用戶擁有不同的權(quán)限。相對來說管理員賬戶所對應(yīng)的權(quán)限是極高的,它可以修改當(dāng)前用戶或者比它權(quán)限低的賬戶信息。而這里的處理如果不夠嚴(yán)謹(jǐn)就會出現(xiàn)權(quán)限相關(guān)問題。
比如我的項目所遇到的問題,具有“管理”角色的經(jīng)過身份驗證的用戶可以結(jié)合更新用戶信息的方法和“忘記密碼”功能來更改當(dāng)前管理員賬戶的密碼,從而使他們能夠完全控制帳戶。
問題重現(xiàn)
這張圖展現(xiàn)這個漏洞的流程
按步驟重現(xiàn)
在登錄頁面 admin 用戶使用自己的賬號郵箱和密碼登錄
成功進入主頁面并跳轉(zhuǎn)到用戶管理頁面
注意:管理員用戶可以沒有任何限制的修改郵箱地址,所以即便是郵箱的域名被修改(@example.com -> @xxx.com)也是合法的
保存后
重新進入登陸頁面,此時郵箱地址已經(jīng)變?yōu)楣粽哙]箱(攻擊者此時不知道密碼),點擊忘記密碼進行密碼重置
密碼被重置,此時攻擊者擁有了完全合法的管理員賬戶
使用被修改的信息成功登錄??
此時攻擊者就可以進行網(wǎng)絡(luò)攻擊,包括惡意篡改環(huán)境配置(包括產(chǎn)品信息、具體數(shù)據(jù)、數(shù)據(jù)庫配置和系統(tǒng)運行時參數(shù))。而且由于攻擊者此時擁有管理員權(quán)限,所以造成的損失將是非常巨大的。文章來源:http://www.zghlxwxcb.cn/news/detail-681727.html
解決方案
<input type="text" value="email" disabled="emailUpdatable"/>
checkEmailUpdatability() { this.emailUpdatable = (this.user.role !== 'administration' && !lodash.endsWith(this.user.email, '@example.com')); }
如上代碼所示,監(jiān)聽用戶權(quán)限和用戶郵箱域名。這限制了管理員權(quán)限用戶隨意修改郵箱地址的功能。管理員用戶的郵箱地址受到保護,不能更改為攻擊者的郵箱地址,攻擊者也就不能通過忘記密碼功能獲取到管理員權(quán)限了。而非管理員用戶的權(quán)限較低,即使暴露也不會對項目造成破壞。?文章來源地址http://www.zghlxwxcb.cn/news/detail-681727.html
到了這里,關(guān)于Angular安全專輯之三:授權(quán)繞過,利用漏洞控制管理員賬戶的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!