COCO World

[CS] 웹 브라우저 공격 종류들과 보안책을 알아보자. 본문

CS Store

[CS] 웹 브라우저 공격 종류들과 보안책을 알아보자.

코코월드주인장 2023. 5. 27. 22:13

🌼 웹 브라우저 공격

 

웹 서비스상에서 발생될 수 있는 모든 보안 허점(Security Hole)을 이용해 악의적인 행위를 하는 것으로 웹 서비스를 대상으로 주로 공격하지만 프레임워크(Spring), 웹 어플리케이션 서버 대상으로 공격을 수행할수도 있다.

 

웹 브라우저와 방화벽

 방화벽이 도입되면서 웹 해킹이 더욱 증가했는데 방화벽은 IP, Port기반으로 차단을 수행하고, 흐름을 Inbound, Outbound로 설정하는 보안장비이다. 방화벽 내부에 웹서버만 존재할 경우 Inbound 정책에 HTTP, HTTPS만 허용하고, 그 외의 포트는 차단하게 된다.

Attacker들은 방화벽에서 허용되어있는 웹을 통해 취약점을 찾는다.

 

웹 해킹의 과정

공격 대상 지정  ➠  정보 수집  ➠  취약점 분석  ➠  공격 ➠  결과 도출

 


🌼 웹 브라우저 주요 공격의 종류

  • SQL Injection
  • XSS (Cross Site Script)
    • Stored XSS
    • Reflected XSS
  • CSRF (Cross Site Request Forgery)
  • Command Injection
  • 기타 등

🌼 SQL Injection

서버에서 실행되는 SQL을 악의적으로 이용하는 공격이다.

보안상의 취약점을 이용하여, 기존 SQL에 임의의 SQL문을 주입하고 조작하여 데이터 탈취, 삭제 등 비정상적인 행위를 할 수 있다.

요즘은 대부분 SQL 라이브러리에서 SQL Injection을 방어해주는 체제가 갖춰져 있지만, 프레임워크를 사용하지 않는 PHP, JSP를 사용하던 시절에는 자주 발생하는 사고였다.

 

1. Error based SQL Injection : 논리적 에러를 이용한 SQL Injection

SELECT * FROM Users WHERE id = 'superman' AND password = '123'
                                                ⬇ 
SELECT * FROM Users WHRER id = 'superman' AND password = ' or '1' =1'

: ' or '1' =1'를 이용해 하나라도 참이면 참이되는 or 연산과 함께 실행하여 로그인을 성공시킨다.

일부러 SQL 에러를 발생시켜서 원하는 정보를 취득하는 공격 기법이다. 에러가 발생하면 DB에 대한 정보를 단편적으로 얻을 수 있게 되므로 에러 메세지가 노출되지 않도록 조심해야 한다.

 

2. Union based SQL Injecrion : Union 명령어를 이용한 SQL Injecrion

SELECT * FROM Users WHERE id='superman' AND password = '123'
                                                      ⬇
SELECT * FROM Users WHERE id='superman' UNION SELECT 1, 1 -- AND password = '456'

: password를 모르더라도 id가 superman인 유저의 비밀번호를 알아낼 수 있다,

Union 키워드는 두 개의 쿼리문에 대한 결과를 통합해서 하나의 테이블로 보여주는 키워드이다. 정상적인 쿼리문에 Union 키워드를 사용하여 Injection에 성공하면, 원하는 쿼리문을 실행할 수 있게 된다.

 

3. Blind SQL Injection : 참/거짓 정보를 이용한 SQL Injection

어떤 경우에는 응답의 결과가 항상 동일하여 해당 결과만으로 참과 거짓을 판별할 수 없는 경우가 있다. 이런 경우 시간을 지연시키는 쿼리를  주입하여 응답 시간의 차이로 참과 거짓 여부를 판별한다.

 

