웹 해킹(Web hacking) 개요
정의 | 웹 사이트의 취약점을 공격하는 기술적 위협으로, 웹 페이지를 통하여 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴와 같은 행위 |
개념도 | ![]() |
유형 | 웹 엔진 취약점을 이용한 해킹과 웹 애플리케이션의 취약점을 이용한 해킹, 각종 웹 서버 및 미들웨어 기본 제공 샘플 파일을 이용한 해킹 등 |
해킹기법 | -웹 애플리케이션을 통해서 발생되는 해킹이 주로 일어나는데 이를 OWASP에서 10대 웹 애플리케이션의 취약점을 발표 -가장 빈도가 많이 발생하고, 보안상 영향을 크게 줄 수 있는 것들로는 SQL 삽입, XSS, CSRF 웹 셸 업로드 등 |
해킹대상 | 웹서버, 웹어플리케이션, 웹사용자 |
공격절차 | 공격대상 선정 > 정보수집 > 취약점 분석 > 공격 > 결과도출 |
주요 웹해킹 기법
인젝션(Injection)
정의 | 응용 프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 데이터(예: SQL문 등에 사용되는 데이터)를 인터프리터(Interpreter)에게 전송하여 정상적인 프로그램(예: Database)을 비정상적으로 조작하는 공격 기법 |
공격방법 | ![]() |
공격유형 | SQL Injection, Blind SQL Injection, Mass SQL Injection |
SQL-Injection
정의 | 데이터베이스로 전달되는 SQL Query를 변경시키기 위해 Web Application에서 입력 받은 파라메터를 변조 후 삽입하여 비정상적인 데이터베이스 접근을 시도하거나 쿼리를 재구성하여 원하는 정보를 열람하는 해킹 기법 | |
공격방법 | ![]() |
|
공격유형 | 인증우회 | 인증을 처리하는 모듈이 입력 값에 대해 적절히 검사하지 않았을 때, 공격자는 비정상적인 SQL Query를 삽입할 수 있고 이를 이용해 사용중인 데이터베이스에 영향 |
권한상승 | 공격자가 DB의 시스템 권한을 획득하여 SQL에서 기본적으로 제공하는 확장 프로시저를 이용하여 악성코드를 삽입하거나 DB를 변경하는 등의 여러 가지 시스템 명령어를 실행시켜 악용 | |
시스템 오류 악용 | 에러 메시지는 공격자에게 유용한 정보를 제공하여 쉽게 DB 열람 및 시스템 명령어를 수행할 수 있음 | |
DB조작 | Error-Based Injection, Blind SQL Injection 등의 기법을 통해 주요 데이터의 조회, 테이블 생성 등 데이터베이스에 대한 다양한 공격 수행 | |
대응방법 | 바인딩 매개변수 | Stored Procedure, Base Class 사용(PreparedStatement) |
사용자 입력값 검증 | 사용자로부터 입력될 수 있는 모든 값에 대하여 Injection을 발생시킬 수 있는 위험한 문자가 포함되어 있는지 여부를 체크 | |
Servlet Filter 기능 적용 | Request(처리전), Response(처리후)에 대해 공통적으로 적용되는 기능 구현 가능(JAVA 적용) |
Blind SQL-Injection
정의 | 악의적인 문자열 삽입 대신 쿼리결과로 나오는 참, 거짓에 따라 서버의 반응만으로 DB의 정보를 취득하는 공격기법 | |
공격방법 | ![]() |
|
공격유형 | 추론기법 | 한번에 하나씩 SQL 구문을 사용하여 데이터베이스에 쿼리하여 정보를 추출하는 공격 시간기반 기법: 긴 쿼리나 시간함수 사용 시간지연 이용 응답기반 기법: 기존 쿼리에 다른 구분을 추가하여 추론 |
대체/외부대역채널 기법 | 사용 가능한 외부 대역 채널을 이용하여 방대한 양의 정보를 직접 추출하는 방식 |
Mass SQL-Injection
정의 | SQL Injection공격에서 확장된 개념으로 CAST함수를 이용해 쿼리문을 인코딩하여 탐지 우회를 시도하고, DB값을 변조 시 악성스크립트를 삽입하는 대량의 DB값 변조 공격기법 | |
공격방법 | ![]() |
|
순서 | 설명 | |
1) 준비 | 공격 시작 | |
2) 업데이트 | 스크립트 업데이트 | |
3) 열람 | 감염페이지 열람 | |
4) 실행 | 스크립트 실행 | |
5) 삽입 | Iframe 삽입 | |
6) 실행 | 악성 프로그램 다운로드 및 실행(x.exe) | |
대응방법 | Query길이제한 | 디클리어 구문을 이용한 공격을 차단하기 위해서는 웹 소스상에서 쿼리스트링에 대한 길이제한 적용 |
소스 수정 | SQL-Injection 취약점이 있으면 중 장기 대책으로 이에 대한 소스코드에 수정 권고 | |
필터링 | 입력되는 부분의 문자를 모두 제한하여 예상되는 문자 이외의 문자가 들어오면 필터링하는 방법으로 수정 | |
DB백업 | 정기적인 DB 및 시스템 백업 |
XSS(Cross Site Script)
정의 | 게시판이나 웹 메일 등에서 악의적인 스크립트를 삽입하여 비정상 페이지를 보이도록 함으로써 사용방해나 쿠키 및 기타정보를 특정사이트로 전송하는 해킹기법 | |
공격방법 | ![]() |
|
순서 | 설명 | |
1) 코드작성 | - 임의의 XSS 취약점이 존재하는 서버에 XSS 코드를 작성하여 저장 - 일반적으로 공격자는 임의의 사용자 또는 특정인이 이용하는 게시판을 이용 |
|
2) 코드접근 | - 해당 웹 서비스 사용자가 공격자가 작성해 놓은 XSS 코드에 접근 | |
3) 코드전달 | - 웹 서버는 사용자가 접근한 XSS 코드가 포함된 게시판의 글을 사용자에게 전달 | |
4) 코드실행 | - 사용자의 시스템에서 XSS 코드가 실행 | |
5) 실행결과 전달 | - XSS 코드가 실행된 결과가 공격자에게 전달되고 공격자는 결과를 가지고 웹 서버에서 2차 해킹 시도 | |
공격유형 | Stored XSS | - 웹 서버를 매개로 웹 서버에 저장된 스크립트가 피해자의 시스템에서 실행되도록 하는 공격 방식 - 공격자는 악성 스크립트를 XSS에 취약한 웹 서버에 저장(예. 웹 게시판, 방명록 등) |
Reflected XSS | - 클라이언트에서 제공한 데이터가 서버의 응답 페이지에 바로 포함되어 돌려지는 것을 악용하는 공격 방식 - 주로 스크립트가 포함된 링크의 클릭을 유도하고 악성 스크립트는 서버에 저장되지 않음 - 공격자는 악성 스크립트를 포함한 URL을 E-Mail이나 메신저를 이용하여 victim에게 노출시킴 |
|
DOM XSS | - 공격자는 DOM 기반의 XSS취약점이 있는 브라우저를 대상으로 URL을 이메일을 통해 발송하여 피해자가 URL 클릭시 공격 피해 발생 페이지 자체는 변하지 않으나 페이지에 포함된 브라우저측 코드가 DOM 환경에서 악성코드로 실행됨 |
|
대응방법 | 취약점 | 대응방안 |
Cookie 정보 추출 | -중요정보는 쿠키에 저장하지 않음(예: 개인정보, 계정정보 등) -정기적 쿠기 정보 삭제 |
|
특수문자 삽입 | -특수문자 등록을 방지하기 위해 특수문자 필터링 -사용자 입력 가능 문자 이외에는 모두 필터링 |
|
HTML tag | -HTML tag 사용 금지 특히, ‘<’문자 사용시 ‘<’로 벼환 처리 | |
Script 공격 | -javascript로 시작하는 문자열은 모두 문자열 변환 처리 -악성 스크립트의 주기적 모니터링 |
|
Link 노출 | -해당 링크를 복사하여 직접 접근하는 방법 활용 | |
Browser 취약점 | -최신 보안 패치를 정기적으로 수행하고 취약점 공격 대응 -브라우저 내 개인정보 보안등급 관리 기준을 상향 조정 |
CSRF(Cross Site Request Forgery)
정의 | 공격자가 사용자의 Cookie 값이나 Session정보를 의도한 사이트로 보내거나 특정한 동작을 유발하는 스크립트를 글에 삽입하여 사용자가 게시물 등을 클릭할 경우 공격자가 원하는 동작이 실행되는 공격 방식 | |
공격방법 | ![]() |
|
순서 | 설명 | |
1) CSRF게시 | CSRF 스크립트 게시물에 게시 | |
2) 요청 | CSRF Script 포함 페이지 요청 | |
3) 응답 | CSRF Script 포함 페이지 응답 수신 | |
4) 공격수행 | CSRF에 의해 Victim의 권한으로 사용 가능한 서비스 요청 | |
대응방법 | 취약점 | 대응방안 |
쿠키 가로 채기 | - 입력값 검사: 웹 페이지의 입력폼에 사용자가 입력하는 값을 검사하여 올바르지 않은 값에 대해서 reject 시킴 - 쿠키사용 제고: 쿠키에 중요정보 미포함 |
|
세션 변조 사용 | - Query String 검사 - 민감한 데이터나 값에 대한 트랜잭션을 위하여 재인증이나 트랜잭션 서명요청(GET 요청 사용 금지) |
|
부정클릭 사용 | - 유일한 토큰 사용 | |
일종의 DRDoS | - 관련 취약점 제거 |
Watering Hole
정의 | 공격 대상이 방문할 가능성이 있는 합법적 웹사이트를 미리 감염시킨 뒤 잠복하면서 피해자의 컴퓨터에 악성코드를 추가로 설치하는 공격 기법 | |
공격방법 | ![]() |
|
순서 | 설명 | |
1) 준비 | 원격 제어형 악성 코드 제작 및 공격자가 웹사이트를 변조하고 악성코드 삽입 | |
2) 방문 | 평상시에 일반적으로 항상 참조하는 웹사이트 방문 | |
3) 유포 | 특정IP(발신지)에서 접속에 대해서만 악성코드 유포 | |
4) 감염 | 주요 브라우저, 자바프로그램 취약성을 이용한 바이러스 감염 성공 | |
5) 침투 | 공격자가 허용(설정)한 서버로의 통신 성립 | |
대응방법 | APP최신상태 유지 | 기존의 잘 알려진 브라우저나 자바 프로그램 등을 최신 버전으로 유지 |
보안제품 패치 | 새로운 악성코드 대응 기술을 적용한 백신의 최신 엔진 및 최신 업데이트를 적용 | |
가시성 확보 | 감염 확산을 방지하고 피해를 최소화하기 위해 악성코드 출현 이후 이에 대한 조기 발견 및 신속한 대응 |
'메가노트 > 토픽과제(정리)' 카테고리의 다른 글
시큐어코딩(이재용) (0) | 2022.10.01 |
---|---|
디지털 포렌식(홍진택) (0) | 2022.10.01 |
DDOS 공격(문경숙) (0) | 2022.10.01 |
APT(안혜진) (0) | 2022.10.01 |
블록 암호 모드(김도현) (0) | 2022.09.28 |