본문 바로가기
🚩CTF Write up

Web Shell 1 - SegFault Web Hacking CTF Write up

by Prof. Panda 2024. 2. 9.

CTF 문제의 목표

본 CTF 문제는 매우 기본적인 웹셸 업로드 공격을 실습해보기 위한 문제입니다. 업로드 공격을 통해서 flag.txt 파일의 값을 찾아 읽음으로 플래그를 획득하면 성공입니다.

실습 환경

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

  • Mac OS
  • Burp Suite
  • Simple WebShell

풀이 단계

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

상세한 문제풀이

1) 회원가입/로그인을 통해 사이트에 접근합니다. 본 실습에서는 (id : ctfkill / pw : 3333)을 사용하였습니다.

2) 사이트를 분석하고, 게시판의 글을 쓰는 공간에서 업로드 공격이 가능할 것으로 추측할 수 있습니다.

게시판과 게시판 글 입력 페이지

3) 업로드를 시도할 시에 이미지 파일만 업로드하도록 되어있어 웹셸의 확장자를 이미지 확장자인 png로 바꾸어 업로드 공격을 시도합니다. png로 업로드가 될 시에 웹에서 실행이 되지 않으므로, 프록시툴을 이용해서 php로 확장자와 content-type을 인터셉트하여 변경하여 업로드합니다. 변경내용은 확장자, content-type 그리고 업로드 되는 파일 내용입니다.

인터셉트를 통해 받은 화면과 변경된 페이로드

4) 업로드가 성공하였고 업로드된 위치를 파악합니다. "/webshell_1/files/ctfkill/ws.php"에 웹셸이 업로드 된것을 확인했습니다. 

링크 주소를 복사하여 저장 위치를 확인할 수 있습니다. 링크를 열면 다운로드가 되어 원하는 작동이 되지 않습니다.

링크 주소를 복사하여 업로드된 위치 파악
디렉토리 인덱싱이 허용된 서버로 업로드 공격에 편리/취약

4-1) cmd에 ls를 입력하여 잘 작동하는지 확인합니다. 인덱싱된 내용이 나오는 것으로 보아 잘 작동하는 것을 알 수 있습니다.

4-2) find 명령어를 사용하여 flag.txt 파일의 위치를 알아냅니다. /app/webshell_1/important_data/flag.txt에 위치한 것을 알 수 있습니다.

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