보안

[웹취약점진단] 4. 웹쉘 이론편

Mara7 2021. 6. 9.
반응형
LIST

1. 웹 셀 

1. 웹쉘 정의

웹 셸(web shell)은 업로드 취약점을 통하여 시스템에 명령을 내릴 수 있는 코드를 말한다.

웹 쉘의 공격서버의 스크립트 언어로 되어 있어야 동작한다.

2. 해커의 웹쉘 접속 방법

- 해당 파일이 있는 파일 경로에 접속함.

- 경로를 아는 방법

a. 바로가기 복사, 디렉토리 트레버서 등을 이용

- 공격 성공시 해커의 행동패턴

a. 서버 내부 파일을 삭제

b. 서버 데이터베이스의 내용 수정 가능.

* 해커가 루트 권한을 얻으면 모든 것을 제어함.

3. 해커 방어 방법

a. 확장자 검사

- jpg,png,docx등만 올릴 수 있도록 하고 exe,php,jsp,asp는 금지

b. 마임타입검사

- Asp,Php값을 첨부하면 마임타입은 어플리케이션값을 갖게 된다.

- 만약에 이미지파일만 허용하고 싶다면, 마임타입 검사시에 이미지형태로 오는 요청만 허용하도록 한다.

c. 파일크기제한

- 이미지 파일보다 웹쉘의 크기가 큰 경우가 많기 때문에 파일 크기를 제한하여 웹쉘을 올리지 못하도록 한다.

d. 파일 이름 난수화

- 해커가 웹쉘에 접속하기 위해 자신이 올린 파일의 이름을 알아 경로를 파악해야 하는데 파악하기 위해 업로드 된 웹쉘의 이름을 알아야 하는데 업로드 전 후의 파일의 이름이 다르다면 해커가 해당 파일을 찾을 수 없다.

e. 업로드 폴더 권한 축소

- 폴더의 권한을 제한한다.

ex) 파일의 쓰기 권한이 없으면, 해커가 수정과 삭제를 못하기 때문이다.

4. 우회

a. 확장자 검사

- 파일 확장자를 두개(PHP.PHP) 혹은 PHP%00와 PHP;등을 넣어서 할 경우에 확장자 검사에 걸리지 않아 일반파일로 인식됨.

b. 마임타입 검사

- 프록시 툴을 사용해 우회가 가능함.

1. 클라이언트가 php를 프록시 서버로 보내고 프록시서버는 jpg로 서버에 보낸다.

2. 서버는 마임타입만을 검사하여 확장자 검사에 걸리지 않는다.

3. 그러나, 해커가 접속했을시에는 php로 인식되기 때문에 웹쉘을 실행할 수도 있다.

c. 파일 크기 제한

- 한줄 웹쉘을 설정하여 파일 크기 제한을 무시할 수 있다.

반응형
LIST

댓글