任意用戶密碼重置的10種姿勢
以前安全測試最愛挖的就是任意用戶密碼重置,今天看了carry_your師傅在ichunqiu上的視頻文字總結一下任意用戶密碼重置的10種姿勢:
1,短信驗證碼可爆破;
視頻案例中輸入手機號碼、圖片驗證碼就可以獲取短信驗證碼,並且新密碼也是在一個頁面中,但是輸入短信驗證碼之後,後端有個請求會判斷短信驗證碼是否正確,錯誤的話頁面會有提醒。攻擊者可以用這個請求來爆破驗證碼,獲取到正確的短信驗證碼之後就可以重置任意用戶密碼了。
缺陷主要是兩個方面,第一,未對短信驗證碼的失效時間進行限制;第二,功能設計存在缺陷,如果設計成整個功能只用最後一個請求,包含註冊手機號碼、圖片驗證碼、短信 驗證碼、新密碼,對這個請求中手機號碼、短信驗證碼的匹配以及短信驗證碼的正確性進行驗證,攻擊者就沒辦法進行爆破。當然前提是有正確運用圖片驗證碼。
2,短信驗證碼顯示在獲取驗證碼請求的回顯中;
攻擊者知道被攻擊用戶的手機號碼,獲取短信驗證碼,抓包就可以在回顯中看到用戶收到的重置用的短信驗證碼。
3,註冊手機號及短信驗證碼未進行匹配性驗證;
攻擊者用自己手機號碼收到的重置用短信驗證碼可以重置其它用戶的密碼。
4,用戶名、手機號碼、短信驗證碼三者沒有進行匹配性驗證;
只驗證碼了手機號碼、短信驗證碼是否匹配,最終重置密碼是根據用戶名來重置的。攻擊者重置用戶a的密碼,獲取短信驗證碼的時候將手機號碼修改成自己賬號對應的,獲取到對應的正確短信驗證碼,然後輸入短信驗證碼,由於只驗證了手機號碼以及短息驗證碼是否匹配,從而可以成功繞過短信驗證碼限制來重置用戶a的密碼。
5,短信驗證碼的驗證在本地客戶端進行驗證;
通過修改請求回顯來繞過,常見重置姿勢之一,也可以用於繞過一些其它的前端驗證,比如存儲xss,參數的合法性驗證如果通過前端來完成,也是可以用這種姿勢繞過的。
6,重置步驟未進行校驗;
這種一般發生在多個步驟重置的過程中,未對步驟1,2進行校驗,通過修改url直接繞過短信驗證碼的校驗步驟,直接進入重置頁面進行重置。
7,重置請求未驗證身份;
跟方法4差不多,最終重置請求沒有驗證用戶身份信息。攻擊者用自己的手機號碼短信驗證碼走重置流程,最後一步重置請求抓包修改身份信息為其它用戶的,從而進行其它用戶密碼的重置。
8,登陸成功修改密碼功能平行越權;
用戶登陸成功之後可修改自己的密碼,修改請求只需要輸入新密碼,請求中未驗證當前用戶的cookie、session、id等身份信息,可以通過修改id等來重置其它用戶的密碼。
9,未校驗身份信息的唯一標識cookie信息;
重置請求參數中沒有用戶名、手機號碼、id等身份標識,唯一的身份標識是在cookie中。攻擊者用自己的賬號進行重置,最後重置請求中替換掉請求中的cookie進行其它用戶密碼的重置。
10,MVC數據對象自動綁定漏洞;
郵箱重置密碼或者手機號碼重置密碼的時候,請求中沒有明顯的身份標識,可以嘗試增加參數值來測試是否存在MVC數據對應自動綁定漏洞。比如增加email參數及對應的自用郵箱作為參數值,看看是否能收到密碼重置鏈接。有關這個漏洞可以看看carry_your師傅視頻中的案例,以及CF_HB發過的案例,也可以看看CplusHua有關模糊測試的ppt。
carry_your課程鏈接:
https://www.ichunqiu.com/course/59045
(圖文版)任意用戶密碼重置的10種常見姿勢:
https://www.lovesec.com/penetration-test/233.html
任意用戶密碼重置的10種姿勢