본문 바로가기
🚩CTF Write up

Get Flag File 2 - SegFault Web Hacking CTF Write up

by Prof. Panda 2024. 2. 24.

CTF 문제의 목표

본 CTF 문제는 파일 업로드뿐 아니라 파일 인클루드나 파일 다운로드 같은 파일 연관 취약점을 활용하여 flag를 획득하도록 하는 복합 실습 문제입니다. 보안기법에 대한 우회 기법을 추가적으로 테스트합니다.

실습 환경

본 문제는 아래와 같은 환경과 도구를 통해 테스트하였습니다.

  • Windows 10
  • Burp Suite
  • Simple WebShell

풀이 단계

  1. 회원가입 및 로그인
  2. 사이트 분석 및 업로드 공격 포인트 확인
  3. 우회 공격을 통한 웹셸 업로드
  4. 파일 다운로드 취약점 식별
  5. 파일 다운로드 보안 기법 분석 및 우회법 추측
  6. 우회법을 활용하여 웹셸 위치 식별
  7. ls 명령어로 웹루트 접근

상세한 문제풀이

1) 회원가입과 로그인을 진행하여 웹 사이트에 접근합니다. (ctfkill / 3333)

2) 게시판에서 파일 업로드 공격 가능성이 있는 것으로 판단됩니다.

3) .htaccess.png 파일을 업로드하고 burp suite의 intercept 기능을 통해서 업로드시에 .png 부분을 빼서 업로드합니다. 별도의 필터링은 작동하지 않았습니다. 또한 웹셸을 업로드 합니다. 방식은 확장자를 .panda로 하고 content-type을 text/php로 하는 것입니다. 

 

4) 파일 다운로드를 filePath를 통해 구현하였으므로 파일의 저장 위치를 찾는 시도를 진행합니다.

5) 이전 directory를 가는 것을 테스트 하는 중 '../'를 쳤음에도 정상적인 결과가 나오는 것을 볼 수 있습니다. 높은 확률로 블랙 리스트 필터링을 통해 '../'를 필터링하여 path traversal으로 부터 보호하려는 것을 생각해볼 수 있습니다. 우회법을 추측하여 download.php 소스코드를 확보하였습니다. 이를통해 웹셸의 위치를 추측할 수 있습니다.

filePath에 str_replace 함수를 통해서 '../'를 필터링 하는 기능을 소스코드를 통해 확인

6) 필터링의 기능을 알아냈으니 필터링을 우회하여 웹셸의 위치를 파악합니다. files/ctfkill/ws.panda로 추측하였고, 디렉토리 인덱싱 취약점을 통해 해당 웹셸에 접근하였습니다.

7) ls ../../를 통해서 웹 루트에 접근하였습니다. 이전 ctf 문제와 같이 index.php를 먼저 읽어보겠습니다.

8) 친절하게도 같은 위치에 플래그를 두었습니다. 이렇게 플래그를 획득하였습니다.