Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- vfr video
- kotlin
- 깡돼후
- 자원부족
- 겨울 부산
- VARCHAR (1)
- PersistenceContext
- preemption #
- 코루틴 빌더
- table not found
- 티스토리챌린지
- Value too long for column
- 오블완
- Spring Batch
- pytest
- taint
- JanusWebRTCGateway
- 개성국밥
- k8s #kubernetes #쿠버네티스
- JanusWebRTCServer
- 코루틴 컨텍스트
- PytestPluginManager
- terminal
- python
- mp4fpsmod
- tolerated
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- 달인막창
- JanusWebRTC
- JanusGateway
Archives
너와 나의 스토리
Web Hacking 본문
반응형
웹의 기본 개념
웹 사이트/애플리케이션의 주요 컴포넌트
- 사용자
- 마우스 클릭이나 키보드 입력 등을 이용해서 웹 프레임워크와 상호작용
- 브라우저
- 웹 서버에 정보를 제공 및 제공 받음 - 통신 단말의 역할
- 서버의 데이터(html, css, js, media file 등)를 해석하고, 이를 사용자가 실제로 볼 수 있도록 처리
- 키보드, 마우스, 터치스크린 등의 입력 장치를 거쳐 전달된 사용자 인터렉션을 처리
- 웹 서버
- 백엔드
브라우저와 웹 서버 간의 통신
- HTTP 또는 HTTPS 프로토콜을 이용하여 통신
- HTTP 프로토콜로 전송되는 데이터는 쉽게 감청 및 도청될 수 있다.
- HTTPS는 HTTP보다 보안성 있는 통신을 제공
- 보안 계층인 SSL/TLS 추가되어 있음
- 암호화된 통신을 수행하여 데이터를 감청당하더라고 공격자가 내용을 알기 쉽지 않다.
웹 서버
- 브라우저의 요청 사항을 처리하는 일에 중점을 둔다
- 어떤 동작을 수행할지 결정하기 위해 HTTP 헤더 뿐만 아니라 URL을 사용한다
- 서버 측 스크립트와 함께 동작한다
백엔드 서비스
- 웹 서버의 백그라운드에서 실행되는 서비스
- 브라우저에 대한 응답을 생성하기 위해 사용되는 데이터를 제공
- 흔히 사용되는 백엔드 서비스로는 데이터베이스가 있다
- DB나 다른 백엔드 서비스의 정보를 필요로 하는 요청이 오면 서버 측 스크립트는 DB에 접속해서 정보를 가져온 다음, 이 정보를 적당한 형식으로 바꿔 브라우저로 보낸다
Web Hacking
Web Hacking 종류
- Injecting Malicious Data
- 웹 어플리케이션에 조작된 데이터를 강제로 입력시켜 공격하는 것
- Exploiting Unchecked Input
- 웹 서버가 정상 입력으로 간주하게 되어서, 백엔드 서비스 등에 2차 피해를 일으키는 공격
Injecting Malicious Data
- Parameter Tampering
- 웹 어플리케이션에서 사용하는 Parameter를 강제로 입력하여, 애플리케이션의 의도대로 동작하지 않게 하는 공격
- 브라우저가 웹 서버로 데이터를 요청하는 과정에서 데이터를 변조하기 위해서는 대표적으로 Web proxy 프로그램을 사용할 수 있다
- 예: HTML 코드에서 변수를 통해 값을 가져오고, Java 코드에서 이 변수를 이용하는 경우, proxy를 이용해서 해당 파라미터에 임의의 값을 넣어 서버가 작동하게끔 할 수 있다.
- URL Tampering
- URL로 중요한 데이터를 보내는 경우, 이를 조작하여 공격자의 의도대로 동작을 바꾸는 공격 방식
- 예: URL이 "http://~~/ amount=1000"일 때, 빨간 부분을 임의로 변경할 수 있음
- URL로 중요한 데이터를 보내는 경우, 이를 조작하여 공격자의 의도대로 동작을 바꾸는 공격 방식
- Hidden Field Manipulating
- 공격자가 Hidden Tag를 이용하여 값을 웹 어플리케이션으로 전달하는 방법을 이용하는 공격
- HTML 코드는 클라이언트 측에서 실행되고, 브라우저에서 view를 그려낸 후, form에 작성된 데이터가 서버로 전송되기까지 input tag가 hidden일지라도 쉽게 바꿀 수 있다
- 간단하게 브라우저 내의 개발자 도구에서 hidden input tag를 찾고 값을 바꾸어 변경할 수도 있음
- 예: HTML 코드에서 "<input type="hidden" name="price" value="10">"일 때, 빨간 부분을 임의로 변경할 수 있음
- HTTP Header Manipulation
- 웹 어플리케이션이애플리케이션이 HTTP 헤더의 정보를 이용할 때, 이를 조작하여 웹 애플리케이션이 오작동하도록 유인하는 공격 방식
- 예를 들어, A 사이트에서 온 요청이면 처리하고, 아니면 거부하는 코드가 있을 경우, HTTP Request 헤더의 Referer 필드를 변경하여 보내 우회가 가능
- Cookie Poisoning
- 공격자가 Cookie를 조작하여 결과를 원하는 대로 변경하는 공격
- Session ID가 단순하면 당하기 쉬움
- Excutable File Upload
- 웹 어플리케이션 서버에서 실행될 수 있는 파일(php, jsp, asp)을 업로드하여 실행시키는 공격 방식
- 대처 방법:
- 사용자가 올린 파일에는 실행 권한 주지 않기
- 사용자가 올린 파일을 통해 passthru()와 같은 시스템 함수가 실행되지 않도록 필터링하기
Exploiting Unchecked Input
- Cross-site Scripting(XSS)
- 사이트를 넘어 스크립트를 실행하는 공격을 지칭
- 웹 서버를 공격하는 방식이 아닌 사이트를 통해 다른 사용자를 공격하는 것
- 예: 게시판과 같이 동적으로 생성되는 페이지에 조작된 코드를 넣어, Cross-site Scripting이 취약한 사이트(게시판)에 업로드함. 다른 사용자들이 이 게시물을 통해 스크립트를 실행하게 되고, 자신의 쿠키 정보가 특정 사이트로 전송될 수 있다.
- SQL Injection
- 대표적인 웹 해킹 방법 중 하나
- 사용자의 입력이 백엔드 DB에 바로 전달될 때, 입력에 쿼리문을 넣어 DB를 조작할 수 있는 치명적인 공격 방식
- 예: 서버에서 로그인 요청에 대한 인증을 할 때, where 절에 id와 pw를 넣어 DB를 조회하는 쿼리문을 사용 한다고 하자. 공격자는 이 쿼리문에서 where 절에 id만 선택하는 것으로 수정하면, 특정 사용자의 id만 알아도 로그인할 수 있다.
- Path Traversal
- 웹 페이지에서 전달 받은 인자를 그대로 Path로 사용할 때, 해당 값을 조작하여 원하는 파일에 접근하는 공격 방식
- URL 조작
- Command Injection
- 웹 어플리케이션에서 사용자의 입력을 직접적인 Shell 명령으로 이용할 때, 이를 조작하여 원하는 명령을 실행하는 공격 방식
- 위에 실행 파일 업로드하는 방식이랑 비슷한 거 아님?
- Command Injection 공격은 ls라는 명령을 통해 etc 디렉터리를 정상적으로 조회해주고, 그 후 세미콜론(;)을 이용해서 공격자의 의도가 포함된 명령어를 덧붙이는 방식
- 즉, 우선은 정상적으로 작동 시킨 후에, 원하는 대로 수행되도록 하게 함.
- Excutable File Upload는 파일 실행되는 순간, 바로 원하는 대로 수행하도록 함.
- 예: http://~~/ListFile.php?path="/etc/;rm -rf /*"
WebGoat
출처:
- [Cryptography and Network Security: Principles and Practices]
- ISLAB 강의 자료
반응형
'Computer Security' 카테고리의 다른 글
Group, Finite Fields, Polynomial GCD, 다항식을 bit string으로 계산 (0) | 2020.10.23 |
---|---|
페르마(Fermat), 오일러(Euler) 정리 / Primality test - Miller-Rabin Algorithm 설명 및 Python 코드 구현 (4) | 2020.10.23 |
역원 구하기 - Euclidean Algorithm / Extended Euclidean Algorithm (0) | 2020.10.22 |
[컴퓨터 보안] 정수론 기초 - Divisibiliy, GCD, Congruences, Modular, 역원 (2) | 2020.10.22 |
[컴퓨터 공학] 용어 설명 및 최근 경향 - EPP/EDR/AI (0) | 2020.09.28 |
Comments