[Web] Server-side
Wargame/DreamHack

[Web] Server-side

 아직 저는 배우는 입장으로서 DreamHack에서 공부한 내용을 정리하려 합니다

틀린 내용이 있다면 알려주세요.... :D

 

 

시작하겠슴다!

 

- What Is Server-side ? 

 

Server - side 취약점을 공부하기 전에 클라이언트가 요청한 정보를

서버가 어떤 방식으로 처리하는것을 간단히 살펴보겠습니다.

How To Server is Action

1. 사용자가 요청 한 데이터를 해석, 처리 후 사용자에게 응답

 

2. 그 과정에서 데이터베이스와 같은 서버의 자원을 사용해 처리하기도 함

 

3. 이러한 과정에서 사용자의 요청 데이터의 의해 Server - side라는 취약점 발생

 

또한 HTTP Request를 보낼 때는 위의 사진처럼 데이터를 조작하여

전송해 서버의 취약점을 알아내기도 한다.

 

한마디로 Server - side 취약점은 웹을 통해 서버를 대상으로 공격을 시도할 수 있음

 

 

- Server - side 취약점의 종류?

 

🙏 Injection (인젝션)

 

: 이름 뜻 그대로 주입, 삽입을 행하는데 주로 공격자가 신뢰할 수 없는 입력을 프로그램에 주입하도록 하는 공격

 

 

👋 File vulnerability 

 

: 서버의 파일 시스템에 사용자가 원하는 행위를 할 수 있을 때 생기는 취약점

 

 

🤙 Business Logic Vulnerability (비즈니스 로직 취약점)

 

: 위 취약점과는 달리 정상적인 흐름을 악용하는 것 의미

 

🙌 Language specific Vulnerability 

 

:  웹 어플리케이션에서 사용하는 언어 (PHP, Python, NodeJS)의 특성으로  인해 발생하는 취약점

 

🤝 Misconfiguration

 

: 잘못된 설정으로 인해 발생하는 취약점

 

 

- What Is Injection?

인젝션은 위에도 말했듯 주입, 삽입을 의미한다.

변조된 입력을 주입하여 의도한 행위를 변질시켜 의도하지 않은 행위를 하게 만듬

 

1. SQL Injection

2. Command Injection

3. Server Side Template Injection (SSTI)

4. Path Traversal

5. Server Side Request Forgery

 

 

위는 Injection의 종류이다

 

참 많다.... :D

 

하나하나 세세히 정리를 하면 너무 글이 방대해질거 같아

간단히 하나씩 정리하겠습니다

 

- 1. SQL injection

 

: SQL 요청을 사용할 때 공격자의 입력 값이 정상적인 요청에 영향을 주는 취약점

 

- 2. Command Injection

 

: OS Command를 사용 시 사용자의 입력 데이터에 의해 실행되는 Command를 변조할 수 있는 취약점

 

- 3. Server Side Template Injection (SSTI)

 

: 템플릿 변환 도중 사용자의 입력 데이터가 템플릿으로 사용되어 발생하는 취약점 

 

※ Template가 뭔지 잘 모르겠어서 열심히 구글링을 해본 결과 말 그대로 웹의 틀을 잡아준다는데 맞나요..?

    아시는 분은 댓글 부탁드립니다 :D

 

- 4. Path Traversal

 

: URL / File Path를 사용시에 사용자의 입력 데이터에 의해 임의의 경로로 접근

 

 

- 5. Server Side Request Forgery

 

: 공격자가 서버에서 변조된 요청을 보낼 수 있는 취약점 

 

 

자세한 내용은 제가 완벽하게 개념을 이해했을때 

작성해보도록 하겠슴니다.. 죄송합니다...😢

 

 

- What is File Vulnerability ?

 

: 최근 웹 어플리케이션에서는 글만으로는 정보 전달이 힘든 경우가 빈번

 

 -> 이미지, 문서를 다운로드 하고 업로드 할 수 있는 기능 구현

 

따라서 File Vuinerability는 파일 업로드, 다운로드에서의 취약점을 의미합니다.

 

1. 파일 업로드 취약점

 

2. 파일 다운로드 취약점

 

 

- 1. 파일 업로드 취약점

 

: 파일 업로드 취약점은 정말 단순한데서 발생을 합니다. 사용자의 파일이 서버의 파일 시스템에 저장되어 

  처리된다는 이유로 취약점이 발생할 수 있습니다.

정상적이지 못한 파일 업로드

 

위 사진을 보면 filename에 ../hack.py라고 되어있다.

 

../ 은 상위 디렉터리에 갈 수 있으므로 개발자가 원했던 위치가 아닌 

위치에 파일을 저장할 수 있다.

 

 

CGI(Common Gateway Interface)

사용자의 요청을 받은 서버가 동적인 페이지를 구성하기 위해 엔진에 요청을 보내고

