[WARGAME] DVWA write-up/ Insecure CAPTCHA/ low

jckim22·2022년 10월 19일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
22/114

CAPTCHA란?

Completely Automated Public Turing test to tell Computers and Humans Apart의 약자로, 컴퓨터와 사람을 구분 짓기 위한 완전 자동 튜링 테스트를 말한다.

reCAPTCHA란?

사용자 입장에서는 크게 다르지 않지만, CAPTCHA와는 조금 다르게, reCAPTCHA는 구글에서 제공하는 봇 방지 API이다. reCAPTCHA 버전 1은 한쪽은 조금 쉬운 단어, 두번째는 맞추기 어려운 단어나 생소한 단어가 섞여 있다.
그리고 v3는 더 복잡한 인증을 거치게 된다.

이번 문제에서는 reCAPTCHA API를 제대로 활용하지 못하고 취약점이 있을 때 어떤 문제가 일어나는지 보여주는 문제이다.

이번 문제는 역시 row라서 그런지 아무런 보안 없이 reCAPCHA를 통과하면 다음 페이지로 넘어가 그 곳에서 패스워드 변경을 완료하는 원리의 페이지이다.

이렇게 되면 다음페이지로 가는 지름길을 알게 됐을 때 reCAPTCHA가 필요 없게 될 수 있다.

그럼 문제로 알아보자

아래는 웹페이지이다.
먼저 패스워드를 123으로 변경하는 요청을 보내보겠다.

버프슈트를 사용해서 패킷을 캡처하려고 했는데 reCAPCHA키의 도메인을 잘 해놨음에도 불구하고 프록시를 키게 되면 reCAPCHA에 오류가 있었다.
그래서 그냥 개발자 도구로 패킷을 분석했다.

아래는 네트워크 탭에서 내가 요청을 보냈을 때 어떤 페이로드를 보냈는지 보여준다.
내가 분명 입력한 것은 123밖에 없는데 step이라는 data가 1이라는 value로 요청되어있다.
그렇다는 말은 아마 hidden type을 이용해서 단계를 표현했을 가능성이 크다는 말과 같다.

그 1단계를 거친 이후에 2단계 change 버튼을 누르고 페이로드를 다시 살펴보면 step이 2로 되어있고 비밀번호 변경에 성공하게 된다.

그럼 우리는 hidden에 가서 첫번째 단계 일 때 value를 2로 보내준다면 바로 2단계로 넘어가서 reCAPCHA를 무시할 수 있을 것 같다.

아래는 폼을 살펴본 것이다.
역시나 hidden으로 step이라는 name의 데이터가 1의 밸류를 갖고 요청되는 것을 볼 수 있다.


2단계로 넘어가기 위해 value를 2로 바꾸고 제출해보겠다.

그랬더니 reCAPCAPTHA를 스킵하고 로그인에 성공하게 됐다.

profile
개발/보안

0개의 댓글