웹 페이지에서 서버 명령어를 실행할 수 있는 원격 어플리케이션
직접 서버에 접속하지 않아도 웹 사이트의 취약점을 이용하여 웹 서버를 조작할 수 있다. 웹쉘을 이용하면 단순 정보 수집부터 서버 파일 조작, 악성코드 배포 등 다양한 악위적인 행위가 가능하다. 뿐만 아니라 서버가 연결된 내부망에 침투하여 더 큰 악성 행위를 할 수도 있다.
웹 서버의 환경에 따라 웹쉘이 동작할 수 있는 전제 조건이 필요하다.
웹 쉘 스크립트가 웹 서버 내에서 동작하므로 서버에서 사용될 수 있는 언어로 작성되는 것은 물론, 서버에서 실행될 수 있는 확장자를 가지고 있어야한다. 웹쉘은 주로 파일 업로드 취약점을 이용하여 서버에 업로드한다. 이때 보안 솔루션이 파일 업로드를 불허하거나 업로드를 누락시키는 등의 행위를 할 수 있다. 업로드에 성공하더라도 웹 서버의 보안 정책에 따라 실행시키지 못하고 삭제될 수 있다.
웹쉘은 시스템 명령어 함수를 기반으로 작동한다. 공격자는 웹 사이트의 취약점을 통하여 웹쉘을 실행시키고 명령을 전달한다. 웹쉘은 이 명령을 받아 시스템 명령어 함수를 통하여 실행한다.
웹쉘이 성공적으로 동작하면 공격자에게 웹 서버에 대한 지속적인 접속을 제공한다. 서버에 일명 '백도어'가 생기는 것인데, 공격자는 지속적인 접속을 유지하기 위하여 서버의 보안 솔루션이 알아채지 못하도록 난독화하거나 인증을 사용하기도 한다.
쉘은 사용자의 권한에 따라 할 수 있는 행위가 정해져있다. 공격자가 얻을 수 있는 사용자 권한은 대부분 제한적이기 때문에 서버의 취약점을 활용하여 권한 상승을 노린다. 관리자 권한을 얻으면 공격자는 서버에서 거의 모든 행위를 할 수 있다.
관리자 권한을 얻은 공격자는 목표한 공격을 실행하거나 서버에 연결된 네트워크를 탐색하여 새로운 목표를 찾을 수 있다. 서버의 파일 시스템에서 정보를 탈취, 조작하거나 시스템을 파괴하는 등의 행위를 할 수 있다. 서버를 장악하면 이 서버를 중심으로 다른 희생양을 찾아 공격하는 것이 가능하다. 서버가 연결된 내부 네트워크에 접근하여 다른 시스템을 공격하거나 서버를 봇으로 만들어 DDOS 공격 등 우회 공격에 이용할 수도 있다.
File Integrity Monitoring은 웹에서 접근할 수 있는 파일의 변화를 탐지하고 막는 시스템이다. 웹 서버 파일 시스템의 예상치 못한 변화가 감지되면 이를 관리자에게 알려 웹쉘 동작을 막는다.
웹 어플리케이션의 권한을 최소한으로 승인한다. 특히 웹 사이트를 이용하는 사용자들의 권한을 최소화하여 지정된 행위 외에는 할 수 없게 만든다. 이를 통하여 공격자가 웹쉘을 쉽게 업로드할 수 없도록 막는다.
IPS, 방화벽 등 네트워크 보안 솔루션을 사용하여 비정상적인 네트워크 접근을 방지한다. 웹 서비스의 네트워크 활동을 모니터링하면서 공격자의 침입을 막는다.
출처 : https://www.imperva.com/learn/application-security/web-shell/