R's Hacking Daily Log

Authentication - Lab(1) 본문

Port Swigger/Authentication

Authentication - Lab(1)

hanhxx 2023. 5. 7. 22:53

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 ) 

~ lab으로 들어가면 나오는 페이지 ~

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
Comments