Authentication Bypasses - 2. 2FA Password Reset
[ 이론 ]
- Authentication Bypasses 인증 우회
인증 우회는 많은 방법으로 발생하지만, 일번적으로 구성 또는 로직의 일부 결함을 이용한다. 적절한 상태를 얻기 위해 조작하는 것을 말한다.
- Hidden inputs 숨겨진 입력
가장 간단한 형식는 web page/DOM에 숨겨진 input에 의존한다.
- Removing Parameters 파라미터 삭제
가끔 공격자가 올바른 파라미터 값을 모른다면, 그들은 무슨 일이 발생하는지 보기 위해 제출(submission)에서 파라미터를 삭제한다.
- Forced Browsing 강제 검색
가끔 사이트의 영역이 구성에 의해 적절하게 보호되지 않는다면, 그 사이트의 영역을 추측/브루트 포싱하여 접근한다.
[ 문제 ]
- 2FA Password Reset
최근(2016) 예제가 인증 우회 방법의 좋은 예입니다. 그는 코드가 있는 SMS를 받을 수 없어서 보안 질문이 포함된 제공된 대체 방법을 선택했습니다. 프록시를 사용하여 매개 변수를 완전히 제거한 후 성공하였습니다.
- The Scenario
암호를 재설정하고 있지만 공급자가 인식할 수 없는 위치 또는 장치에서 암호를 재설정하고 있습니다. 따라서 설정한 보안 질문에 답해야 합니다. 또 다른 문제는 이러한 보안 질문이 사용자가 아닌 다른 장치에도 저장되어 사용자가 기억하지 못한다는 것입니다.
이미 사용자 이름/이메일을 제공하고 다른 인증 방법을 선택했습니다.
[ 풀이 ]
- 검색 후 해결
https://pvxs.medium.com/webgoat-authentication-bypass-2-4eeb8e8b502b
WebGoat Authentication Bypass 2
After reading both the previous lesson and the example in this one, Let’s go ahead and fill and submit the form
pvxs.medium.com
- 정리
secQuestion1=asdf&jsEnabled=1&verifyMethod=SEC_QUESTIONS&userId=12309746
secQuestion0=asdf&jsEnabled=1&verifyMethod=SEC_QUESTIONS&userId=12309746
secQuestion0=asdf&secQuestion1=asdf&verifyMethod=SEC_QUESTIONS&userId=12309746
=> Not quite, please try again."
secQuestion0=asdf&secQuestion1=asdf&jsEnabled=1&userId=12309746
secQuestion0=asdf&secQuestion1=asdf&jsEnabled=1&verifyMethod=SEC_QUESTIONS
=> "error" : "Bad Request"
파라미터 verifyMethod, userId는 필수
secQuestion0 & secQuestion1의 파라미터 명을 변경
소스코드 확인
GitHub - WebGoat/WebGoat: WebGoat is a deliberately insecure application
WebGoat is a deliberately insecure application. Contribute to WebGoat/WebGoat development by creating an account on GitHub.
github.com
size를 확인하기 때문에 파라미터 수는 충족시켜야함.
secQuestion0 & secQuestion1의 값이 틀리다면 false로 바꾸고 있다. 디폴트 값이 true기 때문에 해당 로직을 통과하지 않으면 true로 넘어가게 됨. 프로그래밍 실수.