0 views
1. 개요 및 정의
1.1 한 줄 요약
- "스마트폰의 '긴급 전화' 기능을 이용해 잠금 화면을 뚫고 사진첩에 들어가는 것"과 같다.
- 정상적인 도구를 비정상적인 경로로 사용하여 보안 벽을 넘는 행위다.
1.2 정의
- GTFOBins
- 시스템에 설치된 표준 바이너리(more, vi, tar 등)를 사용하여 제한된 쉘을 우회하거나 권한 상승시키는 기법 및 해당 바이너리 목록을 칭한다.
- Restricted Shell Breakout
- 사용자의 행동을 제한하는 쉘이나 스크립트 환경에서, 허용된 명령어의 부가 기능을 이용해 자유로운 쉘을 획득하는 공격이다.
2. more 예시
2.1 more의 동작 메커니즘
- 페이지 단위 출력
more는 텍스트가 터미널 화면보다 길 경우 출력을 멈추고 사용자의 입력을 대기한다.
- 명령어 대기
- 이때 사용자는 스페이스바(다음 페이지), 엔터(한 줄),
q(종료) 등의 키를 입력할 수 있다.
- 이때 사용자는 스페이스바(다음 페이지), 엔터(한 줄),
- 외부 에디터 호출 (
v)more는 편의를 위해 현재 보고 있는 내용을 편집기에서 열 수 있는 기능을 제공한다.- 이때
v키를 누르면 환경 변수$EDITOR또는 기본값인/usr/bin/vi를 실행한다.
2.2. vi의 보안 구멍
vi가 실행되는 순간, 제어권은more에서vi로 넘어간다.vi는 단순한 편집기가 아니다.
- 파일 탐색 (
:e):e /경로/파일을 입력하면 권한이 허용하는 한 시스템 내 어떤 파일이든 열어서 읽을 수 있다.
- 쉘 실행 (
:!):!/bin/bash또는:!/bin/sh를 입력하면vi내부에서 새로운 쉘 프로세스를 생성한다.- 이것이 바로 Shell Breakout의 핵심이다.
2.3 예시
- 기본 시나리오
- 터미널 창을 일부러 작게 줄여서(Text가 한 화면에 다 안 나오게 유도)
more가 멈추게 만든다.
- 터미널 창을 일부러 작게 줄여서(Text가 한 화면에 다 안 나오게 유도)
--More--(15%) <-- 여기서 멈췄을 때
- Vi 실행 및 파일 읽기
v키 입력 ->vi에디터 실행됨.:e /etc/passwd입력 -> 타겟 파일 열기.
- 쉘 얻기
- 파일을 읽는 것에서 멈추지 않고, 아예 쉘을 따내는 방법이다.
vi상태에서 다음을 입력한다. - 이렇게 하면
vi를 실행시킨 사용자의 권한으로 완전한 쉘이 떨어진다.
- 파일을 읽는 것에서 멈추지 않고, 아예 쉘을 따내는 방법이다.
:set shell=/bin/bash
:shell
'Linux'카테고리의 다른 글
Loading comments...