WebShell 이란?
Web Shell은 웹 서버에 설치된 스크립트 또는 프로그램으로써 일반적으로 원격에서 웹 서버 제어, 파일 접근, 서버에 명령어 실행 할 수 있도록 도와주는 역할을 한다. 또한 Web shell을 악용하는 경우로는 웹 서버의 보안 취약점을 이용하여 공격자가 원격에서 서버를 제어하기 위해 사용하는 도구로 많이 활용되고 있다.
공격자는 웹 셸을 사용하여 서버에 악성 코드나 스크립트를 업로드하여, 데이터베이스에 접근하거나 서버에 어떤 파일들이 존재하는지 탐색하는 과정, 서버에 기밀정보들을 유출시키는 공격들을 한다.
WebShell의 종류
Web Shell은 다양한 형태와 기능을 가지고 있는데 대표적인 Web Shell의 형태의 종류와 그 특징에 대한 설명이다.
- Simple Web Shell - 가장 기본적인 Web Shell의 형태 (PHP, ASP, JSP, ASPX)등 존재한다.
URL 파라미터를 통해 서버 명령어를 실행시키는 방식으로 동작된다. - Extended Functionality Web Shell - 기본 Web Shell에서 확장버전이다.
파일 업로드/ 다운로드, 데이터베이스 접근 등의 기능을 추가된 방법으로 동작한다. - Backdoor WebShell - 공격자가 지속적인 접근 권한을 유지하기 위해서 보안 시스템에 탐지되지 않도록 설계를 초점을 둔 Web Shell이다.
언어별 시스템 함수
Web Shell은 다양한 웹 프로그래밍 언어로 작성되며 각 언어에 따른 시스템 함수가 다르다. 간단하게 언어에 따른 시스템 함수를 알아보고 그 간단한 특징에 대해 설명한다.
언어 | 시스템 함수 |
PHP | system, passthru, exec, shell_exec, backticks, '(백 쿼터), popen, eval assert 등.. |
JSP | Runtime.getRuntime().exec(''''), processBuilder('''''), p.getInputStream(), p.getErrorStream() |
ASP | CreateObject("wscript.shell").exec("cmd/c" & cmd), eval, Execute 등.. |
ASPX | WinExce(), ShellExecute() 등... |
PHP Web Shell 시스템 함수
- system ($command) : 서버의 운영 체제 명령어를 실행하여 그 결과를 출력한다.
ex) system ('ls -la'); 를 실행하게 된다면 서버에서 현재 디렉토리의 파일 목록을 출력하게 된다. - exec($command) : 서버의 운영 체제 명령어를 실행하고 그 결과를 배열형태로 출력
- shell_exec($command) : 서버의 운영체제 명령어를 실행하고 그 결과를 문자열로 출력
- passthru($command) : 서버의 운영체제 명령어를 실행하고 출력 그대로 브라우저로 전송하게 된다.
JSP Web Shell 시스템 함수
- Runtime.getRuntime().exec(command) : Java의 Runtime 객체를 활용하여 시스템 명령어를 실행함.
- ProcessBuilder : Java에서 프로세스를 생성하고 제어할수 있는 기능을 제공함.
- p.getInputStream() , p.getErrorStream() : 표준 출력 및 오류 출력을 얻기 위해 사용된다.
ASP Web Shell 시스템 함수
- Server.CreateObject("wscript.shell") : Windows Scripting Host (WSH) 객체를 생성하여 서버에 명령어를 실행함.
- process.start(command) : system.Diagnostics 네임스페이스 에서 process 클래스를 사용하여 명령어를 실행함.
'CERT > Web' 카테고리의 다른 글
[Web] PHP기반 WebShell 인증기능 추가 (part2) (0) | 2024.09.23 |
---|---|
[Web] PHP기반 간단한 명령어 실행 WebShell 제작 (part1) (0) | 2024.09.23 |
[Web] PHP기반으로 Web에서 파일 업로드 제작 (0) | 2024.09.17 |
[Web] GET&POST 방식 정의 및 차이점 (0) | 2024.09.17 |
[웹 취약점] 파일 업로드 및 다운로드 취약점 개념 (1) | 2024.09.16 |