본문 바로가기
보안

[보안] 2/18 강의정리 ( 웹 해킹, HTML, CSS, SSS, Web Froxy, HTTP Request, HTTP Response, Web 취약점, SQL Injection Attack, XSS 취약점,CSRF)

by jionee 2021. 2. 18.
SMALL

웹 해킹

Web Service

HTTP

Cookie & Session ID

구글해킹(Google Hacking)

Web 취약점

 

 

HTML

웹 서버에 HTML 문서를 저장하고 있다가 클라이언트가 요청하면 해당 페이지를 전송

클라이언트는 웹 페이지 해석 후 웹 브라우저로 나타냄

이를 정적인 웹 페이지라고 함

정적인 웹 페이지는 변화를 반영하거나 새로운 것을 추가하기에 많은 시간이 걸림

웹 페이지는 바꿀 수 있는 가능성이 매우 낮다는 것이 보안상 장점

 

 

CSS(Client Side Script)

웹 서비스에 사용되는 스크립트

클라이언트 측이 웹 부라우저에 의해 해석 및 적용

서버가 아닌 웹 브라우저에서 해석되어 화면에 적용

웹 서버의 부담을 줄이면서 다양한 기능을 수행할 수 있음

JavaScript(객체 지향 언어), VB Script(주로 ASP와 연동)

 

 

 

SSS(Server Side Script)

CSS에서 받아온 정보를 처리한느 역할

CSS에서 사용자가 어떠한 입력을 하게 되면 해당하는 정보를 SSS에서 처리하고 DB에 저장하거나 삭제

서버에 따라서 다른 언어를 사용하기 떄문에 동작하는 웹 플랫폼이 다르기 때문에 맞춰서 사용

 

 

 

Web Proxy

서버와 클라이언트의 양쪽 역할을 중계 프로그램

- 클라이언트의 Request를 서버에 전송

- 서버로부터의 Response를 클라이언트에 전송

 

 

캐시 서버(Cache Server)

- 프록시 서버의 하나로 캐싱 프록시로 분류

 

 

웹 프록시를 통한 취약점 분석

웹 클라이언트와 웹 서버간에 전달되는 모든 HTTP 패킷을 확인 및 수정 가능

웹의 구조 파악, 취약점 점검, 웹 해킹에는 웹 프록시 툴을 사용

 

 

HTTP

응용 계층 프로토콜

TCP 계열로 80번 포트 사용

WWW 상에서 HTML 문서를 주고 받는 프로토콜

웹 상에서 텍스트, 그래픽, 애니메이션을 보거나 사운드 재생 가능

클라이언트와 서버 사이에 이뤄지는 요청(request) / 응답 (response) 프로토콜

현재 인터넷에서 사용되는 HTTP 버전은 1.0과 1.1

무상태 프로토콜

 

 

HTTP Message Format

Request : 요청 Message (Client - > Server)

Response : 응답 Message (Server -> Client)

 

 

HTTP version

 

 

 

HTTP Requeset

 

POST /form/entry HTTP/1.1

: 메소드 URI 프로토콜 버전

 

 

요청헤더 : 클라이언트의 구성과 선호하는 문서 형식을 지정

 

 

Request Method 종류

서버에 임무를 부여하는 HTTP 메소드

 

HTTP Requeset : Get 방식

가장 일반적인 HTTP Request 형태

요청 데이터의 인수를 웹 브라우저의 URL로 전송함

Request URI로 식별된 리소스를 가져올 수 있도록 요구

 

클라이언트 -> 서버

너가 가지고 있는 것을 갖고 싶어

 

데이터가 주소 입력란에 표시되므로 최사한의 보안도 유지되지 않는 취약한 방식

 

 

 

HTTP Requeset : Post 방식

엔티티를 전송하기 위해 사용

GET으로도 엔티티를 전송할 수 있지만, 자주 사용하지 않고 일반적으로 POST를 사용

 

클라이언트 -> 서버 

이 정보를 너에게 알려 줄게

 

URL에 요청 데이터를 기록하지 않고 HTTP 헤더에 데이터를 젆송

엔티티를 URL로 전송하지 않으므로 다른 사용자가 링크로 해당 페이지를 볼 수 없음

 

 

 

HTTP Requeset : PUT 방식

POST와 유사한 전송 구조를 가짐

파일을 전송하기 위해 사용

Request 중에 포함된 엔티티를 Request URI로 지정한 곳에 보존하도록 요구

홈페이지 변조에 많이 악용되고 있음

 

클라이언트 -> 서버 

이 파일을 줄게

 

 

HTTP Requeset : PUT 방식

POST와 유사한 전송 구조를 가짐

파일을 전송하기 위해 사용

Request 중에 포함된 엔티티를 Request URI로 지정한 곳에 보존하도록 요구

홈페이지 변조에 많이 악용되고 있음

 

클라이언트 -> 서버 

이 파일을 줄게

 

 

HTTP Requeset : Head 방식

