본문 바로가기
🚩CTF Write up

Web Shell 3 - SegFault Web Hacking CTF Write up

by Prof. Panda 2024. 2. 18.

CTF 문제의 목표

본 CTF 문제는 기본 업로드 공격에서 조금 더 다양한 우회 기술을 실습해 보기 위한 문제입니다. 업로드 공격을 통해서 flag.txt 파일의 값을 찾아 읽음으로 플래그를 획득하면 성공입니다.

실습 환경

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

  • Windows 10
  • Burp Suite
  • Simple WebShell

풀이 단계

  1. 회원가입 및 로그인 + 사이트 분석 및 업로드 공격 포인트 확인
  2. 웹셸 업로드 시도
  3. 실패 시 필터링 기능을 분석 및 우회 공격 시도
  4. 공격 성공 시 페이로드 입력을 통한 플래그 획득
    1. ls
    2. find
    3. cat

상세한 문제풀이

1) 회원 가입 후 사이트를 분석합니다. 우선 게시판으로 웹셸 업로드 공격이 가능한지 확인해 보겠습니다.

2) 웹셸은 업로드하려고 하면 특정 확장자 파일을 식별하여 업로드가 제한되는 것을 확인할 수 있습니다. 몇 번의 테스트를 통해서 요청을 변조할 시에 content-type이 아닌 파일이름을 기준으로 필터링하는 것을 확인했습니다. php와 phtml이 블랙리스트 방식으로 필터링되었습니다.

3) 파일 업로드와 링크를 확인하여 디렉터리 인덱싱 취약점이 있는 것을 발견하였고 다양한 이름으로 웹셸은 업로드하는 것에 성공했습니다. 우회 공격 중 .htaccess 파일을 업로드 하는 것으로 해당 확장자의 파일을 실행할 수 있도록 파일을 업로드해보았고 성공했습니다. 해당 파일에서는 panda 확장자가 실행되도록 하였습니다.

디렉토리 인덱싱
파일 업로드 과정에서 인터셉트를 통한 변조(전/후)

4-1) ws.panda로 접근하여 ls 명령어를 입력하고 웹셸이 작동하는지 확인합니다. 아래 화면과 같이 잘 작동하는 것을 확인할 수 있습니다. 이제 플래그를 획득하면 됩니다.

4-2) find 명령어로 flag.txt파일을 찾습니다.

4-3) cat 명령어로 플래그를 획득하였습니다.