[K-shield Junior 6th] 시나리오 기반 모의해킹 프로젝트
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취약점을 이용하여, 자신의 피싱 사이트로 유도한다.
가짜 로그인 폼
사용자들은 해당 공지사항을 열람 후 , 위의 사진과 같은 가짜 로그인 폼으로 유도된다.
사용된 취약점.
- 관리자 페이지 노출
- SQL INJECTION
- XSS + CSRF(다른 시나리오에 사용)
- 디렉터리 인덱싱
다음은 그에 따른 대응 방안이다. 대상은 중소기업이므로 보안에 투자할 자본이 상대적으로 낮을 수 있다는 것을 감안하여 무료 솔루션과 보안 제품들을 위주로 솔루션을 구성했다.