GET 방식과 동일

서버 측 데이터를 검색하고 요청하는 데 사용

BODY가 없고 응답코드와 HEAD로만 응답

URI 유효성과 리소스 갱신 시간을 확인하는 목적을 사용

웹 서버 정보 확인, 헬스 체크, 버젼 확인, 최종 수정일자 확인 용도

 

클라이언트 -> 서버 

그 정보를 알려줘 !

 

 

 

HTTP Response

클라이언트의 HTTP Request에 대한 응답 패킷

서버에서 쓰이는 프로토콜 버전, Request에 대한 실행 결과 코드, 간략한 실행 결과 설명문 (OK 등) 내용이 담겨 있음

추가 정보로 전달할 데이터 형식, 길이 등이 MIME 형식으로 표현되어 있으며 헤더 정보 뒤에는 실제 데이터 (HTML 또는 이미지 파일)가 전달

데이터 전달이 끝나면 서버 연결을 끊음

HTTP Response 주요 실행 결과 코드

 

 

 

HTTP Response 실행 결과 응답 코드

 

 

-HTTP Response : 2XX 성공(Success)

Request가 정상으로 처리되면 200K를 보냄

 

- HTTP Response : 204 No Content

Request를 정상적으로 처리했지만 돌려줄 리소스가 없음

Request를 받아서 처리하는데 성공했지만 Response에 엔티티 바디를 포함하지 않음

: 브라우저에서 Request를 보낸 후 204 Response를 수신했어도 표시되어있는 화면은 변하지 않음

클라이언트에 대해 새로운 정보를 보낼 필요가 없는 경우 사용

 

- HTTP Response : 3XX Redircetion

3XX Response는 Request가 정상적으로 처리를 종료하기 위해 브라우저측에서 특별한 처리를 수행해야 함을 나타냄

 

- HTTP Response : 301 Moved Permanetly

현재 URI가 최선의 경로가 아님(북마크를 변경 필요)

Request된 리소스에는 새로운 URI가 부여되어 있기 때문에 새로운 URI를 사용해야 한다는 것을 알림

북마크 하고 있는 경우 Location 헤더 필드에서 가리키고 있는 URI로 북마크 권고

 

- HTTP Response : 302 Found

URI는 잠시 다른 장소로 이동 시 해당 페이지도 이동 시줌

새로운 URI가 할당되어있기 때문에 그 URI를 사용하도록 권고

301과 비슷하지만 302는 일시적인 이동

 

- HTTP Response : 4XX 클라이언트 에러

 

 

HTTP 단점

평문(암호화 X) 통신이기 때문에 도청 가능

통신 상태를 확인하지 않기 때문에 위장 가능

완전성(정보 정확성)을 증명할 수 없기 때문에 변조 가능

 

HTTP + 암호화 + 인증 + 완전성 보호 = HTTPS

 

 

 

Cookie & Session ID

Cookie를 위한 헤더 필더

Cookie는 유저 식별과 상태 관리에 사용되고 있는 기능

- Set-Cookie : 상태 관리 개시를 위한 쿠키 정보

- Cookie : 서버에서 수신한 쿠키 정보

 

 

 

Set-Cookie

Set-Cookie : status-enable; expire=Tue,05 Jul 2020 07:26:31 GMT; Path=/; domaie=.test.com;

NAME=VALUE 쿠키에 부여된 이름과 값
Expires=DATE 쿠키 유효기간(지정되지 않은 경우 브라우저 닫을 떄 까지)
Path = PATH 쿠키 적용 대상이 도는 서버 상의 디렉터리
Domain = 도메인명 쿠키 적용 대상이 도는 도메인명(지정되지 않을 경우 쿠키를 생성한 서버의 도메인)
Seccure HTTPS로 통신하고 있는 경우에만 쿠키 송신
HttpOnly 쿠키를 JAVAScript에서 액세스 하지 못하도록 제한

 

 

세션 ID

- 클라이언트가 웹서버에 요청하여 처음 접속하면 JSP(혹은 ASP) 엔진은

요청한 클라이언트에 대해 유일한 ID를 부여하는데 이ID를 세션이라 부름

- 사용자 PC에서 쿠키 값을 조작할 수 있다는 단점을 보안하기 위한 것

웹 애플리케이션 세션 ID 변수명
ns ASPSESSIONID
TOMCAT JSESESSIONID
PHP PHPSESSIONID
Cold Fusion CFID, CFTOKEN
기타 JWSESSIONID, JServerSESSIONID, SESSIONID, SID, Session_ID

 

 

 

 

웹의 주요 취약점

국제 웹 보안 표준 기구 (OWASP : The Open Web Application Secuity Project) 에서 각 분야별 상위 열 가지 주요 취약점을 발표

- 웹 애플리케이션 보안에 대한 정보를 공유하고 체계를 세우는 자발적인 온라인 정보 공유 사이트

- 2001년 12월 마크 커페이와 데니스 그로브스에 의해 탄생