대응 및 예방책

  • 웹 서버 내에서의 조치
    • 웹 서버의 오류 정보가 사용자에게 노출되지 않도록 조치
    • 데이터베이스의 접근 권한을 최소화
    • 사용자 입력 폼을 대상으로 특수문자, 특수구분 필터링 규칙 적용
  • 홈페이지 개발 보안 조치
    • 홈페이지 소스코드는 사용자로부터 입력되는 입력값에 대한 검증과 예외처리
    • 입력 값에 정의된 문자 길이를 검증하여 SQL문이 추가 삽입되지 않도록 예외처리
    • 파라미터가 숫자인 경우 isnumeric과 같은 함수를 이용하여 검증
    • 문자인 경우 정규표현식을 이용하여 특수문자를 치환
  • 보안 코드 사용

🌼 XSS : Cross Site Scripting

URL 파라미터에 스크립트를 넣어 서버에 저장하지 않고 그 즉시 스크립트로 만드는 방식이다. 사용자에게 입력 받은 값을 서버에서 되돌려주는 곳에서 발생하며, 악의적인 스크립트와 함께 URL을 사용자에게 누르드록 유도하여 공격한다.

 

1. Reflected XSS

입력을 그대로 브라우저에 출력하는 로직으로 공격하는 기법이며 대표적 예시로는 사용자가 게시물 조회를 요청할 때 서버가 해당 요청에 대하여 조회한 결과를 응답에 출력하며, 편의를 위해 사용자가 조회한 내용을 응답에 포함시키며, 웹브라우저에서 페이지 출력 시 반영되는 결과로 인해 Reflect XSS로 이어질 수 있다.

 

2. Stored XSS

사이트 게시판이나 댓글, 닉네임 등의 형태로 삽입된 스크립트가 데이터베이스에 저장되는 방식으로 예를 들어, 악성 스크립트가 서버 내에 데이터베이스, 파일 등의 형태로 저장되어 있다가 사용자가 게시판 서비스에서 작성된 게시글을 확인할 때 그 게시물에 악성 스크립트가 포함되어 있으면 XSS 공격이 실행된다.

 

대응 및 예방책

  • 입력 데이터 값을 서버에 전달하기 전 프론트에서 검증
  • 출력 값 검증
  • 보안 라이브러리 사용

🌼 CSRF : Cross Site Request Forgery

사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제 등)를 특정 웹 사이트에 요청하는 공격 기법이다. 이 공격을 통해 공격자가 얻을 수 있는 이득은 해당 세션 쿠키를 가진 사람만 사용할 수 있는 기능을 요청할 수 있다는 것이다.

 

대응 및 예방책

  • Referer 검증
  • Security Token 사용(CSRF Token)
  • Double Submit Cookie 검증
  • Spring Security 이용

🌼 Command Injection

사용자가 입력값에 시스템 명령 구문을 이용하여 자신이 의도한 시스템 명령을 삽입하는 공격이다. 관리자 페이지(Apache, Wordpress, FCKeditor Page)를 이용하여 공격하는 경우가 많다.

 

🌼 기타 공격들

1. XPath Injection

XPath는 XML의 요소나 속성을 표현한 값이다. Xpath구문을 삽입하여 XML 구조에 대한 값을 탈취하는 공격이다.

 

2. XXE : XML External Entity

XML 외부 개체를 참조할 경우 XML이 아닌 다른 파일을 불러들이는 공격이다.

 

3. File Upload Vernerability

파일을 업로드하는 영역에 일반 파일이 아닌 악성 파일(웹쉘)을 업로드한다. 웹쉘을 통해 시스템 명령 제어 권한을 탈취할 수 있다.

 

4. File Download Vernerability

지정된 경로가 아닌 경로의 파일을 다운로드하는 공격으로 이를 통해 허용되지 않은 파일을 다운 받을 수 있다. 파일 다운로드 취약점을 이용해 파일 업로드 취약점에도 공격을 실행하는 경우가 많다.

 

5. Parameter Manipulation Vernerability

mypage 등 정보보호 페이지가 파라미터를 통해 정보가 전달된다면 다른값을 임의로 입력하여 다른 사용자의 정보를 열람한다.