1. 웹쉘이란?
웹쉘은 말 그대로 웹사이트를 통해 쉘(shell)을 여는 공격이다. 웹쉘 공격을 받은 서버는 악성코드의 배포지가 되거나 개인정보를 유출할 수 있다.
웹쉘은 해커가 악성 프로그램을 웹 사이트에 업로드하는 것부터 시작된다. 악성 프로그램은 주로 서버 사이트 스크립트(ASP,PHP,JSP 등)로 만들어진다. 즉 웹사이트에 아무도 모르게 쉘 명령어를 날릴 수 있는 페이지를 하나 더 만든다는 이야기이다.
웹쉘 공격은 일반적인 사이트 사용자들과 동일한 웹 서비스 포트(80,8080,443)를 통해 이루어지기 때문에 탐지가 어렵기에 해킹 사고가 터지지 않는 이상 인지하기 어렵다.
▶ 쉘(shell)
사용자에게 받은 지시를 해석하여 하드웨어 지시어로 바꿈으로써 운영체제의 커널과 사용자 사이를 이어주는 것
2. 웹 서비스 구조
1) URL 구조

- 통신 프로토콜 (Communication protocol)
네트워크 상의 서버로부터 웹 문서 정보(html)와 이미지 등의 리소스를 받아올 통신 방식을미리 정해놓은 것으로 HTTP, HTTPS, FILE 등이 가장 잘 알려져있다.
- 호스트 (Host Name)
호스트명은 네트워크에 연결된 장치 또는 서버들에 부여되는 고유한 이름으로 호스트 명은 IP 주소나 MAC 주소와 같은 기계적인 이름을 대신하여 일반인이 쉽게 읽고 이해할 수 있는 이름으로 만들어진다.
- 3차 도메인 (third-level-domain)
리소스가 네트워크(인터넷)상에 위치하는 물리적 위치로 Namespace 계층 상에서 최종 호스트 명을 포함하는 도메인 명을 뜻하는 FQDN(Fully Qualified Domain Name)이라고도 하며, 2차 도메인에 WWW와 같이 호스트명을 부가한 3차 도메인 또는 서브 도메인이라고 한다.
- 2차 도메인 (second-level-domain)
일반적으로 도메인 등록/구매처에서 등록하여 사용하는 도메인을 가리키며 서브 도메인에 대응하여 메인 도메인(또는 zone apex/root domain/naked domain/bare domain)으로 불리기도 하며, 3차 도메인과 혼용하여 부르기도 한다.
- 최상위 도메인 (top-level-domain)
인터넷에서 도메인 네임의 가장 마지막 부분으로 특정한 조직 계열에 따라 사용되는 도메인이다. com, net, edu, gov, mil 등의 일반 최상위 도메인(gTLD)와 co.kr, kr과 같은 국가 코드 최상위 도메인(ccTLD)가 있다.
- 포트 번호 (port number)
포트번호는 네트워크 또는 인터넷을 사용하여 각 응용 프로그램 또는 프로세스의 논리 주소로 0에서 536번 까지 포트 번호를 사용하며 HTTP 80, HTTPS 443, FTP 21등이 있다. 위의 URL 예제와 같이 HTTP가 기본 포트인 80번으로 설정된 경우, 80번은 생략될 수 있다.
- 디렉터리 (directory)
해당 파일(또는 자원)이 서버의 어디에 있는지를 나타내는 경로로서 초기의 웹에서는 웹 서버상에서 물리적 파일 위치를 의미하였으나, 최근에는 실제 물리적 경로를 나타내지 않고 웹 서버에서 추상화하여 보여준다.
- 파일 (file)
월드 와이드 웹 상에서 연결할 실제 파일의 이름으로 HTML(또는 XHTML), CSS 문서, 자바스크립트, 이미지, 문서, 동영상 등의 파일을 가리킨다.