브루트 포스 공격
브루트 포스(brute force) 공격은 특정 정보(주로 사용자의 패스워드)를 알아내기 위한 공격이다. 패스워드 크래킹을 위해 사용하기도 하며, 웹 애플리케이션을 대상으로는 로그인에 필요한 사용자 패스워드를 알아내고자 할 때 사용할 수 있다. 웹 애플리케이션 중에는 사용자가 로그인을 여러 번 실패하더라도 다음 로그인 시도에 아무런 제한을 하지 않는 경우가 있다. 이 경우 로그인을 무한히 계속해서 시도할 수 있기 때문에, 공격자는 특정 사용자의 패스워드를 알아내기 위해 무작위의 값을 계속 입력하며 로그인을 시도함으로써 비록 시간이 걸린다고 할지라도 그 사용자의 패스워드를 결국 알아낼 수 있다.
칼리 리눅스의 /usr/share/john/password.lst 경로에는 1990년대 중반에 많이 사용된 패스워드와 2006년부터 2010년까지 웹사이트에서 많이 쓰인 패스워드로 구성되어 있는 파일이 있다. 이 파일에는 총 3546개의 패스워드가 등록되어 있다.
실행 결과를 보면 응답 길이(Length)가 다른 요청 하나가 사용자의 패스워드임을 추측할 수 있다.
브루트 포스 공격 대응
짧은 시간 내에 일정 횟수 이상 로그인 시도에 실패하면 정해진 시간 동안 로그인하지 못하게 하는 방법으로 대응할 수 있다. 일정 시간 동안 로그인 시도를 제한하는 방법을 락킹(locking)이라 하고, 스마트폰 잠금 화면에서 이러한 방법을 사용한다. 다른 대응 방법으로는 캡차(CAPTCHA)를 이용하여 흘려쓴 글자나 그림 문자를 로그인 시도 시 입력하도록 하는 방법이다.
세션 ID 노출 사례 및 보호 대책
세션 ID가 노출되면 공격자는 그 세션 ID를 이용하여 인증 과정을 우회하여 다른 사용자가 로그인한 것처럼 웹사이트에 접속할 수 있다. 세션 ID는 일반적으로 쿠키를 통해 전달되지만 간혹 설정 오류나 구현상의 이유 등으로 URL을 통해 전달되는 경우가 있다. 그런데 URL로 세션 ID가 전달되면 이 과정에서 세션 ID가 노출될 수 있는 위험이 있다.
세션 ID를 보호하기 위해서는 세션 ID가 URI를 통해 노출되지 않아야 한다. 그리고 HTTPS 암호화 채널을 통해 전달되어야 하고, 웹 브라우저를 종료하면 자동으로 로그아웃되도록하는 등이 있다.
'Study records > Web hacking' 카테고리의 다른 글
[Beebox] HTML 인젝션 (0) | 2024.06.20 |
---|---|
크로스 사이트 스크립팅 공격 (1) | 2024.05.25 |
커맨드 인젝션 공격 (0) | 2024.05.25 |
SQL 인젝션 공격 (1) | 2024.05.24 |
정보 수집과 대응 방법 (0) | 2024.05.23 |