엔진이 처리한 결과를 서버에 반환하는 기능

 

WebShell(웹셀)

웹 어플리케이션 언어에 내장된 OS 명령어 등을 사용할 수 있으며,

해당 서버의 쉘을 웹을 통해 사용하는 악성코드

 

- 2. 파일 다운로드 취약점

 

: 파일 취약점은 위에서 말했던 Path Traversal을 이용해 uploads 경로보다 더 상위 경로에 존재하는

 시스템 파일, 설정 파일과 같은 중요한 정보들을 다운로드할 수 있습니다.

 

 

정상적인 파일 다운로드 예시

 

불법적인 파일 다운로드 예시

 

- What is Business Logic Vulnerability?

 

일단 Business Logic Vulnerability 취약점을 말하기 전에

Business Logic에 대해 알아보겠습니다.

 

Business logic(비즈니스 로직)

 

규칙에 따라 데이터를 생성, 표시, 저장, 변경하는 로직, 알고리즘 등을 말한다.

 

 

 

Business Logic Vulneravility(비즈니스 로직 취약점)

 

정상적인 비즈니스 로직을 악용하는 것을 의미

위에 알아봤던 2가지 취약점은 서버의 시스템 상에서 악영향을

미치는 공격을 수행, 하지만 비즈니스 로직 취약점은 

서비스의 기능에서 적용되어야 할 로직이 없거나 잘못 설계된 경우 발생한다.

 

비즈니스 로직 예시

 

만약 저 로직에서 3번 로직이 누락된다면 어떤 상황이 발생할까요?

3번 로직이 누락이 된다면 아무나 게시물을 수정할 수 있으니

아마 악의적인 목표를 가진 공격자에게는 맛있는 먹이감이라고 칭해도

틀린 말이 아니라고 생각이 됩니다.

 

1. Business Logic Vulnerability

 

2. IDOR (Insecure Direct Object Reference)

 

3. Race Condition

 

- 1. Business Logic Vulnerability

 

: 정상적인 흐름에서 검증 과정의 부재 및 미흡으로 인해 정상적인 흐름이 악용되는 취약점

 

 

- 2. IDOR (Insecure Direct Object Reference)

 

: 변조된 파라미터 값이 다른 사용자의 오브젝트 값을 참조할 때 발생하는 취약점입니다.

 

- 3. Race Condition

 

: 비즈니스 로직의 순서가 잘못되거나, 한 오브젝트에 여러 요청이 동시에 처리되는 상황에서 발생하는 취약점입니다.

 

- What Is Language specific Vulnerability ?

 

: 프로그래밍 언어의 모든 함수가 안전하지 못하다는 것은 누구나 아는 사실입니다.

 

- > 함수를 잘못 사용하여 문제가 발생할 수도 있고, 심지어느 사용자의 입력 데이터가 함수의 인자로 사용되어

     취약점이 발생하기도 합니다.

 

Python의 취약한 함수

 

* os.system, popen

* subprocess.call, Popen

 

PHP의 취약한 함수

 

* system, passthru

* shell_exec, backtick operator

* popen, proc_open

* exec

 

Javascript의 취약한 함수

 

* child_process.exec, spawn 등등....

 

 

 

 

- What is Misconfiguration ?

 

-> 잘못된 설정으로 인해 공격자는 허가되지 않은 동작을 수행할 수 있게됩니다. 

     다른 취약점처럼 소스코드 상에서 존재하는 복잡한 로직에 의해 발생하는 취약점 X

 

-> 잘못된 설정이 발생하는 원인 4가지

 

* 부주의로 인해 발생하는 문제점 ( 권한 설정 문제, 기본 서비스, 임시/백업 파일, 개발 관련 파일

* 편의성을 위한 설정에 의해 발생하는 문제점 ( 0.0.0.0으로 바인딩된 네트워크 설정)

* 메뉴얼과 실제 구현체의 차이로 인해 발생하는 문제점

  ( 메뉴얼에 설명되있는대로 사용했지만 중의적 표현이 존재 혹은 잘못된 사용)

* 해당 코드나 설정에 대한 이해 없이 사용하는 경우

 

 

휴우 글이 조금 길었네요

진짜 드림핵 내용도 너무 좋고 설명도 잘 되어있어 너무 좋습니다🙇

 

하지만 제 머리가 따라가지 못하네요 😭

 

진짜 드림핵 강의 볼때마다 더 열심히 해야겠다는 생각밖에 안듭니다

 

어쨌든 여기까지입니다

 

-끄읕-

 

 

 

 

'Wargame > DreamHack' 카테고리의 다른 글

[Pwnable] basic_exploitation_001  (0) 2021.02.03
[Pwnable] basic_exploitation_000  (0) 2021.02.03