- 2004년 'OWASP Top 10'이라는 웹 애플리케이션 상의 10대 주요 취약점 발표

- 우리나라는 2011년 1월 OWASP Korea Chapter 이사회가 조직되어 활동 전개

owasp.org/

 

OWASP Foundation | Open Source Foundation for Application Security

OWASP Foundation, the Open Source Foundation for Application Security on the main website for The OWASP Foundation. OWASP is a nonprofit foundation that works to improve the security of software.

owasp.org

 

 

 

명령 삽입 취약점(Injection) 

- 전송 받는 인수에 포함된, 특정 명령을 실행하는 코드를 적절히 필터링하지 못하면

삽입 공격에 대한 취약점이 발생

- 웹 서버에서 데이터베이스로 전송되는 SQL 쿼리에는 아이디, 패스워드, 검색어 등 여러 가지 인수가 사용됨

- SQL 삽입 공격은 이 인수에 추가 실행 코드를 넣는 것

 

 

SQL Injection Attack

 

 

 

인증 및 세션 관리 취약점

Broken Authentication and Session Management

웹 애플리케이션이 사용자에 대한 인증 및 세션 처리를 잘못했을 때 발생

 

1) 취약한 패스워드 설정

- 관리자 패스워드를 변경하는 인터페이스가 별도로 만들어져 있지 않아

사용자는 개발자가 처음 설정한 패스워드를 그대로 쓰는 경우가 많음

- 웹에서 admin/admin과 같이 취약한 패스워드를 자주 발견할 수 있음

 

howsecureismypassword.net/

 

How Secure Is My Password?

 

howsecureismypassword.net

내 패스워드 보안 안정성 확인하기 

 

 

2) 사용자 데이터를 이용한 인증

- 웹 서버는 공격자가 새로운 페이지에 접근할 때 수신한 인증 허용 값을 전달받으면서 해당 세션이 유효한 인증인지 확인

- 공격자가 전달해주는 값(아이디 및 사용자 고유번호 등)을 이용해 해당 인증의 소유자 구분

- 공격자는 세션 인증 값은 그대로 사용하고 UserNo 값만 변경함으로써 다른 계정으로 로그인한 것처럼 웹 서비스를 이용할 수 있음

 

 

XSS 취약점 (Cross-Site Scripting)

- 공격자가 작성한 스크립트가 다른 사용자에게 전달되는 것

- 다른 사용자의 웹 브라우저 안에서 적절한 검증 없이 실행되므로 사용자 새션 탈취, 웹 사이트 변조, 악의적인 사이트로 사용자 이동시킬 수 있음

- 해당 웹 사이트를 방문하는 사용자를 공격하는 기법

- 해당 웹 사이트 방문자의 쿠키나 세션을 추출할 수 있고, 방문자를 악성 코드가 포함된 사이트로 리다이렉트 할 수도있음

 

 

 

 

 

CSRF(Cross Site Request Forgery)

- 특정 사용자를 대상으로 하지 않고, 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게

공격자가 의도한 행(수정, 삭제, 등록, 송금 등)를 하게 만드는 공격

- 요청 변조

: 공격자가 입력한 스크립트를 웹 사이트 방문자가 실행함으로써 해당 방문자의 권한으로 스크립트가 실행되도록 만드는 방식

 

 

 

취약한 접근 제어(Broken Access Control)

인증된 사용자가 수행할 수 있는 것에 대한 제한을 제대로 적용하지 않은 것을 의미

공격자는 이를 악용해 사용자 계정 접근, 중요 파일 보기, 사용자 데이터 수정, 접근 권한 변경 등과 같이 권한 없는 기능을 사용하거나 데이터에 접근할 수 있음

 

 

보안 설정 오류

애플리케이션을 설치할 때 생기는 기본 페이지를 삭제하지 않고 그냥 방치하거나 최신 보안 패치를 업데이트 하지 않는 경우에 발생

디렉터리 리스팅과 같은 애플리케이션 설정 오류도 포함

 

 

민감한 데이터 노출

신용카드 정보, 개인 식별 정보, 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않을 때 발생

 

 

기능 수준의 접근 통제 누락

애플리케이션에서 각 기능에 접근하는 서버에 동이한 접근 통제 검사를 수행할 경우 적절한 확인을 하지않으면 공격자는 권한없이 요청 위조 가능

 

 

알려진 취약점이 있는 컴포넌트 사용

취약한 컴포넌트를 악용해 공격하면 데이터 손실이나 서버 장악 문제가 발생할 수 있음

 

검증되지 않은 리다이렉트 및 포워드

목적 페이지를 결정할 때 신뢰되지 않은 데이터를 사용하거나 해당 사이트에 대한 적절한 검증이 없을 경우 피싱 사이트나 악성 코드가 포함된 사이트로 리다이렉트하거나 권한 없는 페이지로의 접근을 위해 포워드를 사용할 수 있음

댓글