[웹해킹] CAPTCHA 공격 실습 - High 단계
- IT/웹해킹
- 2020. 5. 31.
이번에는 High 단계에서 실습해보자.
DVWA Security Level을 High로 설정한다. 이번에도 프록시 history 기능을 통해서 어떻게 전달 되는지 확인한다.CAPTCHA 메뉴로 가서 password는 normal을 입력하고, captcha 값을 입력해준다.
change 버튼을 누른다. 이번에는 두 단계에 걸치지 않고 바로 패스워드가 변경된다. 이제 Low, Medium 단계의 방식으로는 공격을 할 수 없게 되었다. 소스 코드를 한 번 살펴보자.
이 부분은 captcha가 실패했을 때 처리하는 부분이다. if문의 조건을 자세히 살펴보면 응답이 vaild 하지 않으면(!$resp->is_valid 부분) 뒤에 추가로 조건을 검사하고 있다. 그 조건은 'recaptcha response field의 값이 hidden value가 아니거나 user agent 헤더의 값이 recaptcha가 아니다' 라는 조건이다.
결국 이 조건을 다시 말하면 recaptcha response field 파라미터의 값이 hidden value 이고 user agent 헤더의 값이 recaptcha라면 괜찮다는 뜻이다. 이 값을 조작하여 요청을 전송해 본다.
이번에는 CAPTCHA가 제대로 입력되지 않았다는 것을 서버가 알아챘다. captcha에서 요구하는 값은 매 번 랜덤하게 생성되기 때문에 지금처럼 repeater로 옛날에 사용하던 값을 전송하더라도 이렇게 captcha가 틀렸다고 나오게 되는 것이다.
이번에는 recaptcha_response_field의 값을 바꾸고 user-agent 헤더의 값을 바꿔 본다. recaptcha_response_field에는 아까 소스에 나와 있었던 hidd3n_vaul3를 복사해 넣고 user-agent 부분도 reCAPTCHA 라고 입력한 후 Go를 누른다.
이번에는 패스워드가 변경되었다.
요청을 한 단계로 만든 것은 좋은 대응 방법이었지만 소스코드에서 본 것 처럼 특정한 값을 if문으로 검사하여 우회할 수 있는 코드를 넣은 것이 문제가 되었다. 이런 상황은 주로 개발자가 디버깅을 조금 더 편하게 하려고 할 때 발생 할 수 있다. 이런 코드가 포함되지 않도록 항상 주의 할 필요가 있다.
'IT > 웹해킹' 카테고리의 다른 글
[웹해킹] SQL 인젝션 공격 실습 - WHERE 구문 우회 (0) | 2020.12.14 |
---|---|
[웹해킹] SQL 인젝션 공격 이란? (0) | 2020.05.31 |
[웹해킹] CAPTCHA 공격 실습 - Medium 단계 (0) | 2020.05.31 |
[웹해킹] DVWA를 통한 CAPTCHA 공격 실습 - Low 단계 (0) | 2019.11.24 |
[웹해킹] CAPTCHA 공격이란? (0) | 2019.11.24 |