인증 수준이 낮은 로그인 페이지에서는 Brute Force 나 Dictionary 공격 등을 통해 로그인 정보를 획득할 수 있다. 이 때, 로그인 수행 시 출력되는 메시지를 이용하는데 CAPTCHA Bypass 실습 때도 사용했던 Burf suite 의 Intruder 를 이용하여 공격을 수행해보겠다. Intruder 를 사용해보지 않았다면 아래의 실습을 먼저 보고오길 바란다.
# Burf suite 의 Intruder 을 이용한 CAPTCHA Bypass : https://binwalk.tistory.com/87
bee-box 환경에서 실습해보자!
Level - low
bee/bug 가 로그인 정보로 나와있고 이 조합으로 로그인 시, "Successful login!" 이라는 메시지가 출력된다.
잘못된 로그인 정보를 입력하면 "Invalid ..." 이라는 메시지가 출력된다.
이제 이 출력 메시지를 이용하여 id/pw 조합을 알아내보겠다.
먼저, burf suite 를 이용하여 로그인 패킷을 잡고 Intruder 로 보내준다.
다음은 Intruder 의 Positions 부분에서 login 과 password 부분에만 payload 를 설정해준다. 그리고 Attack type 은 Cluster bomb 를 선택해준다.
다음으로 Payloads 부분에서 payload 1(login), payload 2(password) 를 Simple list 로 설정한 뒤, 위와 같이 리스트를 추가해준다. Brute Force 는 시간이 많이 걸려서 이번 실습은 해당 페이지에서 공격이 가능하다는 것만 보여주기 위해 리스트를 이용하겠다.
마지막으로 Options 에서 Grep - Match 에 로그인 실패 시 출력되는 메시지를 추가해준다. 그리고 나서 오른쪽 상단의 Start attack 을 눌러준다.
그 결과, 16개의 조합으로 로그인을 시도하게 되고 위와 같이 bee/bug 조합일 때, 실패 메시지가 아닌 "Successful login!" 메시지가 출력되는 것을 확인할 수 있다.
Level - medium
medium level 의 로그인 패킷을 잡아보면 위와 같이 salt 값이 들어간 것을 볼 수 있다. 때문에 로그인을 시도할 때마다 salt 값이 변경되어 Brute Force 나 Dictionary 공격이 불가능하다.
Level - high
high level 에는 salt 값 대신 CAPTCHA 값을 추가하여 인증하고 있다. 이전에 CAPTCHA Bypass 에서도 실습했듯이, CAPTCHA 값은 Brute Force 나 Dictionary 공격을 수행해도 그대로 유지되기 때문에 로그인 정보를 알아낼 수 있다.
소스코드 분석
medium level 인 ba_pwd_attack_2.php 의 소스코드를 보니 위와 같이 salt 값을 검증하고 있는데, 이 salt 값은 로그인을 시도할 때마다 랜덤으로 바꿔주고 있다. 때문에 Brute Force 나 Dictionary 공격이 불가능하다.
high level 인 ba_pwd_attack_4.php 의 소스코드를 보면 captcha 값을 검증하는 것을 볼 수 있다. 이 captcha 값은 직접 Reload 버튼이나 login 버튼을 누르지 않는다면 값이 변경되지 않기 때문에 공격이 가능했다.
'웹 취약점(bee-box)' 카테고리의 다른 글
CSRF (Change Secret) (0) | 2020.05.11 |
---|---|
CSRF (Change Password) (0) | 2020.05.11 |
Broken Authentication - Forgotten Function (0) | 2020.04.14 |
Broken Authentication - CAPTCHA Bypassing (0) | 2020.04.14 |
XSS - Stored(Change Secret) (0) | 2020.04.13 |