Part-2, 인증결함

개보린·2021년 12월 13일
0

비박스

목록 보기
11/15
  • 이 글을 무단으로 전재 및 재배포를 금지하고 있습니다.
  • 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위 입니다. 본 내용을 악의적인 목적으로 사용 시 그에 대한 법적 책임을 포함한 모든 책임은 당사자에게 있으며, 작성자는 어떠한 책임도 지지 않음을 밝힙니다.

인증(authentication)

  • 인증 과정에서 결함(Broken)이 발생하면 사용자의 계정 정보가 노출, 세션 관리가 허술한 경우 세션 아이디를 탈취하여 사용자의 권한을 획득
  • 결함과 세션 관리의 취약점으로 정상 인증 과정없이 사용자 권한 획득

비밀번호 무차별(Brute force) 대입 공격

  • 입력 가능한 모든 문자 조합을 입력하여 사용자의 계정과 비밀번호가 일치할 때 까지 대입하는 공격
  • 웹 사이트의 비밀번호 정책을 파악한 다음 조합할 문자의 구성과 최소 문자열 길이를 정함
  • 문자와 숫자가 조금만 복잡해져도 가능한 조합의 가지 수가 많아지기 때문에 공격에 성공하기 까지 시간이 많이 걸림

로그인 요청을 가로챈 다음 [오른쪽 마우스] -> [Send to Intruder]

요청에 실리는 password 변수에만 Payload(전송되는 데이터)를 실을 수 있도록 ADD §, Clear § 을 사용하여 Playload의 위치를 변경한다.

playload 탭으로 이용하여 공격타입을 Brute forcer로 변경한 후 사용할 문자 및, 최소, 최대 길이를 지정한다.

무차별 대입 공격 시작 시, Playload 컬럼에 공격에 사용할 문자들이 순차적으로 3글자씩 대입되는 것을 확인 할 수 있었고, 공격 성공 시에 상태코드가 다르거나 길이가 차이(시간 상 성공값 확인은 안 함)난다.

🔑대응방안

로그인과 동시에 캡챠(CAPTCHA, C mpletely A utomated P ublic T uring test to tell C omputers and H umans A part, 완전 자동화된 사람과 컴퓨터 판별, 캡차)를 입력받거나 아이디 당 비밀번호 입력 획수를 제한

비밀번호 사전(Weak force) 대입 공격

  • 비밀번호를 설정하는 사람들이 선호하는 문자열을 대입하는 공격
  • 즐겨 쓰는 비밀번호를 마치 사전처럼 기록한 파일에 있는 문자열을 하나씩 대입
    * 비밀번호 목록 파일 다운로드: https://github.com/fuzzdb-project/fuzzdb
    압축 해제 후 wordlists-user-passwd 하위에 있는 phpbb.txt 파일 사용
    ** 퍼징(Fuzzing)
    악의적인 입력 값을 주입하여 취약점 여부를 찾는 기법

login 과 password 변수에 Payload(전송되는 데이터)를 실을 수 있도록 ADD §, Clear § 을 사용하여 Playload의 위치를 변경한 후 공격타입을 'Cluster Bomb'으로 지정

Payloads 탭으로 이동하여 login(1번 set), password(2번 set)에 페이로드 타입(simple list)을 지정한다.
페이로드 타입을 Simple list로 지정하면 공격에 필요한 설정이 가능한데 Load 버튼을 클릭하여 phpbb.txt 파일을 불러온다.


사전대입 공격 실행 후 각 payload에 대입되는 값들을 볼 수 있고 순차적으로 대입되는 듯 했다. (payload 2의 값은 phpbb.txt 첫 줄이 출처가 명시되어 있다.) 공격 성공 시에 상태코드가 다르거나 길이가 차이(시간 상 성공값 확인은 안 함)난다.

🔑대응방안

비밀번호에 특수문자, 숫자, 영문이 포함되었는지 정규 표현식을 사용하여 검사
클라이언트 스크립트에서 처리하면 우회할 수 있으므로 서버사이드 스크립트에서 처리
* Client Script: 클라이언트에서 실행되는 스크립트(자바스크립트, VB스크립트)
** Server Side Script: 서버에서 실행되는 스크립트(ASP, C, JSP, PHP, 파이썬, Node.js)

profile
현역 '개'발자에서 '보'안 어'린'이로

0개의 댓글