비밀번호 재설정/잊어버린 비밀번호 우회
Reading time: 6 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
참조자를 통한 비밀번호 재설정 토큰 유출
- HTTP referer 헤더는 URL에 포함된 경우 비밀번호 재설정 토큰을 유출할 수 있습니다. 이는 사용자가 비밀번호 재설정을 요청한 후 제3자 웹사이트 링크를 클릭할 때 발생할 수 있습니다.
- 영향: 교차 사이트 요청 위조(CSRF) 공격을 통한 계정 탈취 가능성.
- 악용: referer 헤더에서 비밀번호 재설정 토큰이 유출되고 있는지 확인하려면, 비밀번호 재설정을 요청하여 이메일 주소로 재설정 링크를 클릭하십시오. 즉시 비밀번호를 변경하지 마십시오. 대신, Burp Suite를 사용하여 요청을 가로채면서 제3자 웹사이트(예: Facebook 또는 Twitter)로 이동하십시오. 요청을 검사하여 referer 헤더에 비밀번호 재설정 토큰이 포함되어 있는지 확인하십시오. 이는 제3자에게 민감한 정보를 노출할 수 있습니다.
- 참조:
- HackerOne Report 342693
- HackerOne Report 272379
- 비밀번호 재설정 토큰 유출 기사
비밀번호 재설정 중독
- 공격자는 비밀번호 재설정 요청 중에 Host 헤더를 조작하여 재설정 링크를 악성 사이트로 유도할 수 있습니다.
- 영향: 재설정 토큰을 공격자에게 유출하여 계정 탈취 가능성.
- 완화 조치:
- 허용된 도메인의 화이트리스트에 대해 Host 헤더를 검증합니다.
- 절대 URL을 생성하기 위해 안전한 서버 측 방법을 사용합니다.
- 패치:
$_SERVER['HTTP_HOST']
대신$_SERVER['SERVER_NAME']
을 사용하여 비밀번호 재설정 URL을 구성합니다. - 참조:
- 비밀번호 재설정 중독에 대한 Acunetix 기사
이메일 매개변수 조작을 통한 비밀번호 재설정
공격자는 추가 이메일 매개변수를 추가하여 비밀번호 재설정 요청을 조작하여 재설정 링크를 전환할 수 있습니다.
- &를 사용하여 공격자 이메일을 두 번째 매개변수로 추가합니다.
php
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
- 공격자 이메일을 두 번째 매개변수로 추가하고 %20을 사용합니다.
php
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
- 공격자 이메일을 두 번째 매개변수로 추가합니다 |
php
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
- 공격자 이메일을 두 번째 매개변수로 추가하여 cc 사용
php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
- 공격자 이메일을 두 번째 매개변수로 추가하여 bcc 사용
php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
- 공격자 이메일을 두 번째 매개변수로 추가합니다.
php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
- JSON 배열에 두 번째 매개변수로 공격자 이메일 추가
php
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}
- 완화 단계:
- 이메일 매개변수를 서버 측에서 적절하게 구문 분석하고 검증합니다.
- 주입 공격을 방지하기 위해 준비된 문이나 매개변수화된 쿼리를 사용합니다.
- 참조:
- https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be
- https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/
- https://twitter.com/HusseiN98D/status/1254888748216655872
API 매개변수를 통한 사용자 이메일 및 비밀번호 변경
- 공격자는 API 요청에서 이메일 및 비밀번호 매개변수를 수정하여 계정 자격 증명을 변경할 수 있습니다.
php
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})
- 완화 단계:
- 엄격한 매개변수 검증 및 인증 검사를 보장합니다.
- 의심스러운 활동을 감지하고 대응하기 위해 강력한 로깅 및 모니터링을 구현합니다.
- 참조:
- API 매개변수 조작을 통한 전체 계정 탈취
비율 제한 없음: 이메일 폭탄 공격
- 비밀번호 재설정 요청에 대한 비율 제한이 없으면 이메일 폭탄 공격이 발생하여 사용자가 재설정 이메일로 압도당할 수 있습니다.
- 완화 단계:
- IP 주소 또는 사용자 계정을 기반으로 비율 제한을 구현합니다.
- 자동화된 남용을 방지하기 위해 CAPTCHA 챌린지를 사용합니다.
- 참조:
- HackerOne 보고서 280534
비밀번호 재설정 토큰 생성 방법 알아내기
- 토큰 생성의 패턴이나 방법을 이해하면 토큰을 예측하거나 무차별 대입할 수 있습니다. 몇 가지 옵션:
- 타임스탬프 기반
- 사용자 ID 기반
- 사용자 이메일 기반
- 이름 및 성 기반
- 생년월일 기반
- 암호학 기반
- 완화 단계:
- 토큰 생성을 위해 강력한 암호화 방법을 사용합니다.
- 예측 가능성을 방지하기 위해 충분한 무작위성과 길이를 보장합니다.
- 도구: Burp Sequencer를 사용하여 토큰의 무작위성을 분석합니다.
추측 가능한 UUID
- UUID(버전 1)가 추측 가능하거나 예측 가능하면 공격자가 이를 무차별 대입하여 유효한 재설정 토큰을 생성할 수 있습니다. 확인하십시오:
- 완화 단계:
- 무작위성을 위해 GUID 버전 4를 사용하거나 다른 버전에 대한 추가 보안 조치를 구현합니다.
- 도구: guidtool을 사용하여 GUID를 분석하고 생성합니다.
응답 조작: 나쁜 응답을 좋은 응답으로 교체
- 오류 메시지나 제한을 우회하기 위해 HTTP 응답을 조작합니다.
- 완화 단계:
- 응답 무결성을 보장하기 위해 서버 측 검사를 구현합니다.
- 중간자 공격을 방지하기 위해 HTTPS와 같은 안전한 통신 채널을 사용합니다.
- 참조:
- 라이브 버그 바운티 이벤트의 치명적인 버그
만료된 토큰 사용
- 만료된 토큰이 여전히 비밀번호 재설정에 사용될 수 있는지 테스트합니다.
- 완화 단계:
- 엄격한 토큰 만료 정책을 구현하고 서버 측에서 토큰 만료를 검증합니다.
무차별 대입 비밀번호 재설정 토큰
- Burpsuite 및 IP-Rotator와 같은 도구를 사용하여 재설정 토큰을 무차별 대입하여 IP 기반 비율 제한을 우회하려고 시도합니다.
- 완화 단계:
- 강력한 비율 제한 및 계정 잠금 메커니즘을 구현합니다.
- 무차별 대입 공격을 나타내는 의심스러운 활동을 모니터링합니다.
토큰 사용 시도
- 공격자의 재설정 토큰이 피해자의 이메일과 함께 사용될 수 있는지 테스트합니다.
- 완화 단계:
- 토큰이 사용자 세션 또는 기타 사용자 특정 속성에 바인딩되도록 보장합니다.
로그아웃/비밀번호 재설정 시 세션 무효화
- 사용자가 로그아웃하거나 비밀번호를 재설정할 때 세션이 무효화되도록 보장합니다.
- 완화 단계:
- 적절한 세션 관리를 구현하여 로그아웃 또는 비밀번호 재설정 시 모든 세션이 무효화되도록 합니다.
로그아웃/비밀번호 재설정 시 세션 무효화
- 재설정 토큰은 만료 시간이 있어야 하며, 그 이후에는 무효가 됩니다.
- 완화 단계:
- 재설정 토큰에 대해 합리적인 만료 시간을 설정하고 이를 서버 측에서 엄격히 시행합니다.
참조
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.