본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 5-1.인증 결함 [비밀번호 무차별 대입 공격]

by Robert8478 2023. 12. 13.

비밀번호 무차별 대입 공격이란? - 비밀번호로 입력 가능한 모든 문자 조합을 입력해서 사용자의 계정과 비밀번호가 일치할 때까지 대입하는
공격이다. 자동화 도구를 사용하여 공격하며, 웹 사이트의 비밀번호 정책을 파악한 뒤 조합할 문자의 구성과 최소 문자열 길이을 정한다.
문자와 숫자가 복잡할 수록 조합의 가지수가 많아지기 때문에 공격이 오래 걸리는 특성을 가진다.

[난이도 하]

무차별 대입 공격을 하기 위해서 버프슈트의 Intruder 기능을 사용할 수 있다. Proxy 탭에서 HTTP 요청을 가로챈 뒤 Intruder로 보내준다. 캡쳐할때는 아이디와 비밀번호 칸에 아무 문자열을 넣고 버튼을 누르면서 인터셉트를 해주도록 한다. 그리고 보낼 때에는 캡쳐한 내용 화면에 우클릭하고 Send to Intruder 메뉴를 선택한다.

그리고 Intruder 탭의 Positions로 이동하면 Payload가 들어갈 위치를 § 문자로 지정한다. 요청에 실리는 password 변수에만 payload를 실을 수 있도록 § 를 적절히 사용해서 Payload 위치를 변경한다.

패스워드에만 payload가 가도록 §를 password에만 두고 나머지는 다 지워버렸다. 그리고 아이디는 bee 이므로 login 변수에 bee를 넣어주자.

그 다음 Payloads 탭에 가서 Payload type을 Brute forcer로 변경한다. 그리고 아래에는 페이로드 옵션인데 비밀번호는 bug 인것을 알기에 최소 길이와 최대 길이를 둘다 3으로 지정하자. character set은 여기에 있는 문자들로 무차별 대입을 수행한다는 것이다. 이제 우측 위에 start attack 버튼을 눌러 공격을 시도하면 된다.

그러면 이런식으로 공격을 계속 시도하는데 그중 Status 상태 코드가 다르거나 Length 길이가 다른것을 찾자.

길이가 다른 bug를 누르고 아래에 response 탭에 가서 Render 탭을 누른다. Render는 Intruder로 보낸 요청에 대한 응답을 간략하게 제공한다.
그 결과를 보면 bug가 페이로드로 실렸을때 로그인이 성공했다고 나오는 것을 볼 수 있다.

[난이도 중]

이번에도 무차별 대입 공격을 해보았는데 bug가 나와도 다른 상태값을 보이지 않았다. 그래서 인터셉트한 패킷을 찾아보았다.

보았더니 이번에는 패스워드에 salt값이 랜덤으로 추가되는 것을 볼 수 있다. 패스워드에 salt 값이 랜덤으로 추가되면 로그인을 시도할 때마다 salt 값이 변경되어 무차별 대입 공격이나 사전 공격이 힘들어진다.

다시 로그인해서 캡쳐해보았을때 salt값이 변경된 것을 볼 수 있다. 이렇게 패스워드에 salt값을 추가하며 무차별 대입 공격을 막을 수 있다.

[난이도 상]

오우 이번엔 무려 캡챠(CAPTCHA)를 사용하고 있다. 캡챠의 경우 코드가 이미지에 있어 시각적으로 코드를 보아야 하는데다 매번 변경되는 캡챠 코드를 입력하지 않으면 로그인 시도가 불가하기 때문에 사실상 무차별 대입 공격으로 뚫는 것은 불가능 하다고 보아야한다.

php 코드를 보면 captcha를 사용중인 것을 볼 수 있다.