Ctrl + Shift + ESC

[IT@Security] Web 취약점 12. 약한 문자열 강도 본문

Hacking/Web Hacking

[IT@Security] Web 취약점 12. 약한 문자열 강도

단축키실행해보세요 2023. 7. 16. 12:23

약한 문자열 강도란?

약한 문자열 강도 취약점: 웹 사이트에서 취약한 패스워드로 회원가입이 가능할 경우 공격자는 추측 및 주변 정보를 수집하여 작성한 사전 파일로 대입을 시도하여 사용자 계정을 탈취할 수 있는 취약점

 

해당 취약점 존재 시 유추가 용이한 계정 및 패스워드의 사용으로 인한 사용자 권한 탈취 위험이 존재하며, 해당 위험을 방지하기 위해 값의 적절성 및 복잡성을 검증하는 로직을 구현하여야 한다.

 

약한 문자열 강도 점검

 

점검 내용 웹페이지 내 로그인 폼 등에 약한 강도의 문자열 사용 여부 점검
점검 목적 유추 가능한 취약한 문자열 사용을 제한하여 계정 및 패스워드 추측 공격을 방지하기 위함
점검 대상 웹 애플리케이션 소스코드

 

1. 웹 사이트 로그인 페이지의 로그인 창에 추측 가능한 계정이나 패스워드를 입력하여 정상적으로 로그인되는지 확인

  • 취약한 계정: admin, administrator, manager, guest, test, scott, tomcat, root, user, operator, anonymous 등
  • 취약한 패스워드: Abcd, aaaa, 1234, 1111, test, password, public, blank 패스워드, ID와 동일한 패스워드 등

로그인 아이디가 admin - adminadmin@ / abcd - abcdabcd이기 때문에 어느 정도는 추측 가능하나 매우 취약하지는 않은 것으로 판단된다.

이는 mysql 비밀번호 정책에 따라 8글자 이상으로 비밀번호를 지정했기 때문인 것 같다.

또한 개인이 추측 가능한 계정을 사용하지 않도록 주의를 기울여야 한다.

 

2. 일정 횟수(3~5회) 이상 인증 실패 시 로그인을 제한하는지 확인

로그인을 5회 실패해보았다.

여전히 똑같은 경고창만 나오고 제한은 없는 것을 확인할 수 있었다.

 

보안 설정 방법

취약한 계정 및 패스워드를 삭제하고, 사용자가 취약한 계정이나 패스워드를 등록하지 못하도록 패스워드 규정이 반영된 체크 로직을 회원가입, 정보변경, 패스워드 변경 등 적용 필요한 페이지에 모두 구현하여야 한다.

 

로그인 시 패스워드 입력 실패가 일정 횟수(3~5회) 이상 초과할 경우 관리자에게 통보 및 계정 잠금 로직을 추가한다.

 

규정 예시

  • 다음 각 목의 문자 종류 중 2종류 이상을 조합하여 최소 10자리 이상 또는 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성
    1. 영문 대문자(26개)
    2. 영문 소문자(26개)
    3. 숫자(10개)
    4. 특수문자(32개)
  • 연속적인 숫자나 생일, 전화번호 등 추측하기 쉬운 개인정보 및 아이디와 비슷한 비밀번호는 사용하지 않는 것을 권고
  • 비밀번호에 유효기간을 설정하여 반기별 1회 이상 변경
  • 최근 사용되었던 패스워드 재사용 금지