[150403] 파일 업로드 취약점 / 파일 다운로드 취약점
오늘 다룰 내용은 웹 취약점에 관한 것이다. 파일 업로드 취약점과 파일 다운로드 취약점은 이름에서 알 수 있듯이, 각 각 파일의 업로드 혹은 다운로드 시에 발생할 수 있는 취약점을 말한다. 파일 다운로드 취약점 먼저 살펴보자.
1.파일 다운로드 취약점
일반적으로 로컬PC에서 파일을 찾을 때 경로를 이용한다. 요즘엔 모두 그래픽을 지원하지만 이 또한 근본적으로는 특정한 경로를 이용하는 것과 같다. 로컬 환경에서야 당연히 손쉽게 찾지만, 서버의 경우 필요한 파일이나 정보를 제공해줄 뿐 이에 대한 경로를 제공할 필요는 없기 때문에 원래 의도대로라면 서버 안에 담긴 다른 파일들에 접근할 수 없다. 하지만 이는 천사같이 착한 유저들에게나 해당하는 말이며 보안 정책이 취약한 서버는 경로를 모두 제공하고 있다고 할 수 있다. 서론이 길었다. 이해하기 쉽게 그림으로 알아보자.
일반 유저가 File1을 받으려고 시도한다.
File1 다운로드에 성공했다.
해커가 File1을 받으려고 시도한다.
File1을 받았는데, 경로가 드러나있음을 확인한다. (꼭 드러나야만 하는 것은 아님)
해커는 다른 유저의 패스워드를 찾고 싶다.
서버 또한 디렉토리를 사용하므로, ".."라는 명령어를 통해 상위 디렉토리로 이동할 수 있다.
이 다른 디렉토리에 타 유저 패스워드 파일이 있을 것 같다. 파일명을 넣고 다운로드에 시도해본다.
다운로드에 성공했다!
물론, 그림은 극단적인 예시다. 하지만, 보안정책이 허술한 사이트 서버의 경우 사전 공격 등을 병행하며 다른 정보를 탈취하는 것이 가능하다. 방어책으로는 해당 명령어를 필터링시키거나, 특정 확장자를 찾을 수 없도록 서버만의 확장자를 만드는 등 다양한 대책이 존재한다. 이에 대한 자세한 사항은 이 포스팅에서는 기재하지 않았다.
2.파일 업로드 취약점
파일 업로드 취약점은 악성 스크립트를 서버에 심는 것으로 특정 코드를 실행시켜 유저의 정보를 수집하거나 서버를 전체 탐색할 수 있다. 여기서 코드가 입력된 파일을 웹쉘이라고 하는데 주로 .asp의 확장자를 쓰지만, asp의 특징을 갖고 다른 확장자의 이름을 가진 웹쉘들이 많기 때문에 특정하기 힘들다.
일반적인 유저가 파일을 업로드 한다.
성공적으로 업로드했다.
해커가 서버에 웹쉘을 업로드한다.
웹쉘 내부의 코드가 해커에 의해 실행되고 서버가 감염된다.
해커는 쉘의 권한을 얻고 사실상 서버를 탈취하는 효과와 같다.
파일 업로드 취약점의 경우 위 그림의 사실 보다는 업로드 과정이 중요하다. 웹쉘을 방지하기 위한 대책으로, 업로드 가능한 확장자 리스트 (화이트 리스트)를 만들어 필터링하거나, 업로드된 파일을 서버에 저장시킬 때 유저가 임의로 실행시킬 수 없도록 암호화시킨다.
파일 업로드 / 다운로드 취약점의 공통적인 대책으로는 데이터베이스 서버를 서비스 서버에서 물리적으로 분리시켜 애초에 접근할 수 없게 막는 방법도 있다.
'네트워크 > 네트워크 보안 (SEQ)' 카테고리의 다른 글
RF Receiver & Transceiver / 스마트키 해킹 (0) | 2019.02.14 |
---|---|
[150811] 와이어샤크 패킷 분석 -telnet 서버 (0) | 2015.08.11 |
[150810] 와이어샤크를 통한 패킷 분석 (2) | 2015.08.10 |