일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQLi
- THM
- php login page
- sql injection
- BANDiT
- tryhackme
- Cryptography
- Authentication
- ssrf
- OS Command Injection
- php To Do List
- Leviathan
- Reconnaissance
- Server Side Request Forgery
- file upload
- 파일 업로드 취약점
- over the wire
- FTZ
- access control
- overthewire
- Recon
- php file upload
- War Game
- php
- Cookie
- active reconnaissance
- php 파일 업로드하기
- php 로그인 페이지 만들기
- privilege escalation
- active recon
- Today
- Total
R's Hacking Daily Log
Authentication - Lab(1) 본문
Password 기반 인증체제에서 Brute force와 관련된 Lab을 풀어보도록 하자!
Lab - Username enumeration via different responses )
lab에 들어가 Myaccount를 누르면 위와 같은 login 페이지가 나오는 걸 볼 수 있다.
일단 아무거나 입력해서 packet을 burp suite로 가로챘다.
packet 내용을 확인해 보면 login 페이지에서 입력한 username & password 값이 들어가 있는 걸 볼 수 있다.
계정을 찾기 위해 첫 번째로 해볼 건 유효한 계정의 username을 찾는 것!
lab 설명에 나와있는 username list를 파일로 만들어 load 해주면 payload를 세팅하기 쉽다.
Intruder에서 username부분을 payload 설정해주고 공격을 실행하면 length가 다른 payload 하나를 발견할 수 있다.
response를 확인해보니 다른 건 invalid username이라고 하는 데 하나만 "incoorect password"라고 나온다.
즉, 유효한 username이라는 것. 비밀번호를 알아낼 username은 alabama인 걸 알아냈다.
알아낸 username은 packet에 입력해 주고 이번엔 password 부분을 payload로 설정해 준다.
username list를 불러왔던 것처럼 password list 파일을 하나 만들어서 load해줬다.
Intruder로 brute force 공격을 해보니 "thunder"이라는 payload에만 length가 178인 걸 볼 수 있다.
위에서 알아낸 정보(alabama:thunder)로 로그인을 시도해 보니
alabama 계정으로 로그인 성공!! 이걸로 첫 번째 lab은 해결이다. (OoO)
Lab - Username enumeration via subtly different responses )
Myaccount를 누르면 로그인 페이지가 나온다.
첫 번째 lab에서 했던 것처럼 packet을 가로채 username을 payload 설정해 brute force를 실행해 보았다.
이번에는 첫 번째 lab과 달리 length 값의 결과가 다양해져 공격자의 입장에서 어떤 payload가 유효한지
알아보기 어려워졌다.
length는 조금씩 다르지만 이 중에 하나 빼고는 다 "Invalid username or password."를 출력할 거라 추측을 하고
lab을 이어가 보자.
length만 보고는 어떤 payload가 유효한 지 알 수 없다.
그렇기 때문에 "invalid username or password." 문구가 출력되는 부분을 Grep - Extract에 설정해 두고
이 문구가 출력되는 부분을 위주로 확인해 보자.
문구 부분을 Grep으로 설정해 두고 brute force를 실행해보니 결과가 다른 payload 하나를 찾아낼 수 있었다.
저엉말 작은 차이라 자세히 보지 않으면 모를 수 있지만 payload가 al인 결과의 문구만 마지막에 온점이 없다.
username을 al로 설정해두고 이번엔 password를 payload로 설정해 brute force를 실행해 보자.
비밀번호를 어렵지 않게 찾아낼 수 있었다.
알아낸 정보(al:summer)로 로그인하면 al 계정으로 로그인 성공!
Lab - Username enumeration via response timing )
오늘 살펴본 마지막 lab은 이전 lab들과 다르게 IP 기반의 brute force 방어 기능이 적용된다고 한다.
확인해 보면 login을 시도할 수 있는 횟수가 정해져 있고 그 이상 로그인을 시도하면 30분 동안 로그인을 하지 못한다고 한다.
IP 기반으로 로그인 시도를 차단하는 것을 우회하기 위해 X-Forwarded-For header를 사용할 것이다.
packet 내용에 X-Forwarded-For header를 추가하고 값은 payload로 설정한다.
첫 번째 payload는 1~100까지의 정수, 두 번째 payload는 username list에 들어있는 username이다.
payload 부분에서 설정해 주고 brute force 공격을 실행하면
Response received & completed column을 확인했을 때 유난히 값이 큰 payload 하나를 발견할 수 있다.
username을 ak로 설정해주고 두 번째 payload를 passsword list로 수정해 준다.
brute force 공격을 실행하면 "moon"만 length가 178로 다른 걸 볼 수 있다.
앞에서 알아낸 로그인을 시도해 보면(ak:moon) ak 계정으로 로그인에 성공한 걸 볼 수 있다. (~-~)
'Port Swigger > Authentication' 카테고리의 다른 글
Authentication - 2FA.Lab(1) (0) | 2023.05.21 |
---|---|
Authentication - Lab(2) (0) | 2023.05.11 |
Authenticaiton (2) (0) | 2023.05.07 |
Authentication (1) (0) | 2023.05.03 |
Authentication (0) | 2022.11.11 |