취약점 유형
Server Security Misconfiguration
상세내용
요약
http://wargame.kr/main#login
로그인 페이지를 테스트 하는동안 보안 문자 또는 백오프가 없기 때문에 로그인 페이지가 무차별 대입에 취약함을 확인하였습니다.
설명
속도 제한에 대한 간략한 정보:
속도 제한 알고리즘은 세션 캐시의 정보를 기반으로 사용자 세션(또는 IP 주소)을 제한해야 하는지 확인하는 데 사용됩니다. 클라이언트가 주어진 시간 내에 너무 많은 요청을 한 경우 HTTP-서버는 상태 코드 429: Too Many Requests로 응답할 수 있습니다. 계정에 로그인하는동안 요청에 속도 제한이 없다는 것을 확인했습니다. 이 제한은 하나의 요청을 반복하는 데 사용할 수 있습니다.
이것은 공격자가 자유롭게 모든 사용자 이름을 무차별 공격할 수 있으며 모든 계정을 탈취할 수 있음을 허용합니다.
재현단계
- http://wargame.kr/main#login 계정에 로그인을 할 때 Burp Suite 를 통해 요청을 가져옵니다
- POST 요청의
email=피해자이메일&password=요청자동화
password
매개변수를 자동화합니다. - 총 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
로그인 시도 시 Captcha 또는 딜레이가 없어 브루트포스 공격에 취약하다는 제보 감사드립니다.