본문 바로가기
보안해킹

SQL 인젝션 & XSS

by ChocoPeanut 2017. 4. 24.

SQL 인젝션 & XSS

 

SQL 인젝션코드 인젝션의 한 기법으로 클라이언트의 입력 값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말한다. 글로벌 콘텐츠 전송 서비스 기업 씨디네트윅스가 발표한 20164분기 웹 공격 분석 보고서에 따르면, 20164분기 웹 공격 취약점 유형에서 26%SQL 인젝션으로 나타날 정도로 웹 공격에서 흔하게 발생함을 나타내고 있다. 또한 OWASP에 의한 취약점 Top 10 중에서도 보안 위협 1순위로 SQL 인젝션이 있을 정도로 웹 분야에서 취약적이 부분으로 들어나고 있다.



SQL이라고 하는 것은 데이터베이스를 만들고 유지하는 데 사용하는 프로그래밍 언어로 DB를 구축하고 조작하기 위해 사용하는 명령어이다. SQL 질의문을 통해 데이터를 정의, 조작, 제어를 할 수 있다.



SQL 인젝션은 웹 애플리케이션 사용자 입력갑에 필터링이 제대로 적요돼 있지 않을 경우 발생한다. 공격자가 조작된 SQL 질의문을 삽입해 웹서버 DB 정보를 열람하고 정보를 유출 및 조작을 시킨다.


원래 DB는 관리자의 아이디와 비밀번호를 제대로 입력해야 해당 웹사이트 DB에 접속하여 정보를 볼 수 있다. SQL 인젝션은 관리자 비밀번호를 제대로 입력하지 않고 해커가 임의로 조작한 문자 조합을 비밀번호로 볼 수 있게 만들어 접속을 허가하게 해준다.

SQL 인젝션은 에러 기반 공격과 블라인드 공격으로 나눌 수 있는데 에러 기반 공격은 해커가 검사하지 않은 입력값을 발견하고 이를 악용할 때 발생하는 공격이다. 검사 입력값은 입력한 데이터 중에서 불필요한 부분을 제거하는데, 해커는 잘못된 정보를 입력하고 피드백을 기다리기만 하면 그 정보를 가로채는 식이다. 블라인드 공격은 에어 기반 공격과 달리 DB 서버를 바로 공격한다. DB 취약점을 노리고 공격하는 기법보다 성공하기 어렵지만 꾸준히 발생하는 공격 중 하나이다.

 


XSS는 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹 사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다. 이 또한 OWASP에서 선정한 Top 10의 취약점에 들만큼 위험도가 높다. 주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다. 이 취약점으로 해커는 사용자의 정보를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 하게 만들 수 있다.



XSS의 풀 네임은 크로스 사이트 스크립팅인데 이름답게 자바스크립트를 사용하여 공격하는 경우가 많다. 공격 방법이 단순하고 가장 기초적이지만 많은 웹사이트들이 XSS에 대한 방어 조치를 하지 않아서 공격을 받는 경우가 많다.


XSS는 크게 두 가지 방식으로 나눌 수 있는데 persistent XSS non-persistent XSS로 나눌 수 있다. persistent XSS는 사이트 안에서 게시글, 댓글 등에 스크립트를 삽입해 유저가 스크립트가 저장되어 있는 곳으로 접속을 하면 스크립트가 실행되어 공격하는 방식이다. 이는 DB에 스크립트가 올라간 다음 서버에서 그 스크립트를 불러오는 방식이므로 브라우저에서 막지 못한다. non-persistent XSS는 사이트의 특정 파라미터에서 스크립트를 실행하는 방식이다. 파라미터의 내용을 검증 없이 페이지에 그대로 출력할 때 발생한다. 공격자가 유저에게 메일, 쪽지 등을 보내서 링크 클릭을 유도해서 공격한다.



출처 - 네이버 캐스트 [SQL 인젝션], 나무위키[SQL 삽입, XSS], 위키백과[SQL 삽입, XSS]

'보안해킹' 카테고리의 다른 글

블록체인  (0) 2017.04.28
FIDO (생체 인식)  (0) 2017.04.25
세션 하이재킹 공격 & 부채널 공격  (0) 2017.04.23
허니팟 & 허니넷  (0) 2017.04.22
OWASP 및 모바일 OWASP  (0) 2017.04.20