본문 바로가기
Security Project

42. 파일업로드 취약점 이해와 공격 목적

by 귀멸 2023. 1. 15.

1. 파일 업로드 취약점 공격

  • 웹 서비스 첨부 파일, 환경 설정 미흡을 이용하여 악의적인 스크립트가
    포함된 파일을 업로드한 후에 웹 서버에 침투하는 공격
  • 공격자는 서버 사이드 스크립트(PHP, JSP, .NET 등)를 이용하여 웹쉘(Webshell)을 제작
  • 웹쉘(Webshell)은 원격에서 웹 서버를 제어하기 위한 목적으로 만들어졌으나,
    지금은 웹쉘 = 악성코드라고 분류하여 안티 바이러스에서 탐지함
  • 게시판 첨부 파일, 이력서 첨부 파일, 이미지 첨부 파일, 웹 채팅방 파일 공유 기능 등에서 발생
  • 웹쉘을 직접 만들어 사용 할 수도 있으나, 깃허브에서 쉽게 구할 수 있음

2. 파일 업로드 취약점 공격 목적

  • 데이터베이스에 직접 공격을 할 수 없기 때문에,
    웹 서버를 침투한 후 소스코드 내 데이터베이스 연결 정보를 통해 개인 정보 쿼리(Query)
  • 웹 서버를 통해 데이터베이스의 2차 공격 진행도 가능함
  • 내부 포탈 서버, 로그 서버 등 내부 시스템을 대상으로 포트포워딩(Port Forwarding), 
    터널링 기법을 통해 공격자와 직접 연결함

3. 파일 업로드 취약점 실습

Beebox - Unrestricted File Upload

Kali에 기본으로 내장하고 있는 웹쉘을 사용한다.

여러 가지가 있지만 그중에 simple-backdoor.php를 업로드해본다.

 

바로 업로드되고 어디에 업로드되어 있는지 절대 경로도 노출된다.

웹쉘에 주석에 나온 설명대로 URL에 ?cmd=cat+/etc/passwd로 cmd창을 이용해 본다.

백도어가 정상적으로 작동함을 볼 수 있다.

수준을 Medium으로 올리면 아래 확장자들이 블랙리스트로 차단되는 것을 볼 수 있다.

 

파일 확장자를 php3로 바꾸고 업로드 → 성공

파일 확장자를 pHp로 바꾸고 업로드 → 실패

확장자를 수정하면서 블랙리스트 스크리닝 기법을 우회하여 업로드가 가능한 지 볼 수 있다.

 

simple-backdoor가 아닌 php-backdoor을 업로드하고 들어가 보면

 

이러한 UI로 구성된 화면을 볼 수 있다.

cmd 명령 입력도 가능하며, 도구 업로드, 그리고 데이터베이스 쿼리도 입력 가능하다.

 

기존 가지고 있던 정보로 입력하고 쿼리 질의를 하면

 

이와 같이 DB 정보들을 확인할 수 있다.

댓글