모의해킹 스터디 3주차 (XXE Injection, 권한상승 취약점 탐색 기초)

만두다섯개·2024년 1월 20일
0

모의해킹 스터디

목록 보기
3/4
post-thumbnail

3주차에서는 XXE Injection, 권한상승 취약점 공략을 진행했다.
권한상승이 목전에 있어 계속 구글링과 익스플로잇 코드를 사용했다.
포렌식 Capture this 문제랑 병행하니 주말이 사라졌다.

알게 된것

리버스 쉘 업로드 및 접속
권한 상승 취약점 탐구

LIDS 내부구조

LIDS Internals, LIDS는 무엇일까?
Linux Intrusion Detection System의 약자로, 리눅스 기반의 IDS이다.
Secure OS를 지향하고 있다.

기본 방식의 단점인
파일 시스템 보호 없음
프로세스 보호 없음
Access Control 모델 부족
root 권한 쏠림

물론 이를 해결하기 위해 모듈 방식이 있다.
모듈 방식은 유지보수가 쉽다는 장점이 있지만, 커널에서 쓰이는 모든 자료구조를 접근할 수 없다.

커널을 패치하면 패치한 파일, 추가된 파일이 존재한다.

크게 파일 시스템과 프로세스 보안으로 나눌 수 있다.

LIDS 기능

보호

  1. 중요 프로세스 kill 방지
  2. 인증되지 않은 프로그램으로부터 RAW IO operation 보호
  3. 하드디스크 및 MBR 보호 기능

탐지

  1. 불특정 대상이 호스트 스캔 시, LIDS가 탐지해 관리자에게 보고한다.
  2. 규정을 어긴 시스템상 행동을 확인 가능

응답

  1. LIDS는 탐지한 결과를 자세한 메시지로 시스템 로그 파일로 기록한다.
  2. LIDS는 메일박스로 로그 메시지를 보낼 수 있다. 유저 세션을 셧다운 가능하다.

LIDS가 프로세스 간 디버깅 및 추적과 같은 보안 관련 작업 감시 및 제어를 위해 Linux capabilities를 사용한다. 이 중, CAP_SYS_PTRACE는 프로세스 간 디버깅을 가능케 하는 권한인데, 이 권한이 보안 감시 및 침입 탐지를 수행하는 LIDS의 핵심 기능 중 하나이다.

LIDS Capability

LIDS의 설계 목표 중 하나는 리눅스 커널의 Capability 지원 강화이다. 따라서 LIDS는 Linux capabilities를 사용한다.
capability 종류는 아래와 같다.

Capabilities list

파일 및 디렉터리를 보호하는 것 외에도 LIDS는 프로세스에 일종의 ACL 기반 액세스 제어를 적용합니다. 예를 들어 일반적으로 해당 권한이 있는 경우에도 프로세스에서 파일에 대한 사용 권한을 변경하지 못하도록 할 수 있습니다.

이중, CAP_SYS_PTRACE에 대한 설명은 아래와 같다.

• ptrace(2)를 사용하여 임의 프로세스를 추적합니다.
• 임의의 프로세스에 get_robust_list(2)를 적용합니다.
• 임의의 메모리로 데이터를 전송하거나 메모리에서 데이터를 전송합니다. (process_vm_readv(2)를 사용하는 프로세스 및 process_vm_writev(2) )
• kcmp(2)를 사용하여 프로세스를 검사합니다.

어떤 곳에서는 어떤 프로세스에서나 ptrace() 를 허용한다고 설명한다.

CAP_SYS_PTRACE는 프로세스 추적권한
ep는 권한상승 권한

그럼 이 CAP_SYS_PTRACE를 어떻게 악용할 수 있을까?
해킹트릭사이트 에서는 아래와 같이 설명하고 있다.

호스트 내부에서 실행되는 기존 프로세스 내 셸 코드를 삽입해 원하는 특정 용도의 코드를 실행시킬 수 있다.
setuid, setgid, /bin/bash 포함한 쉘 코드로 권한탈취가 되지 않아서 계속 알아보고 있다.

LinEnum.sh 결과 해석

POSIX capabilities 목록 중 아래와 같은 권한 설정을 확인 가능하다.
/usr/bin/pytrhon2.7 = cap_sys_ptrace+ep
실행 조건과 해당 조건에서 설정된 권한의 종류와 옵션을 알 수 있다.

  1. 실행 조건
    /usr/bin/pytrhon2.7 : pytrhon2.7 프로그램 실행

  2. 설정된 권한 종류와 옵션

  • cap_sys_ptrace 권한
    다른 프로세스 추적 및 제한 권한.

  • -e: "effective" 옵션
    프로세스가 실행되는 동안에만 특정 권한이 활성화되고 작동.
    -p: "permitted" 옵션
    프로세스가 어떤 권한을 가질 수 있는지에 대한 제한을 설정.
    +ep => 프로세스가 실행 중에만 해당 권한을 설정한다.

따라서 python2.7을 사용해 프로그램을 실행 중에는 (python 언어로 작성된 프로그램) 다른 프로세스를 추적하고 제한하는 권한을 부여된다.

profile
磨斧爲針

0개의 댓글

관련 채용 정보