일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 이상심리학
- 문학치료
- 사춘기심리상담
- 독서심리지도사자격증
- 독서심리치료사
- 심리학도서
- 불안장애
- 독서치료자격증
- 문학치료사
- 심리상담비용
- 독서치료사자격증
- 독서심리치료
- dsm-5
- 시치료사자격증
- 이상심리
- 이재연교수
- 독서심리치료지도사
- 자녀상담
- 시치료사
- 청소년심리상담
- 독서심리치료사자격증
- 독서심리지도사
- 심리상담
- 시치료지도사
- 임상심리사
- 시치료
- 독서치료사
- 독서치료
- 심리학아카데미
- 독서심리
- Today
- Total
독서심리지도사010-2788-3025
SQL Injection 본문
2017년 보안 사건들에 대해 소개하면서 잘 알려진 공격기법인 SQL Injection을 언급한 일이 있었는데요.
[2017년 보안 사고 : http://computergeek.tistory.com/9]
SQL Injection은 데이터를 저장해 놓는 공간, 서버의 데이터베이스를 공격하는 방법 중 가장 잘 알려진 방법입니다. 여러분이 보안 전문가나, 서버를 관리하는 사람을 꿈꾸고 있다면 꼭 알아야 하는 지식이죠. 또한 그런 직업을 바라보고 있지 않더라도 상식선에서 알아둘만한 주제입니다.
SQL Injection, 얼마나 위험할까?
“러시아 해커들이 12억 건의 ID/PW 개인정보를 탈취하는 것에 성공했다.”
위 문장을 영어로 한 기사가 많은 보안 전문가들의 관심을 끈 적이 있습니다. 더 정확히 이야기하자면 ‘12억 건의 개인정보 탈취’라는 사건보다, 사용된 방법이 SQL Injection이라는 것에 더 관심을 두었죠.
SQL Injection은 서버 관리 프로그램을 만들 때 가장 조심해야하는 것들 중 최우선 과제로 꼽히기도 하는데요. 공격이 쉬운데 비해 파괴력이 어마어마하고, 보안회사 Imperva가 2012년에 발표한 보고서에 따르면 월 평균 4회 가량의 공격이 있다고 했습니다. 또한 자주 사용되는 공격법을 나타낸 다음 그래프를 보면 SQL Injection은 알려진 해킹 방법 중 가장 많은 부분을 차지하고 있죠.
어떻게 공격하지?
우선 SQL Injection이 무엇인지에 대해 이해를 해야 되겠죠. ‘코드 인젝션의 한 기법으로 클라이언트 입력값을 조작해 서버의 데이터베이스를 공격하는 방식’라고 알려져 있는데요.
우리는 위 그림과 같은 구조에서 클라이언트(사용자:PC, Smartphone, Laptop...)와 서버 간에 데이터를 요청하고 응답을 하면서 인터넷을 사용하고, 게임을 할 수 있는 것이죠. 클라이언트는 서버에 데이터를 요청하는 명령어 코드를 보내는데요. 이 때 이 코드를 조작함으로 서버 자체에 명령을 내리는 것입니다.
서버는 클라이언트에게서 받은 명령어 코드를 자신이 가진 프로그램으로 분석해서 결과 값을 클라이언트로 다시 돌려주게 되는데요. 여기서 공격 방법이 나오게 되는 것입니다.
“서버 프로그램이 허술하게 짜여 있다면?”
어처구니가 없으실 수도 있지만, 서버 프로그램을 만든 후 보안을 테스트 하는 작업에서 SQL Injection과 비슷한 취약점들은 발견하기 힘들지만, 공격하는 입장에서는 간단한 스캐닝 툴, 코드 검증만을 통해 이 취약점을 쉽게 발견할 수 있죠.
예를 통해서 대표적인 SQL Injection 공격법을 알아봅시다. (데이터베이스에 사용되는 언어는 SQL이라 가정하겠습니다.)
우선 여러분이 ID와 PW를 입력하고 로그인 버튼을 누르게 되면, 서버로 여러분의 ID/PW가 전송되게 됩니다. 그리고 서버는 데이터베이스를 조회해 일치하는 정보가 있다면 로그인을 승인한다는 메시지를 클라이언트(여러분의 컴퓨터)로 전송하게 되는 것이죠.
이때, 서버 프로그램이 다음과 같이 짜여 있다고 하죠.
일반적으로 로그인을 한다면 다음과 같은 명령어가 실행되게 될 것입니다.
ID : 컴퓨터 / PW : 알쓸신잡
악의적인 목적을 가지고 다음과 같이 입력했다고 해 볼까요.
ID : 알쓸신잡 / PW : ‘ OR ’1’ = ‘1
비밀번호 입력 값의 마지막 구문을 보게 되면, 따옴표를 닫아 password=’‘를 만들고, OR ’1’=’1‘이 됩니다. 이 상황에서 WHERE 뒤의 구문을 정리하면 ’(조건) AND (조건) OR (조건)‘인데요. 논리학에서는 AND는 OR보다 먼저 계산이 되게 됩니다. 즉 ’(AND 결과) OR (조건)’이 되는 것이죠. 그런데 맨 마지막 구문은 ‘1’=‘1’입니다. ‘1은 1이다’ 맞는 말이고 결과는 TRUE가 됩니다. 즉 앞에 어떤 값을 넣더라도 최종적으로는 ‘(AND 결과) OR True’이기 때문에 전체 구문은 항상 참 값으로 로그인을 성공시키는 것이죠.
단 한 줄로 로그인을 성공해버리는 것입니다.
오늘 SQL Injection이 무엇인지 조금이나마 이해가 되셨길 바라며 오늘 글 마치겠습니다.
'기타정보' 카테고리의 다른 글
무식한 그리고 난폭한 공격, 브루트 포스(Brute-Force) (0) | 2018.02.07 |
---|---|
제로데이 공격, Zero-day Attack (0) | 2018.02.07 |
내 정보는 소중해요, GDPR! (0) | 2018.02.03 |
악성코드는 진화중 (0) | 2018.02.03 |
2017년 보안 사고들 (1) | 2018.02.03 |