bWAPP A2 Broken Authentication - Insecure Login Forms
itsecgames.com
www.itsecgames.com
로그인 페이지이다. 문제 제목을 보면 안전하지 않은 로그인 폼이라고 한다. 일반적으로 로그인 프로세스는 입력된 로그인 정보를 서버에서 체크하여 올바른 로그인 정보일 때 로그인을 성공한다.
low
low 레벨이다. bee/bug 계정으로 로그인을 실패하면 [사진 2]와 같이 올바르지 않은 계정이라고 한다. 또한, burp 도구로 프록시를 잡아도 login, password 파라미터 이외에 전달되는 값은 없다.
크롬 브라우저의 개발자 도구를 통해 소스코드를 보면 로그인 폼에 흰색으로 "tonystark", "I am Iron Man"이라는 수상한 문자열이 박혀 있다.
드래그를 해보면 배경과 같은 색인 흰색으로 문자열이 박혀 있는 것을 확인할 수 있다.
이 문자열을 입력하면 로그인에 성공하는 것을 확인할 수 있다. low 레벨은 로그인 정보를 html 소스코드에 박아놨기 때문에 매우 위험하다.
medium
medium 레벨이다. medium 레벨로 변경하면 [사진 7]과 같이 Name 값에 "brucebanner" 문자열이 박혀 있다. passphrase를 입력하여 unlock하라고 한다.
html 소스코드를 보면 low 레벨과 다르게 Passphrase에 로그인 정보가 하드코딩되어 있지 않다. 대신에 unlock_secret() 함수를 실행하는 것을 확인할 수 있다.
unlock_secret() 함수는 브라우저에서 확인할 수 있는 ba_insecure_login_2.php 소스코드에 존재하는데, 하드코딩되어 있는 bWAPP 변수에서 특정 문자를 가져와서 secret 변수를 설정한다. 그리고 사용자가 입력한 passphrase와 비교하여 일치하면 로그인을 성공한다. [사진 10]에 초기화된 순서대로 secret 정보를 맞추면 되는데, 조금 더 쉬운 방법으로 브라우저 디버깅을 통해 secret 정보를 쉽게 획득할 수 있다.
secret 변수를 초기화한 직후에, break point를 설정하고 웹페이지에서 unlock 버튼을 클릭하면 위와 같이 secret 정보가 생성되고 브라우저가 중지된다. 빨간색 박스를 보면 "hulk smash!"라는 문자열을 확인할 수 있다. 이 문자열이 passphrase이다.
올바른 passphrase를 입력하면 위와 같이 unlock 문구가 출력된다. low 레벨보다는 보안이 강화되었지만 결국엔 클라이언트 측에서 passphrase를 생성하고 비교하기 때문에 안전하지 않은 방법이다.
high
high 레벨이다. high 레벨의 경우 bee/bug 계정으로 로그인하면 정상적으로 로그인이 된다.
html 소스코드를 보면 로그인 정보가 하드코딩되어 있지 않다. 즉, 입력한 로그인 정보가 서버로 전송되고 서버에서 로그인 정보를 체크한 후, 올바른 로그인 정보일 경우 로그인을 성공하는 것으로 추측할 수 있겠다.
high 레벨일 때 서버에서 사용되는 코드를 보면 전달한 로그인 정보와 DB 내의 로그인 정보를 비교하여 일치하면 로그인을 성공하는 것을 확인할 수 있다. low, medium 레벨과 비교하여 로그인 정보를 서버에서 체크하기 때문에 비교적 안전한 로그인 프로세스라고 할 수 있겠다.
'Wargame > bWAPP' 카테고리의 다른 글
bWAPP A2 Broken Authentication - Password Attacks (0) | 2020.11.17 |
---|---|
bWAPP A2 Broken Authentication - Logout Management (0) | 2020.11.16 |
bWAPP A2 Broken Authentication - Forgotten Function (0) | 2020.11.16 |
bWAPP A2 Broken Authentication - CAPTCHA Bypassing (0) | 2020.11.16 |
bWAPP A1 XML/XPath Injection (Search) (0) | 2020.11.10 |