레이스 컨디션(Race Condition)
레이스 컨디션의 한글 번역은 경쟁상태라는 뜻이다. 경쟁 상태는 다수의 프로세스가 서로 동일한 자원을 할당받기 위해 경쟁하는 상태를 말한다. 우리는 경쟁 관계에서 발생하는 취약점을 파고 들어야 한다.
※ 레이스 컨디션 취약점이 존재하기 위한 최소한의 조건
1. 다른 계정의 권한에 접근해야 하므로 SUID가 걸려 있어야 한다.
2. 임시 파일을 생서해야 한다.
3. 공격자가 임시로 생성되는 파일명을 정확하게 알아야 한다.
문제분석
HINT
# /usr/bin/level5 프로그램을 실행시켜보자. /tmp 디렉토리에 가도 아무 파일이 없다.
# 이 파일의 흐름은 다음과 같다.
(1) /usr/bin/level5 프로그램 시작.
(2) /tmp/level5.tmp 임시파일 생성
(3) 임시파일에 내용쓴 후 처리/사용
(4) 파일 삭제
(5) 종료
※ 우리는 프로그램 시작할때 /tmp/level5.tmp를 만들기전에 링크파일을 먼저만들고 링크를 걸 수 있어야 한다! 하지만 /usr/bin/level5의 실행과정은 매우 짧아서 그 사이를 비집고 들어가긴 쉽지 않다 따라서 반복문을 통해 해결해 보자.
문제해결
# usr/bin/level5 파일을 백그라운드로 반복 실행시킨다.
# /tmp/lvl6pass.txt 파일을 만들고 /tmp/level5.tmp 파일을 링크한다.
※ 그럼 /usr/bin/level5 프로그램이 타이밍이 잘맞으면 /tmp/level5.tmp를 만들기전에
/tmp/lvl6pass.txt를 만들고 링크가 먼저 작성되어 /tmp/level5.tmp파일은 지워지지만 /tmp/lvl6pass.txt파일은 남아있게 된다.
결과
'FTZ. System Hacking' 카테고리의 다른 글
level7 - 2진수, 10진수, 아스키코드 (0) | 2017.12.29 |
---|---|
level6 - 시그널 (0) | 2017.12.29 |
level4 - system()함수의 위험성 (0) | 2017.11.29 |
level2 - vi에서의 명령어 기능 (0) | 2017.11.29 |
level1 - setuid (0) | 2017.11.29 |