웹 해킹은 웹 서버나 Application의 보안 취약점을 이용한 비윤리적 또는 불법적 행동을 말합니다.
웹해킹이란?
- 웹 해킹은 보안 취약점을 이용한 비인가된 방식으로 웹 서버를 접근하거나 데이터를 조작하는 행위.
- 웹 사이트를 변조, 서버 제어권을 획득 등 다양한 목적을 가지고 하는 행위.
웹 해킹 기법들
웹 해킹 기법에는 여러가지 방법이 있지만 가장 일반적으로 사용되는 몇 가지 기법이 있습니다.
- SQL Injection: 데이터베이스 쿼리를 조작하여 불법적인 데이터 액세스나 조작을 시도하는 기법.
- Cross-site Scripting (XSS): 웹 애플리케이션에서 입력 검증이 미흡할 때, 악의적인 스크립트를 삽입하여 다른 사용자의 브라우저에서 실행되게 하는 기법입니다.
- Cross-site Request Forgery(CSRF): 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위(예: 비밀번호 변경, 이메일 주소 변경 등)를 웹 애플리케이션에 요청하도록 만드는 공격.
- Session Hijacking: 사용자의 세션 토큰을 가로채서 사용자가 인증한 상태를 도용하는 기법.
- File Inclusion: 웹 애플리케이션에서 외부 파일을 포함 시키는 기능의 취약점을 이용하여 공격자가 지정한 파일을 실행하거나 포함 시키는 기법.
SQL Injection
SQL이란?
- SQL(Structured Query Language: 구조적 질의 언어)는 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어
SQL Injection이란?
- 응용 프로그램 보안 상의 허점을 의도적으로 이용하는 공격
- SQL Injection은 데이터베이스 기반의 웹 애플리케이션에서 가장 흔하게 발견되는 보안 취약점.
- 악의적인 SQL문을 주입하여 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 공격.
- SQL Injection은 애플리케이션의 사용자 입력이 적절히 필터링이 처리되지 않을 때 발생한다.
1 ) Error based SQL Injection
가장 대중적인 기법
- 로그인 공격 예시
로그인 페이지가 있고, 로그인을 할 때 USER_ID와 INPUT_PW를 입력받아 로그인이 진행된다고 했을 때
- 기본 쿼리문
SELECT user FROM Users WHERE uid = 'USRE_ID' AND upw = 'INPUT_PW';
- 공격 예시 : 로그인 창의 ID 부분에 'OR 1 = 1 --를 입력합니다.
SELECT user FROM Users WHERE uid = '' OR 1 = 1 --USRE_ID' AND upw = 'INPUT_PW';
- WHERE절에 있는 싱글 쿼터를 닫아주게 되고,
- OR 1 = 1로 모두 참을 만들어 준 후
- --를 이용해 그 뒤의 모든 쿼리문을 주석처리해주게 됩니다.
결과적으로 Users 테이블에 있는 모든 정보를 조회하게 되며 가장 먼저 만들어진 계정(보통 관리자 계정)으로 로그인할 수 있게 되어 관리자 계정을 탈취하게 됩니다.
2 ) Union base SQL Injection
UNION 키워드를 사용하여 원래의 요청에 추가 정보를 얻는 공격 기법으로 UNION 하려는 두 테이블의 컬럼 수와 데이터 형식이 같아야 합니다. ORDER BY 절이나 HAVING을 이용한 오류 메시지를 통해 컬럼의 수를 유추할 수 있습니다.
- 게시글 조회 공격 예시
게시판이 있고, 게시글을 검색할 때 INPUT을 받아 검색이 진행된다고 했을 때
- 기본 쿼리문
SELECT * FROM Board WHERE title LIKE '%INPUT%' OR contents '%INPUT%'
- 공격 예시 : 검색 창에 'UNION SELECT null, id, passwd FROM User를 -- 입력합니다.
SELECT * FROM Board WHERE title LIKE '%' UNION SELECT null, id, passwd FROM Users --%' OR contents '%INPUT%'
사전 공격을 통해 컬럼명과 테이블명을 얻은 후 사용자의 ID와 PW를 요청하는 쿼리문을 함께 입력하게 되면 사용자의 개인 정보가 게시글과 함께 보이게 됩니다.