Lab: 2FA broken logic

Lab: 2FA broken logic

https://portswigger.net/web-security/authentication/multi-factor/lab-2fa-broken-logic

 

Lab: 2FA broken logic | Web Security Academy

This lab's two-factor authentication is vulnerable due to its flawed logic. To solve the lab, access Carlos's account page. Your credentials: wiener:peter ...

portswigger.net

 


사용자 2단계 인증 페이지 취약점

 

carlos 사용자의 account 페이지 접근 시 문제 해결

사용자 계정 wiener / peter

피해자 carlos

힌트: carlos는 웹사이트에 직접 로그인을 시도하지 않음

[기본 설정] 프록시 설정, ACCESS THE LAB의 주소를 Burp Suite에 설정

 

(1) 블로그 내 My account로 이동하여 사용자(wiener)로 로그인합니다.

 

(2) 로그인이 바로 되지 않고 인증코드를 입력해야 합니다.

상단 Email client로 이동하여 인증코드를 확인합니다.

2차 로그인
인증코드 확인
로그인 성공

 

(3) 패킷을 확인합니다.

login은 1차 로그인 패킷이고 login2는 2차 로그인(인증코드) 패킷입니다.

1차 로그인(/login)
2차 로그인(/login2)

=> login2에서 verify를 통해 wiener 계정을 입력받고 있습니다.

=> carlos는 직접 로그인을 하지 않는다고 하였으니 username과 password에 직접적으로 입력하면 안 되고, login2에 있는 verify를 사용할 것이라고 유추

 

(4) calros의 2차 로그인 임시코드를 받기 위해 2차 로그인(/login2, status code: 200)을 Repeater로 전송합니다.

 

(5) verify를 carlos로 변경하고 send를 클릭하여 요청을 전송합니다.

=> calros는 1차로그인 없이 2차로그인 인증번호 발급

 

(6) 로그아웃하고 사용자(wiener) 재로그인 합니다. 인증코드를 올바르지 않은 값을 입력하여 패킷을 수집합니다.

올바르지 않은 인증코드
올바르지 않은 인증코드 입력 패킷 확인

=> 올바르지 않은 패킷이므로 Incorrect가 뜹니다.

=> 인증코드가 숫자 4자리이기 때문에 브루트포스 공격이 가능합니다.

 

(7) 2차 로그인에 성공했던 패킷(Status code:302)을 Intruder로 보냅니다. 

(7)-1 verify를 carlos로 변경합니다. 바꾸고자 하는 값을 드래그하고 ADD를 클릭한 후 Payloads로 이동합니다.

(7)-1-1 Payload type을 Brute focer로 설정하고 Character set을 0123456789로 설정합니다.

=> 0~9까지 총 1만번의 패킷을 전송합니다.

=> Attack > Pause를 눌러 중단합니다.

=> 시간 오래걸림...

=> commnunity edition에서는 이렇게 찾기 어려움

 

(7)-2 Turbo Intruder를 사용하려고 합니다.

참고영상: https://www.youtube.com/watch?v=iYbM89TuZkw

(7)-2-1 설치방법은 다음과 같습니다.

Extensions > BApp Store > turbo 검색 > Turbo Intruder Install

(7)-2-2 /login2 패킷을 Turbo Inturder로 전송합니다.

(7)-2-3 스크립트 코드를 수정하고 실행합니다.

=> 처음에 25개를 동시에 연결하고, 초당 200개의 요청 및 pipeline을 False로 설정하여 실행

=> verify=carlos, mfa-code=%s 로 설정해 줍니다.

=> 하단 attack을 클릭하면 스크립트 코드가 실행됩니다.

 

(7)-2-4  결과를 확인합니다.

=> 인증코드는 1686입니다.

 

(7)-3 인증코드 값에서 show response in browser를 클릭하여 주소를 복사합니다.

 

(8) 문제해결

(7)-3에서 복사한 주소로 이동하면 문제해결이 됩니다.