본문 바로가기
프로젝트

[프로젝트] DB 해킹

by 왕자두 2023. 7. 4.

이틀 만에 진행하던 프로젝트의 DB를 들어가봤더니 충격적이지 않을 수 없는 상태였다.

테이블 이름부터가 README 길래 도대체 뭐길래 테이블 조회가 하나도 안되는 거지 쎄함을 느끼고 바로 조회를 해봤다.

I have backed up all your databases. To recover them you must pay 0.012 Bitcoin to this address: 1G3BfVSLmpva74BK3iXYUB92pJENJqgAga. After your payment email me at rdatabase.2104@onionmail.org with your server IP and transaction ID. Emails without transaction ID will be ignored.

딱 봐도 해킹이었다. 세상에 한 번도 당해본 적이 없어서 도대체 뭐가 문제지 감이 안와 어디부터 해결해야할지 막막하던 그때 생각이 났다. 사용자 이름을 디폴트인 root에서 다른 이름으로 바꾸긴 했지만 추측하기 어렵지 않았고 무엇보다도 비밀번호가 password 였다. 정확히 어떤 경로로 정보를 털어간 건지 알 수는 없었지만 데이터베이스에는 테스트 데이터만 저장되어있어 크게 문제될 것은 없었다. 만약 실사용자가 있고 그 사람들의 개인정보들이 유출된 것이라면 사이드 프로젝트일 뿐인데 일이 정말 커질 뻔 했다. 

 

해킹을 쉽게 당한 이유는 아래와 같을 수 있다고 한다.

  • mysql 외부 접속 허용
  • MySQL 디폴트값 사용(유저네임과 포트번호)
  • 쉬운 비밀번호 사용(12345678, pass1234 등)

이를 해결하기 위해서 해결해야 할 것들은 당연하지만 아래와 같다.

  1. PUBLIC 형태가 아닌 PRIVATE 형태로 이용. (외부 접근 IP 차단) => 지금으로써 이 방법은 조금 귀찮다. 그래도 할 수 있으면 해보자.
  2. 만약 외부로 오픈해야하는 DB라면 3306에서 다른 포트로 변경 => 나는 이렇게 해결해야한다.
  3. MySQL 디폴트값 사용하지 않기 (ex. username = root, port = 3306) => username 도 현재 사용하는 것보다 예측할 수 없도록 바꾸는 것이 안전할 것이다.
  4. 쉬운 비밀번호 사용하지 않기 (ex. password = 111111, 1234) => password는 함부로 추측할 수 없도록 수정한다.
  5. DB의 PASSWORD를 해쉬화해서 사용 => 이거는 조금 어렵겠지만 시도해보면 좋을 것 같다.

해결 과정은 다음 글에 쓰도록 하겠다.

 

[참고]

https://velog.io/@joo0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%ED%95%B4%ED%82%B9

 

DATABASE 해킹

To recover your lost Database send 0.005 Bitcoin (BTC) ...?

velog.io

https://velog.io/@swhybein/%EA%B0%9C%EB%B0%9C-%EC%9E%85%EB%AC%B8-6%EC%A3%BC-%EB%A7%8C%EC%97%90-DB-%EC%84%9C%EB%B2%84-%ED%95%B4%ED%82%B9%EC%9D%84

 

개발 입문 6주 만에 DB 서버 해킹 당한 후기

경험했습니다.단순 프로젝트를 위한 서버라도 쉬운 비밀번호로 하면 안 된다다는 것을 배웠습니다.부트캠프 1차 프로젝트 마지막날, 발표를 앞두고 AWS RDS 서버에서 MySQL 테이블을 확인하고 있었

velog.io