본문 바로가기

공부/보안

[dreamhack] System Exploitation 5강

반응형

5강 Logical Bugs

5.1 Logical Bugs

Logical Bugs (논리적 오류) : 프로그램이 부정확하게 동작하지만 크래시가 발생하지 않는 경우

<-> 프로그램의 메모리 관리 실수로 인해 발생하는 메모리 커럽션 취약점

 

버퍼오버플로우 :버퍼가 허용할 수 있는 양의 데이터보다 더 많은 값이 저장버퍼가 넘치는 취약점

 

5.2 Command Injection

Injection : 검증되지 않은 공격자의 입력을 셸 커맨드 또는 쿼리 일부로 처리해 정상적인 실행 흐름을 변경할 수 있는 취약점

 

분류

- SQL 인젝션 : 문자열을 Structured Query Language(SQL)의 일부로 처리해 발생하는 취약점

- 커맨드 인젝션 : 문자열 일부를 셸 커맨드에서 처리하면서 발생하는 취약점 (검증 없이 사용자 입력을 셸 명령어로 실행할 때)

 

공격자는 메타문자*와 같은 특수한 문자를 활용해 임의의 코드 실행까지 이어지게 한다.

 


 

- $ (셸 환경변수)

- && (이전 명령어 실행 후 다음 명령어 실행)

- ; (명령어 구분자)

- | (명령어 파이핑 - 왼쪽 명령의 실행 결과를 오른쪽 명령의 입력으로 전달)

- * (와일드 카드)

 


 

 

5.3 Race Condition

프로세스 혹은 스레드 간 자원 관리 실수로 발생하는 상태로 단일 스레드에서는 취약점이 발생하지 않는 코드라도 두 개 이상의 스레드가 자원을 동시에 참조할 수 있다면 발생할 수 있다.

5.4 Path Traversal

프로그래머가 가정한 디렉토리를 벗어나 외부에 존재하는 파일에 접근할 수 있는 취약점이다.

- /와 . 을 검증해주지 않을 경우

5.5 Environment attack

환경 변수는 프로세스가 동작하는 방식에 영향을 미칠 수 있는 동적인 값들의 모임이다.

 

 


Review(5강 Logical Bugs)

커맨드 인젝션

  • 프로그램이 적절한 검증 없이 사용자의 입력을 셸 명령어로 실행할 때 발생하는 취약점으로, 메타 문자* 사용으로 임의의 명령어를 추가로 삽입해 임의 코드 실행

 

레이스 컨디션

  • 프로세스 혹은 스레드 간 자원 관리 실수로 발생하는 상태로 뮤텍스*가 걸려있지 않은 하나의 자원에 대해 두 개 이상의 프로세스 및 스레드가 접근할 수 있을때 가능

 

Path Traversal

  • 프로그래머가 의도하지 않은 외부의 파일에 접근할 수 있는 취약점으로 . / 와 같이 특정 디렉토리를 벗어날 수 있는 문자에 대해 검증이 존재하지 않을 경우 발생

 

환경 변수 공격

  • PATH 환경 변수*에 경로를 넣어두면 해당 경로에 있는 파일은 현재 디렉토리에 있는 파일과 같이 실행할 수 있어 프로그램 내 상대 경로를 사용해 명령어를 실행하고 PATH 환경 변수를 조작해 공격자가 원하는 명령어 실행

메타 문자 : 리눅스 셸에서 여러 명령어를 한 줄로 실행할 수 있게 하는 특수문자

뮤텍스(Mutex) : 중복 실행을 방지하기 위한 목적으로 사용

환경 변수 : 프로세스가 동작하는 방식에 영향을 미칠 수 있는 동적인 값들의 모임

 

반응형