K-Shield Junior 6기를 진행하면서, 마지막 과정인 프로젝트를 마치며 프로젝트 수행 결과를 정리하려 한다.
우리 팀은 모의 해킹 팀으로, 제공되는 웹 서버에 대해서 취약점 분석 및 대응 방안, 보안 솔루션 도출 등을 맡았다.
내가 처음 구상한 시나리오의 개요는 위 그림과 같다. 공격자는 SQL INJECTION을 통해 관리자 ID, PASSWORD를 알아내어 관리자 페이지로 접속.
그 다음 공지사항 작성 기능을 이용하여, 사용자들을 자신의 피싱 페이지로 유도하는 것이다.
처음 난 주어진 웹페이지의 기능을 하나하나 써보던 중, 공지사항에 첨부된 파일을 다운로드하다가 /_core 라는 경로를 발견했다.
해당 경로로 디렉터리 인덱싱 취약점을 확인해봤는데,
위와 같이 디렉터리 인덱싱 취약점이 발견되었다. 모든 디렉터리의 이름앞에 _(언더바)가 붙어있는 규칙을 발견하고, 관리자 페이지가 따로 존재하는지 경로에 /_admin을 시도했다.
일반 사용자의 로그인이 아닌, 관리자 페이지가 노출되었다. 이제 공격자는 관리자 ID, PASSWORD만 알아낸다면 관리자로 로그인이 가능하다.
공격자는 웹페이지에 SQL 취약점이 존재하는지 탐색하던 중 검색어 입력 폼에 SQL Error가 반환 되는 것을 확인했다.
공격자는 SQLMAP 도구를 사용해, 해당 웹 서버의 데이터베이스를 가져올 수 있다.
관리자 패스워드는 MD5 HASH로 암호화되어 있었기 때문에, 복호화가 가능했다.
공격자는 탈취한 관리자 ID, PASSWORD로 관리자 권한으로 로그인을 한다.
공격자는 탈취한 권한으로 관리자 페이지 로그인 후, 사용자들이 열람할만한 제목으로 공지사항을 작성한다.
그리고 해당 공지사항에 존재하는 XSS취약점을 이용하여, 자신의 피싱 사이트로 유도한다.
사용자들은 해당 공지사항을 열람 후 , 위의 사진과 같은 가짜 로그인 폼으로 유도된다. [너무 감쪽같다, 나도 속았다]
사용된 취약점.
- 관리자 페이지 노출
- SQL INJECTION
- XSS + CSRF(다른 시나리오에 사용)
- 디렉터리 인덱싱
이상, 모의 해킹 프로젝트의 침투 부분 정리를 마친다.