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로 이동하여 인증코드를 확인합니다.



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


=> 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에서 복사한 주소로 이동하면 문제해결이 됩니다.
