Project

[K-shield Junior 6th] 시나리오 기반 모의해킹 프로젝트

Ate1es 2021. 7. 6. 18:26

K-Shield Junior 6기를 진행하면서, 마지막 과정인 프로젝트를 마치며 프로젝트 수행 결과를 정리하려 한다.

우리 팀은 모의 해킹 팀으로, 제공되는 웹 서버에 대해서 취약점 분석 및 대응 방안, 보안 솔루션 도출 등을 맡았다.

 

먼저 수행 대상 및 개요다.

수행 대상은 온라인 교육을 실시하는 기업의 홈페이지를 대상으로 진행되었다.

코로나 때문에 비대면 교육 서비스가 활발하게 이용되고 있기 때문에, 그에 따른 해킹 위협으로부터 안정성 여부 판단 및 대응 전략을 제시한다.

3개의 시나리오 중 내가 작성한 시나리오 하나만 소개하려고 한다.

내가 처음 구상한 시나리오의 개요는 위 그림과 같다. 공격자는 SQL INJECTION을 통해 관리자 ID, PASSWORD를 알아내어 관리자 페이지로 접속.

그 다음 공지사항 작성 기능을 이용하여, 사용자들을 자신의 피싱 페이지로 유도하는 것이다.

파일 다운로드를 요청하는 패킷

처음 난 주어진 웹페이지의 기능을 하나하나 써보던 중, 공지사항에 첨부된 파일을 다운로드하다가 /_core 라는 경로를 발견했다.

해당 경로로 디렉터리 인덱싱 취약점을 확인해봤는데,

디렉터리 인덱싱 취약점 확인

위와 같이 디렉터리 인덱싱 취약점이 발견되었다. 모든 디렉터리의 이름앞에 _(언더바)가 붙어있는 규칙을 발견하고, 관리자 페이지가 따로 존재하는지 경로에 /_admin을 시도했다.

관리자 페이지 노출

일반 사용자의 로그인이 아닌, 관리자 페이지가 노출되었다. 이제 공격자는 관리자 ID, PASSWORD만 알아낸다면 관리자로 로그인이 가능하다.

공격자는 웹페이지에 SQL 취약점이 존재하는지 탐색하던 중 검색어 입력 폼에 SQL Error가 반환 되는 것을 확인했다.

공지사항 검색어 입력 폼에 SQL INEJCTION 발생

공격자는 SQLMAP 도구를 사용해, 해당 웹 서버의 데이터베이스를 가져올 수 있다.

SQLMAP을 사용하여, 관리자 ID, PASSWORD 노출

관리자 패스워드는 MD5 HASH로 암호화되어 있었기 때문에, 복호화가 가능했다.

공격자는 탈취한 관리자 ID, PASSWORD로 관리자 권한으로 로그인을 한다.

관리자 페이지 로그인 후 공지사항 기능 악용

공격자는 탈취한 권한으로 관리자 페이지 로그인 후, 사용자들이 열람할만한 제목으로 공지사항을 작성한다.

그리고 해당 공지사항에 존재하는 XSS취약점을 이용하여, 자신의 피싱 사이트로 유도한다.

가짜 로그인 폼

사용자들은 해당 공지사항을 열람 후 , 위의 사진과 같은 가짜 로그인 폼으로 유도된다. 

사용된 취약점.

  1. 관리자 페이지 노출
  2. SQL INJECTION
  3. XSS + CSRF(다른 시나리오에 사용)
  4. 디렉터리 인덱싱

다음은 그에 따른 대응 방안이다. 대상은 중소기업이므로 보안에 투자할 자본이 상대적으로 낮을 수 있다는 것을 감안하여 무료 솔루션과 보안 제품들을 위주로 솔루션을 구성했다.