로그인 페이지에 보안 문자 또는 과도한 인증 시도에 대한 누락된 속도 제한으로 인한 계정탈취

작성자 what_web 프로그램 wargame.kr

WEB 종료됨(유익함) 중간 보상없음 작성일: 2021년 7월 20일 (3년 전) 마지막 업데이트일: 2022년 7월 17일 (2년 전)

취약점 유형

Server Security Misconfiguration

상세내용

요약

http://wargame.kr/main#login 로그인 페이지를 테스트 하는동안 보안 문자 또는 백오프가 없기 때문에 로그인 페이지가 무차별 대입에 취약함을 확인하였습니다.

image

설명

속도 제한에 대한 간략한 정보:
속도 제한 알고리즘은 세션 캐시의 정보를 기반으로 사용자 세션(또는 IP 주소)을 제한해야 하는지 확인하는 데 사용됩니다. 클라이언트가 주어진 시간 내에 너무 많은 요청을 한 경우 HTTP-서버는 상태 코드 429: Too Many Requests로 응답할 수 있습니다. 계정에 로그인하는동안 요청에 속도 제한이 없다는 것을 확인했습니다. 이 제한은 하나의 요청을 반복하는 데 사용할 수 있습니다.

이것은 공격자가 자유롭게 모든 사용자 이름을 무차별 공격할 수 있으며 모든 계정을 탈취할 수 있음을 허용합니다.

재현단계

  1. http://wargame.kr/main#login 계정에 로그인을 할 때 Burp Suite 를 통해 요청을 가져옵니다
  2. POST 요청의 email=피해자이메일&password=요청자동화 password 매개변수를 자동화합니다.
  3. 총 90건의 요청을 보냈고 속도 제한이 없음을 확인하였습니다.

유효하지 않은 요청은 fasle 를 반환합니다.

HTTP/1.1 200 OK
Date: Tue, 20 Jul 2021 05:04:54 GMT
Server: Apache
...
false

유효한 요청은 True 를 반환합니다.

**HTTP/1.1 200 OK
Date: Tue, 20 Jul 2021 04:49:47 GMT
Server: Apache
...
true

해결 방안

  • ReCaptcha 및 일종의 수동 인간 상호 작용이 필요한 일종의 추가를 권장합니다. 마치 2+2=___와 같은 Captcha를 추가하여 무차별 대입할 수 없고 백엔드에서 특정 숫자에 대한 제한을 둘 수 있는 것처럼 진행합니다.
  • 과도한 인증에 대한 계정 잠금 혹은 계정 잠금에 대한 이메일 확인 링크를 통한 로그인 로직을 구현합니다. 그러면 누군가가 이 취약점을 악용하는 것을 방지할 수 있습니다
  • 너무 많은 인증에 대한 429상태코드를 구현하여 문제를 구현하여 속도제한을 완화합니다.

참조 보고서
https://hackerone.com/reports/922418
https://hackerone.com/reports/1023635
https://hackerone.com/reports/914877
https://hackerone.com/reports/385381
https://hackerone.com/reports/410451
https://hackerone.com/reports/937592

  • 공격자는 자유롭게 모든 사용자 이름을 무차별 공격할 수 있으며 모든 계정을 탈취할 수 있음을 허용합니다.
  • 로그인 페이지의 Reqeust
    image

타임라인

what_web 님이 티켓을 제출했습니다. 2021년 7월 20일 (3년 전)
4e6c6258 MANAGER 님이 상태를 '제출됨'에서 '종료됨(유익함)'으로 변경했습니다. 2021년 10월 26일 (3년 전)
4e6c6258 MANAGER 님이 공개상태를 '비공개'에서 '전체공개'로 변경했습니다. 2021년 10월 26일 (3년 전)
4e6c6258 MANAGER 님이 댓글을 남겼습니다. 2021년 10월 26일 (3년 전)

로그인 시도 시 Captcha 또는 딜레이가 없어 브루트포스 공격에 취약하다는 제보 감사드립니다.