처음부터 차근차근

다중 로그인 서비스 거부공격, 코드품질공격 본문

정보보안

다중 로그인 서비스 거부공격, 코드품질공격

_soyoung 2022. 5. 28. 15:52
반응형

다중 로그인 서비스 거부 공격

사용자가 사이트에 접속해서 서비스를 이용하려면 서버 내에서 DB를 연결해야한다.그래서 한 사용자마다 하나의 DB connection이 필요하다.

 

multi login(다중 로그인)을 구현하려면 DB connection이 최대 접속자 수 만큼 있어야한다.

만약 최대 2명까지 멀티 로그인을 할 수 있는 사이트가 있다고 가정해보자.

사이트에 2명이 로그인을 한 다음 또 다른 사람이 로그인을 하고싶어한다.

하지만 DB 커넥션이 부족하기 때문에 나머지 한 사람은 로그인을 하고 싶어도 하지 못하고 계속 기다려야한다.

이런 점을 이용하여 공격을 하는 것을 다중 로그인 서비스 거부 공격이라한다. 

 

DB connection pool

DB connection pool은 동시접속 문제를 해결 할 때 주로 사용되는데, DB와 연결해 놓은 객체를 두고 필요할 때 마다 이 커넥션 풀에서 빌려와서 사용한다.

서비스에 로그인 한 사람은 이 커넥션 풀에서 DB 연결 객체를 빌려와 사용하고, 로그아웃 하면 반납하고, 또 다른 사람이 이 반납한 연결 객체를 사용하는 이런 원리이다.

 

 

실습

webgoat의 다중 로그인 가능한 수는 최대 2명 까지이다.

그래서 3번째로 로그인하면 접속이 거부된다.

 

1. 조원의 webgoat 서버로 들어가서 [

Denial of Service] -> [Denial of Service from Muliple Logins] 클릭

2. jsnow로 로그인 

3. 그 다음 jdoe로 로그인

 

4. 그 다음 jplane으로 로그인하려고 하면 동시 접속 거부가 되어 화면에 congratulation이 뜨는 것을 볼 수 있다.

 

 

코드 품질 공격

= Code Quality _Discover Clues in the HTML

일반적으로 개발자들은 유지 보수를 용이하게 하기 위해 주석으로 소스에 대한 정보를 남긴다.

그래서 개발자들이 소스코드에 남긴 구문 등을 통해 정보를 얻어(예를들어 admin 아이디, 비번) 공격하는 것을 코드 품질 공격이라고 한다.

 

 

실습

1. 크롬에서 web developer 설치

2. 조원의 서버로 들어가서 [Code Quality] -> [Discover Clues in the HTML] 클릭

3. userName에다 webgoat를 적고 비밀번호에다가 아무거나 입력한 후 마우스 오른쪽 클릭 -> 검사 클릭

 

4. 그럼 개발자 모드 탭이 열릴텐데 거기서 password 클릭후 ctrl + F 를 누른다. 그 다음 밑에 나온 검색창에 admin을 검색한다.

 

5. 아래로 쭉 내리면서 개발자의 실수로 적어놓은 admin 아이디와 패스워드를 찾는다.

아이디 : admin, 패스워드 : adminpw

 

5. 찾은 아이디와 패스워드를 입력해 해킹 성공화면을 확인

성공!

 

 

코드 품질 공격 방지책

되도록 admin 아이디, 비밀번호 같은 보안이 중요한 정보는 주석으로 적어놓지 않고,

되도록 server side script 주석을 사용한다.

server side script 주석 예시

이렇게 <% %> 같은 태그 안에 입력하는 주석을 server side script 주석이라 한다.

이런식으로 적어놓으면 일반 사용자에게 주석이 노출되지 않는다.

html 주석

이런식으로 html 사용해서 적으면 사용자에게 주석이 다 보인다.

 

 

 

출처 : 정보보안(22-1학기)고수정교수 강의 내용 변형 및 요약

반응형
Comments