CAPTHCA공격
비밀번호 변경 시 2단계를 거침
1. CAPTCHA 확인
2. 확인 완료 비밀번호 변경
여기서 제대로 안되어있으면 해커가 확인한 것처럼 꾸미고 2만 할 수 있다
패스워드를 normal normal 해주고 버프스위트로 보게되면
step 은 1이고 password_new값과 password_conf 값 그리고 랜덤으로 정해지는 g_recaptcha-response값이 나온다
한번더 change를 눌러주니 step이 2로 변하게 된다
여기서 첫번째 요청은 생략하고 두번째 요청만 보내면 어떻게 될 것인가
버프스위트의 리피터 기능을 이용하면 된다
2번째 요청을 리피터로 보내주고 리피터에서 패스워드만 변경해주고 Go를 해주면 변경된다
확인을 위해 Response의 Render를 봐보면 제대로 된 것을 볼 수 있다
medium 단계를 봐보자
passed_captcha가 추가되었다 captcha를 제대로 입력했는지 확인하려고 한것같은데
똑같이 리피터로 보내고 변경하고 랜더를 확인해보면 정상적으로 변경되었음을 알 수 있다
high 단계
이번에는 user_token이 추가되었고 두단계가 아닌 한단계로 이루어져있다
소스코드를 봐보자 if 문 resp 쪽을 보면 || or연산이 있다 ( && 모든 조건이 참일 때 참, || 둘 중 하나만 참이여도 참)
즉, captcha를 거치지 않고
g-recaptcha-response 부분이 hidd3n_valu3 이고
User-Agent의 헤더부분이 reCAPTCHA가 된다면 참이된다
리피터에서 실습을 해보자
User-Agent : 부분 내용을 지워주고 reCAPTCHA 적어주고
g-recaptcha-response=hidd3n_valu3 을 적어준다
그리고 변경해주면 변경됨을 볼 수 있다
impossible 단계를 보자
디버깅된 코드가 없어졌다
csrf 실습과 마찬가지로 현재 패스워드 입력란이 생기게 하여 보안을 강화하였다