이번 글에서는 React와 PHP의 취약점을 이용한 문제 풀이 과정을 공유하겠습니다. 문제는 두 가지로 나뉘어 있으며, 각각의 접근 방식과 해결 방법을 설명하겠습니다.
H2 React 문제 접근하기
H3 문제 개요
rls1004님이 만든 “Hello, React World!” 문제는 React.js의 기본 화면을 보여줍니다. 처음에는 문제의 힌트를 이해하기 어려웠지만, 이를 해결하기 위해 필요한 도구를 발견했습니다.
H3 React Developer Tools 활용
크롬 확장 프로그램인 React Developer Tools를 설치하면, React 애플리케이션의 컴포넌트 상태를 쉽게 확인할 수 있습니다. 이 도구를 이용하여 Components 탭에서 상태 정보를 확인하고 문제를 해결하는 데 필요한 단서를 찾을 수 있었습니다.
H2 PHP 취약점 문제 해결하기
H3 LFI와 RCE 취약점 이해
jhyeon님이 만든 “Execution” 문제는 LFI(Local File Inclusion)와 RCE(Remote Code Execution) 취약점을 활용해야 하는 문제입니다. URL 필터링 때문에 직접적으로 flag를 확인할 수 없었지만, 이 문제를 해결하기 위한 중요한 단서를 발견하게 되었습니다.
H3 취약점 이용한 코드 실행
PHP 세션 RCE 취약점은 특정 조건을 만족해야 발동하는데, 이를 통해 공격자는 서버에서 명령어를 실행할 수 있습니다. 다음은 이 취약점을 이용한 접근 방법입니다:
- 회원가입 페이지로 이동: 처음에는 회원가입을 통해 계정을 생성합니다.
- 특정 코드를 ID로 입력:
<?php system("ls");?>와 같은 코드를 ID로 입력하면, 해당 명령어가 실행되면서 현재 디렉토리의 파일 목록이 출력됩니다. - Flag 확인: ID를
cat flag.php로 설정한 후, 결과를 확인하려면 Ctrl + U를 눌러 페이지 소스에서 flag를 확인할 수 있습니다. PHP는 에서 주석 처리되기 때문에 직접적으로 보이지 않지만, 소스 코드에서 확인할 수 있습니다.
H4 취약점 발동 조건
PHP 세션 RCE 취약점이 발동하기 위해서는 다음과 같은 조건이 필요합니다:
– PHP로 제작된 웹 애플리케이션이어야 한다.
– LFI가 가능해야 한다. (예: /var/lib/php/sessions/sess_[내 세션] 접근 가능)
– 회원가입 시 ID에 RCE 공격이 가능하도록 PHP 코드를 작성해야 한다.
자주 묻는 질문
질문1: React Developer Tools는 어떻게 설치하나요?
React Developer Tools는 크롬 웹 스토어에서 “React Developer Tools”를 검색하여 설치할 수 있습니다.
질문2: LFI와 RCE 취약점은 어떻게 다른가요?
LFI는 서버의 파일을 포함하여 읽는 공격이며, RCE는 서버에서 원격으로 명령어를 실행하는 공격입니다.
질문3: PHP 세션 RCE 취약점을 이용한 공격은 법적으로 문제가 되나요?
네, 허가받지 않은 시스템에 대한 공격은 불법입니다. 교육 목적으로만 사용하세요.
질문4: React 문제의 힌트를 어떻게 찾았나요?
React 문제의 힌트는 개발자 도구를 통해 확인할 수 있는 컴포넌트 상태에서 얻을 수 있었습니다.
질문5: LFI 공격을 방지하는 방법은 무엇인가요?
LFI 공격을 방지하기 위해서는 입력값을 철저히 검증하고, 파일 경로에 대한 접근을 제한해야 합니다.
