본문 바로가기
웹 취약점 분석

파일 업로드 취약점(ASP기반)

by 웹하는빡통 2019. 7. 3.

파일업로드 취약점이란 파일 첨부를 할 수 있는 게시판에 일반적으로 허용된 파일(이미지 파일, 워드 파일 등)이외의 개발자가 실수로 서버측에서 악의적인 스크립트가 포함된 소스파일(.JSP, .PHP, ASP등..)을 제대로 된 필터링(확장자)을 하지않아 공격자가 이런 취약점을 이용하여 악성 쉘코드를 등재 후 서버 상에서 쉘코드를 실행시켜 DB 소스코드, 각종 디렉토리 파일들을 획득 및 서버를 장악할 수 있는 매우 위험한 취약점임.

 

1. 파일 업로드 취약점을 이용하여 서버에 존재하는 모든 디렉토리 파일에 접근하기.

게시판에 글쓰기에 들어가서 파일을 올리수있는 부분이 있는지 확인하고 첨부파일 부분이 있으면 파일업로드 취약점이 있는지 확장자.asp파일(악성 웹쉘 코드)을 등록해봄.

 

프록시 툴(Burp suite, Fiddler)로 요청값으로 파일업로드 패킷을 잡아 해당 업로드 경로가 있는지 찾아본 결과 /security/4/upload/라는 파일경로가 잡힌것을 알 수 있음.

확장자 .asp파일이 업로드가 된 것을 알 수 있음.

URL주소에 해당 노출된 파일업로드 경로와 .ASP파일(악성 쉘 코드) 이름을 넣어서 접속한 결과 해당 서버의 모든 디렉토리 파일을 볼 수 있음을 알 수 있음

/security/4/index.asp파일에 있는 소스코드 분석 결과 파일업로드를하였을 경우 확장자 필터링 부재로 인하여 필터링이 전혀 이루어지지 않은 상태이며 이로 인하여 그대로 DB에저장이 되는 것을 볼 수 있음.

 

확장자 별 쉘코드는 https://github.com/에서 다운받으면 된다.

 

 

※ 꿀TIP!!:파일업로드 취약점은 개발자 사이에서도 매우 유명하고 잘 알려진 취약점이라 요즘 사이트에선 발생하지 않는다. 또한 파일업로드 취약점이 발생하려면 다음 몇가지 조건이 모두 적용해야한다. 

 

1. 서버 측에 백신프로그램이 깔려져있으면 안됨.(why? 요즘 백신 프로그램에선 랜섬웨어등 각종 악성 프로그램을 모두 차단한다. 악성 쉘코드가 포함된 파일도 마찬가지로 백신에서 차단한다)

 

2. 파일경로를 알아야 한다.(why? 위 사진과 같이 쉘코드를 실행 시킬려면 해당 업로드를 경로를 알아야만 한다 만약 경로를 알지 못한다면 쉘코드를 실행하기가 어렵다) 

 

3.업로드가 된다하더라도 접근 실행권한을 가지고 있어야함.(why? 당연히 실행권한을 가지고 있지 않는다면 실행이 되지 않음)

 

4.물리적으로 업로드 서버와 내부망이  분리가 되어있음 안됨.

 

위와 같이 해당 조건에 하나라도 만족을 하지못한다면 파일업로드 취약점을 발생 시킬 수 없다.

 

댓글